Возможно ли определить проинициализорован ли дисплей или нет?
Просто такая ситуация, что если провести инициализацию в 4битный интерфейс повторно, то дисплей либо вообще отказывает, до сброса питания, либо начинает работать неадекватно.
Помогите
С коментами.Murka писал(а):eufs Хоть коменты вставь, ведь не всем понятно будет.
Код: Выделить всё
;ПП инициализации в дисплея 4х битном режиме
init_0802:
rcall pause ;пауза после подачи питания 10 мс
cbi _portb,en ;сбрасыв EN
cbi _portb,rw ;сбрасыв RW
cbi _portb,rs ;сбрасыв RS (команда)
rcall p50us ;пауза 50us
ldi r17,$02 ;передаем тетраду 0010
rcall d_out4
ldi r17,$28 ;передаем 0010 1000 в два этапа
rcall d_out
sbrs r0,_data7 ;если бит 7 сброшен, то дисплей команды не принимает
rjmp init_0802 ;пробуем снова
ldi r17,$28 ;продолжаем инит, передаем 0010 1000
rcall d_out
ldi r17,$0c ;передвем 0000 1100
rcall d_out
ldi r17,$01 ;передаем 0000 0001 (очстка дисплея)
rcall d_out
rcall pause ;пауза
sbi _portb,rs ;устанавливаем RS (дальше будут данные)
ret
;ПП вывода данных впо 4х битному интерфейсу
d_out:
rcall p50us ;пауза 50мкс
;начинаем передавать сначала старшую тетраду
cbi _portb,_data7 ;рассыпано побитно для универсальности при подключении
sbrc r17,7
sbi _portb,_data7
cbi _portb,_data6
sbrc r17,6
sbi _portb,_data6
cbi _portb,_data5
sbrc r17,5
sbi _portb,_data5
cbi _portb,_data4
sbrc r17,4
sbi _portb,_data4
sbi _portb,en ;подтверждаем передачу старших 4х бит
rcall p50us
cbi _portb,en
d_out4:
rcall p50us
;передаем младшие
cbi _portb,_data7
sbrc r17,3
sbi _portb,_data7
cbi _portb,_data6
sbrc r17,2
sbi _portb,_data6
cbi _portb,_data5
sbrc r17,1
sbi _portb,_data5
cbi _portb,_data4
sbrc r17,0
sbi _portb,_data4
sbi _portb,en
rcall p50us
cbi _portb,en
;передали
sbic _portb,rs ;если это были данные, то ничего не проверяем
rjmp d_out_ex
sbi _portb,rw ;переводим интерфейс на чтение
sbi _portb,_data7 ;7 бит - это BUSY
cbi _ddrb,_data7 ;переводим на ввод
sbi _portb,en
nop ;небольшую паузу (4мкс)
nop
nop
in r0,_pinb ;читаем состояние
sbi _ddrb,_data7
cbi _portb,en
cbi _portb,rw
d_out_ex:
rcall p50us
ret
как уже прозвучало - тайминги. ну и проверить всё ли при повторной инициализации находится в состоянии как после сброса?Spider писал(а):пасиб. Буду колупать