командой in я могу считать в регистр R16 с пина PB3 значение логического уровня, а как теперь с R16 передать это значение, ну например, в PB4?
как в asm занести значение регистра в один пин порта?
- Сообщения: 690
- Зарегистрирован: Вс мар 04, 2007 01:17:12
Atmega8
командой in я могу считать в регистр R16 с пина PB3 значение логического уровня, а как теперь с R16 передать это значение, ну например, в PB4?
командой in я могу считать в регистр R16 с пина PB3 значение логического уровня, а как теперь с R16 передать это значение, ну например, в PB4?
- Реклама
- Сообщения: 690
- Зарегистрирован: Вс мар 04, 2007 01:17:12
2 Alexeus
Хотелось бы поинтересоватся, а как вы хотите затолкать 8 разрадное число в 1 пин????? Либо я не понимаю чегото. Если в порт то тогда akl правильно все написал. Если же "а как теперь с R16 передать это значение, ну например, в PB4?" имеется ввиду последовательная передача то это совсем другое. Уточните пожалуста.
Хотелось бы поинтересоватся, а как вы хотите затолкать 8 разрадное число в 1 пин????? Либо я не понимаю чегото. Если в порт то тогда akl правильно все написал. Если же "а как теперь с R16 передать это значение, ну например, в PB4?" имеется ввиду последовательная передача то это совсем другое. Уточните пожалуста.
- Сообщения: 690
- Зарегистрирован: Вс мар 04, 2007 01:17:12
да вот не 8 разрядное я хочу затолкать... а лог. уровень только с одного входа/пина.
значит на PB3 (вход) есть некий лог. уровень, пусть это будет высокий лог. уровень- "1", могу я его записать в R16 типа in R16,PB3 или нет? как этот лог. уровень будет представлен в регистре R16- как "1" или как "00000001" (тогда да, получается 8разрядов...)
ну а потом я из регистра хотел вывести, например на PB4 (ну светодиод у меня там подключен. альтернативные решения не нужно предлагать
нужно вот такой пример рассмотреть)
значит на PB3 (вход) есть некий лог. уровень, пусть это будет высокий лог. уровень- "1", могу я его записать в R16 типа in R16,PB3 или нет? как этот лог. уровень будет представлен в регистре R16- как "1" или как "00000001" (тогда да, получается 8разрядов...)
ну а потом я из регистра хотел вывести, например на PB4 (ну светодиод у меня там подключен. альтернативные решения не нужно предлагать
- Реклама
- Сообщения: 459
- Зарегистрирован: Вс июн 01, 2008 12:16:38
Все просто, вы не можете прочитать состояние одного пина в регистр, вы можете прочитать только состояние всего порта, например такAlexeus писал(а):да вот не 8 разрядное я хочу затолкать... а лог. уровень только с одного входа/пина.
значит на PB3 (вход) есть некий лог. уровень, пусть это будет высокий лог. уровень- "1", могу я его записать в R16 типа in R16,PB3 или нет? как этот лог. уровень будет представлен в регистре R16- как "1" или как "00000001" (тогда да, получается 8разрядов...)
ну а потом я из регистра хотел вывести, например на PB4 (ну светодиод у меня там подключен. альтернативные решения не нужно предлагатьнужно вот такой пример рассмотреть)
Код: Выделить всё
in R16,PINBВы наверное спросите, а почему у меня компилируется с такой командой in R16,PB3? Отвечу. Компилятор не знает что такое PB3, вместо этого символьного значения подставляется число, определенное в файле m8def.inc, уверен на 90% что это число 3, т. е. командой выполняется команда in R16,PB3 то вы читаете в R16 регистр ввода - вывода с номером 3, т. е. TWDR
- Сообщения: 690
- Зарегистрирован: Вс мар 04, 2007 01:17:12
- Сообщения: 459
- Зарегистрирован: Вс июн 01, 2008 12:16:38
- Сообщения: 690
- Зарегистрирован: Вс мар 04, 2007 01:17:12
- Сообщения: 459
- Зарегистрирован: Вс июн 01, 2008 12:16:38
А зачем вычислять то? Можно так, как вам уже предложили, а можно так:Alexeus писал(а):Например у меня 7пинов порта"Б" сконфигурирован на выход и только пин порта "Б", допустим PB4, на вход... как мне в асме (пример кода) считать значение именно PB4? или считать весь порт со всей мишурой, а потом как то вычислить PB4...
Код: Выделить всё
in r16, PINBили
Код: Выделить всё
in r16, PINB ; читаем
bst r16, PB4; копируем интересующий нас бит в бит T регистра SREG
; далее можно принять решение по T или
bld anyreg, anybit ; (0<anybit<7) - копируем из бита T в любой бит любого РОН (r0-r31)- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
ДействительноPooher писал(а):Чот народ под новый год мудрить начал...
Можно вообще не читать PinB, а сразу проверять нужный пин:
Код: Выделить всё
sbic PINB,4 ; если В4=0, то следующую команду пропускаем
rjmp _B4set ; переход если B4=1
...........; здесь работаем если B4=0


