ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
162647 Топик полностью
MBedder, терминатор (01.08.2009 11:04, просмотров: 256) ответил SVladimirU на Кстати, та же самая проблема при работе с RAM: когда считываю даже пустой байт, все равно выдает 0хff... Задаю данные так:
"Пустых" байтов не бывает - что запишешь, то и прочитаешь. А если не запишешь - то прочитаешь любую пургу, т.к. МК сам свое ОЗУ при подаче питания никак не инициализирует У тебя какая-то дурная кодировка - насилу перевел. Кстати, в будущем пользуйся кнопкой <аsm>: ; Подпрограмма передачи команды по UART'у transmit: sbi UCSRB, TXEN ; включить передатчик sbi UCSRA, UDRE ; поднять флаг USART Data Register Empty wait_for_tr: sbis UCSRA, UDRE rjmp wait_for_tr nop ld temp, X+ ; прочитать данные из RAM в переменную temp tst temp ; если команда закончилась, то на выход ; cpi temp, 0xff breq transm_out ; cpi temp, 65 ; breq fl fl_out: out UDR, temp ; отправить данные в UART rjmp wait_for_tr ; вернуться в начало для передачи следующего символа transm_out: ; sbi PORTC, led cbi UCSRB, TXEN ; выключить передатчик ret ;fl: ; sbi PORTC, led ; ldi r18, 0xff ;on: ; tst r18 ; breq off ; nop ; nop ; nop ; dec r18 ; rjmp on ;off: ; cbi PORTC, led ; rjmp fl_out Дальше. Передатчик (как и приемник) UART включать следует только один раз при инициализации, а не в каждой подпрограмме, а уж выключать вообще не нужно. И главное - из твоего куска невозможно узнать, правильно ли инициализирован UART, порты, да и сам МК - поэтому приведи весь код. Не забудь про кнопку <аsm>, а код сначала скопируй в Notepad, и вали его сюда только после того, как убедишься, что он в Notepad'е читабельный.