Привет всем! не думал что напишу сюда с проблемой))) но все таки приходится. имеется мега8535 и однострочный WH1601 при включении инициализацию проходит (не знаю правильно ли проходит, но проходит - видно что после нее закрашивается равномерными пробелами, когда как без инициализации он ярко светится первой половинкой

ну вы меня понимаете)
так вот, ничего не могу вывести на дисплей, как ни пробовал, не получается. вот листинг на асме. подскажите, что у меня неправильно?
4-х битный интерфейс
Код: Выделить всё
lcd_init:
clr adr
rcall delay20ms
ldi temp,(1<<DB5)|(1<<DB4)
out lcd,temp
rcall strobe
rcall delay20ms
rcall strobe
rcall delay20ms
rcall strobe
rcall delay20ms
cbr temp,(1<<DB4)
out lcd,temp
rcall strobe
rcall delay40us
rcall strobe
clr temp
sbr temp,(1<<DB7)
out lcd,temp
rcall strobe
rcall delay40us
clr temp
out lcd,temp
rcall strobe
sbr temp,(1<<DB7)
out lcd,temp
rcall strobe
rcall delay40us
clr temp
out lcd,temp
rcall strobe
sbr temp,(1<<DB4)
out lcd,temp
rcall strobe
rcall delay20ms
clr temp
out lcd,temp
rcall strobe
sbr temp,(1<<DB6)|(1<<DB5)
out lcd,temp
rcall strobe
rcall delay40us
clr temp
out lcd,temp
ret
это подпрограмма вывода данных:
data - данные, lcd- бит порта, подключенный к транзистору, который управляет подсветкой. DB4,DB5,DB6,DB7 - соответствующие выводы порта подключенные к ЖКИ. A_D-бит порта подключенный к ЖКИ к ноге выбора регистра (адрес/данные) strobe - подпрограмма ниже. Е-бит подключенный к одноименной ноге ЖКИ
Код: Выделить всё
send_data:
push data ;запоминаем data
push temp
in temp,lcd ;считываем порт, чтобы не изменить бит led
;(возможен ШИМ для управления яркостью)
andi temp,(1<<led)
bst data,4 ;копируем соответствующие биты данных
bld temp,DB4 ;на их места в выходном порту,
bst data,5 ;подключенному к ЖКИ
bld temp,DB5 ;старшая тетрада данных
bst data,6
bld temp,DB6
bst data,7
bld temp,DB7
sbr temp,(1<<A_D);устанавливаем сигнал "A_D"
out lcd,temp ;выводим полученные данные в порт
rcall strobe
bst data,0 ;копируем соответствующие биты данных
bld temp,DB4 ;на их места в выходном порту,
bst data,1 ;подключенному к ЖКИ
bld temp,DB5 ;младшая тетрада данных
bst data,2
bld temp,DB6
bst data,3
bld temp,DB7
out lcd,temp ;выводим полученные данные в порт
rcall strobe
rcall delay40us
andi temp,(1<<led)
out lcd,temp
pop temp
pop data ;восстанавливаем data
ret
подпрограмма strobe
Код: Выделить всё
strobe:
sbi lcd,e
nop nop nop nop nop
cbi lcd,e
nop nop nop nop nop
ret
помогите кто чем может) уже заипался.