Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ADuC vs WH1602
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
Viktor_
Привет всем. У меня проблемы с инициализацией WH1602. Работаю на ADuC812. Написал кучу программок на ASMе, ничего не работае. Три раза выбираю разрядность шыны с соответствующими паузами, но результат - "0". Индикатор вроде рабочий - яркость регулируется. Помогите практическими указаниями, если можно програмкой. help.gif
Заране благодарен!!!
Пишите на ladinoleg@mail.ru или ladinoleg@kvadro.net
ipc
Цитата(Viktor_ @ Apr 12 2006, 06:22) *
Привет всем. У меня проблемы с инициализацией WH1602. Работаю на ADuC812. Написал кучу программок на ASMе, ничего не работае. Три раза выбираю разрядность шыны с соответствующими паузами, но результат - "0". Индикатор вроде рабочий - яркость регулируется. Помогите практическими указаниями, если можно програмкой. help.gif
Заране благодарен!!!
Пишите на ladinoleg@mail.ru или ladinoleg@kvadro.net

Вот нарыл что то из своих старых разработок для HD44780.Это стопудово работало,посмотри может что напомнит.


INDICAT SEGMENT CODE
EXTRN CODE(DELAY,DELAY2)
PUBLIC PUTCHAR,SEND,SINIT,SETPOS,PRNUM,PRINT,SBYTE

RSEG INDICAT

;Подпрограмма посылает строку в индикатор из ПЗУ
SEND: PUSH ACC ;
SEN0: CLR A
MOVC A,@A+DPTR
JNZ SEN1
POP ACC
RET
SEN1: CALL PUTCHAR
INC DPTR
SJMP SEN0
;Подпрограмма посылает строку в индикатор из ОЗУ
PRINT: MOV A,@R0
JNZ PR1
RET
PR1: CALL PUTCHAR
INC R0
SJMP PRINT
PUTCHAR: SETB P1.5 ;rs=1 режим данных у индикатора
;Подпрограмма посылает один байт в индикатор и щелкает enable
SBYTE: MOV P0,A
SETB P1.4 ;e=1 у индикатора
CALL DELAY2
CLR P1.4 ;e=0 у индикатора
CALL DELAY2
SETB P1.4 ;e=1 у индикатора
CALL DELAY2
RET
;Подпрограмма инициализации индикатора
SINIT: MOV R6,#80H
MOV R7,#00H
CALL DELAY ;задержка 16 мс (кварц 12 mhz)
CLR P1.5 ;rs=0 режим комманд у индикатора
MOV A,#00111000b ;8 bit/2line/5x7dot
CALL SBYTE
CALL DELAY2
MOV A,#00000110b ;incr / no shift
CALL SBYTE
CALL DELAY2
MOV A,#00001100b ;disp on/ cur on/blink on
CALL SBYTE
CALL DELAY2
MOV A,#00000001b ;clear screen
CALL SBYTE
MOV R6,#20H
MOV R7,#00H
CALL DELAY
RET
;подпрограмма позиционирования курсора
SETPOS: CLR P1.5 ;rs=0 режим комманд у индикатора
ORL A,#10000000b ;POSITION MODE
CALL SBYTE
MOV R6,#0A0H
MOV R7,#00H
CALL DELAY
RET
;подпрограмма для печати числа в формате 0000 исходные данные
;в R0 указатель на 01 23 45
PRNUM: INC R0
CALL PRNUM0
DEC R0
PRNUM0: CALL PRNUM1
CALL PRNUM2
RET
PRNUM1: MOV A,@R0
PRNUM2: SWAP A
PUSH ACC
ANL A,#0FH
MOV R7,#9
XCH A,R7
CLR C
SUBB A,R7
MOV A,R7
JNC PRNUM3
ADD A,#7
PRNUM3: ADD A,#'0'
CALL PUTCHAR
POP ACC
RET
;Подппрограмма осуществляющая задержку на заданное число мкс R6R7
DELAY2: MOV R6,#02H
MOV R7,#00H
DELAY: PUSH ACC
ORL TMOD,#1 ;режим 1 для таймера 0
CLR TR0
CLR TF0
MOV A,#0FFH ;инверсия регистров (счетчик прибавляет)
XRL A,R6
MOV R6,A
MOV A,#0FFH
XRL A,R7
MOV R7,A
MOV TH0,R6
MOV TL0,R7
SETB TR0
DEL1: JNB TF0,DEL1
POP ACC
RET
END
Viktor_
Спосибочки, сейчас попробую!
Viktor_
SBYTE - что в этой процедурке?
ipc
Цитата(Viktor_ @ Apr 12 2006, 10:32) *
SBYTE - что в этой процедурке?

