Решил виртуально (Proteus) подключить LCD LM016L к МК ATmega8. По восьмибитной шине все заработало, а когда переделал программу для подключения по 4-хбитной шине, не работает. Подскажите пожалуйста, в чем ошибка. PB7 - E, PB6 - R/S, PD4 - D4, ..., PD7 - D7.
.include "m8def.inc" .def lcd = r17
ldi r16,low(ramend) out spl,r16 ldi r16,high(ramend) out sph,r16
;Настройка портов
ldi r16, 0b11110000 out DDRD,r16 sbi PORTB,1 ldi r16,0b11000000 out ddrb,r16 ;Настройка LCD
rcall delay2ms ldi lcd,0b00100100 rcall lcdcom ldi lcd,0b00000110 rcall lcdcom ldi lcd,0b00001101 rcall lcdcom ldi lcd,0b00000011 rcall lcdcom rcall delay2ms ldi lcd,0b00000001 rcall lcdcom ldi lcd,0b10000000 rcall lcdcom rcall delay2ms
;Основной цикл ldi r25,8 subi r25,-0x30 mov lcd,r25 rcall lcddat
end:rjmp end
;Вывод на дисплей байта команды
lcdcom: sbi portb,7 cbi portb,6 rcall delay40us out portd,lcd cbi portb,7 rcall delay40us swap lcd sbi portb,7 cbi portb,6 rcall delay40us out portd,lcd cbi portb,7 rcall delay40us ret
;Вывод на дисплей байта данных
lcddat: sbi portb,7 sbi portb,6 rcall delay40us out portd,lcd cbi portb,7 rcall delay40us swap lcd sbi portb,7 sbi portb,6 rcall delay40us out portd,lcd cbi portb,7 rcall delay40us ret
|