Если назабыл то это Send Byte
Смотри в тексте
;Подпрограмма посылает один байт в индикатор и щелкает enable
SBYTE: MOV P0,A
SETB P1.4 ;e=1 у индикатора
CALL DELAY2
CLR P1.4 ;e=0 у индикатора
CALL DELAY2
SETB P1.4 ;e=1 у индикатора
CALL DELAY2
RET
Viktor_
спосибо, просто не по глазам было.
ipc
Цитата(Viktor_ @ Apr 13 2006, 04:53) *
спосибо, просто не по глазам было.

Так чего есть успехи или нет?Удалось адаптировать мой пример к своей ситуации и нормально его скомпилировать?
Viktor_
у меня проблемма с программатором. Нужно разобратся.
Кстати а у тебя какой компелятор? У меня проблема с "mov P0,А" есть OUTL P0,A но для 51 архитектуры не работае.
ipc
Цитата(Viktor_ @ Apr 13 2006, 12:46) *
у меня проблемма с программатором. Нужно разобратся.
Кстати а у тебя какой компелятор? У меня проблема с "mov P0,А" есть OUTL P0,A но для 51 архитектуры не работае.

Я писал на Франклине.Скорее всего ругается на обозначение аккамулятора,иногда его записывают как ACC.
Т.е mov P0,ACC
Viktor_
Да нет, пишут то также mov p0,A но в дефайне Пишут ACC. Это всё фигня, видимо у меня контроллер накрылся медным тазом. Программа вроде как прошивается, WSD (программа загрузки) говорит что всё ОК, но на выходе портов ничего нет. Может что не так в программе, но я не думаю. Раньше работала программа на ЦАП, теперь на выходе цапа тоже глухо. Вообщем такое ощущение что только Uart работает. Может так быть что программа зашивается а контроллер уже не рабочий? У кого нибудь было такое?
ipc
Цитата(Viktor_ @ Apr 14 2006, 10:07) *
Да нет, пишут то также mov p0,A но в дефайне Пишут ACC. Это всё фигня, видимо у меня контроллер накрылся медным тазом. Программа вроде как прошивается, WSD (программа загрузки) говорит что всё ОК, но на выходе портов ничего нет. Может что не так в программе, но я не думаю. Раньше работала программа на ЦАП, теперь на выходе цапа тоже глухо. Вообщем такое ощущение что только Uart работает. Может так быть что программа зашивается а контроллер уже не рабочий? У кого нибудь было такое?

Бывает и такое.Обычно в адуках первым накрываецца флеш(очень нелюбит перегрева).А что кристалл тока один и на другом непроверить?В любом случа я бы проверил схему тактирования и ресета.
Viktor_
а что ресет тоже может запороть контроллер? Кварц у меня стоит какой то старый частота вроде норма 11.059, но он древний, из-за него может быть проблемма?
ipc
Цитата(Viktor_ @ Apr 14 2006, 10:22) *
а что ресет тоже может запороть контроллер? Кварц у меня стоит какой то старый частота вроде норма 11.059, но он древний, из-за него может быть проблемма?

Да нет конечно ресет неможет запороть но если программатор собран некорректно то после загрузки проги он может неперезапустить контроллер и тот будет висеть до скончания века.А кварц вполне стандартный хотя адуки нормально работают и на 16 мгц.
Nemo2000
Цитата(Viktor_ @ Apr 14 2006, 10:22) *
а что ресет тоже может запороть контроллер? Кварц у меня стоит какой то старый частота вроде норма 11.059, но он древний, из-за него может быть проблемма?



с ресетом скорее всего проблем нет (иначе хрен бы он прошивался), из-за кварца - тоже самое. ошибки скорее всего в проге. я бы попробовал зашить прогу, которая только выводит в порт штонить или там на цап.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.