реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Проблемка с LSD Winstar WH1602
_Vadim_
сообщение Dec 6 2007, 08:17
Сообщение #1





Группа: Новичок
Сообщений: 12
Регистрация: 30-11-07
Пользователь №: 32 840



Добрый день!
Прошу помощи решения проблемки!
Проблемка с LSD Winstar WH1602-YYK-CTK-русифицированный, контроллер HD44780, использую PIC16F84A для вывода на дисплай тестовой инфы, проблем заключается в том, что LSD отображает правильно только цифры и некоторые знаки, например провожу инициализацию LSD, далее пытаюсь вывести по очереди например A,B,C,D......O, а ЛСД-ка выдыет вертикальные черточки, изображения прикладываю. Может я чот не правильно делаю с инициализацией, хотя с цифрами все хорошо, вообщем жду вашего совета, человек я в этом деле новый как что сильно не пинайте!
Еще для пущей понятности кусок програмки в ассемблере для оного пика:

;R/W - постоянно схемно соединен с "-"
LsdVideoON: CALL TIMER5 ;Ожидаем 15мс пока установится питание LSD
bcf PORTA,1 ;установка RS = 0
CALL TIMER5 ;Еще ждемс
movlw 0x0D ;запись 0000 1101 в порт В(DB0-DB7)
movwf PORTB ;D=1-вкл.изображение,B=1-мерцаюший курсор вкл.
CALL TIMER5 ;
bsf PORTA,3 ;установливаем Е=1
CALL TIMER5 ;
bcf PORTA,3 ;установливаем Е=0
CALL TIMER5 ;
movlw 0xFF ; установливаем DB0-DB7 высокий лог-кий
movwf PORTB ; уровень (Hi)
CALL TIMER5 ;

LsdVideoConf:
bcf PORTA,1 ;тоже самое только
CALL TIMER5 ;
movlw 0x3F ;запись 0011 1111 в порт В(DB0-DB7)
movwf PORTB ;DL=1-вкл.8-ми разрядная шина данных,N=1-вкл.две строки,
CALL TIMER5 ;F=1 - матрица 5*10 точек
bsf PORTA,3 ;
CALL TIMER5 ;
bcf PORTA,3 ;
CALL TIMER5 ;
movlw 0xFF ;
movwf PORTB ;
CALL TIMER5 ;

LsdVideoData:
bsf PORTA,1 ;запись в память данных
CALL TIMER5 ;RS=1
movlw 0x41 ;запись буковки А в порт В(DB0-DB7)
movwf PORTB ;
CALL TIMER5 ;
bsf PORTA,3 ;Е=1
CALL TIMER5 ;
bcf PORTA,3 ;Е=0
CALL TIMER5 ;
movlw 0xFF ;DB0-DB7 = Hi
movwf PORTB ;
CALL PAUSE ;
LsdVideoData1:
bsf PORTA,1
CALL TIMER5
movlw 0x42 ; "B"
movwf PORTB
CALL TIMER5
bsf PORTA,3
CALL TIMER5
bcf PORTA,3
CALL TIMER5
movlw 0xFF
movwf PORTB
CALL PAUSE
LsdVideoData2:
bsf PORTA,1
CALL TIMER5
movlw 0x43 ; "C"
movwf PORTB
CALL TIMER5
bsf PORTA,3
CALL TIMER5
bcf PORTA,3
CALL TIMER5
movlw 0xFF
movwf PORTB
CALL PAUSE
LsdVideoData3:
bsf PORTA,1
CALL TIMER5
movlw 0x44 ; "D"
movwf PORTB
CALL TIMER5
bsf PORTA,3
CALL TIMER5
bcf PORTA,3
CALL TIMER5
movlw 0xFF
movwf PORTB
CALL TIMER5
CALL PAUSE

и так до "О"
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 6 2007, 09:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Раз вы человек новый, то следует для начала прочитать Правила форума. После этого воспользоваться поиском по форуму. И только, если не найдете ответа (хотя сложно не найти, 2-х строчные LCD обсуждаются примерно раз в неделю) на свой вопрос разместить свое сообщение в соответствующем разделе форума (AVR видимо?).
По сути проблемы. С кодом я вашим не разбирался, но судя по всему, вы пытаетесь писать в область CGRAM, а не DDRAM.
Go to the top of the page
 
+Quote Post
rloc
сообщение Dec 6 2007, 10:33
Сообщение #3


Узкополосный широкополосник
******

Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462



Цитата(_Vadim_ @ Dec 6 2007, 11:17) *
Проблемка с LSD Winstar WH1602-YYK-CTK-русифицированный, контроллер HD44780, ...

Контроллер у них не совсем HD44780, а совместимый с оным, собственной разработки и очень часто с огромным количеством ошибок. Лет 5 назад "парился" c WH1602D-PML-CP, таких мучений никому больше не пожелаю, жутко глюкавый, совместим с HD44780 процентов на 80%. Если найду, выложу исходники написанные на С под MCS51.
LSD - "правильно" Вы его назвали beer.gif
Go to the top of the page
 
+Quote Post
_Vadim_
сообщение Dec 6 2007, 14:34
Сообщение #4





Группа: Новичок
Сообщений: 12
Регистрация: 30-11-07
Пользователь №: 32 840



Цитата(rezident @ Dec 6 2007, 13:13) *
Раз вы человек новый, то следует для начала прочитать Правила форума. После этого воспользоваться поиском по форуму. И только, если не найдете ответа (хотя сложно не найти, 2-х строчные LCD обсуждаются примерно раз в неделю) на свой вопрос разместить свое сообщение в соответствующем разделе форума (AVR видимо?).
По сути проблемы. С кодом я вашим не разбирался, но судя по всему, вы пытаетесь писать в область CGRAM, а не DDRAM.

Уважаемый rezident, я правила прочитал и давайте сами не будем разводить ФЛУД и высказываться будем по существу!


Цитата(rloc @ Dec 6 2007, 14:33) *
Контроллер у них не совсем HD44780, а совместимый с оным, собственной разработки и очень часто с огромным количеством ошибок. Лет 5 назад "парился" c WH1602D-PML-CP, таких мучений никому больше не пожелаю, жутко глюкавый, совместим с HD44780 процентов на 80%. Если найду, выложу исходники написанные на С под MCS51.
LSD - "правильно" Вы его назвали beer.gif

ДА уж с "LSD" я загнул, хотя LCD его пока трудно назвать! Буду пробовать перебирать всю таблицу символов crying.gif . По результатам отпишусь beer.gif .
Go to the top of the page
 
+Quote Post
_Vadim_
сообщение Dec 7 2007, 07:57
Сообщение #5





Группа: Новичок
Сообщений: 12
Регистрация: 30-11-07
Пользователь №: 32 840



И так что мне удалось узнать, прошерстил я всю таблицу символов, попробовал другой такой же LCD, результат одинаковый, pdf-чик с таблицой из даташита прилагаю, а вот что отображает дисплей:
адреса:
- с 00 до 0D отображаются ввиде вертикальных черточек (по две или три (реже) штуки в ячейке);
- с 0Е до 0F - пустые;
- с 10 до 1F - пустые;
- 20 - пустая;
- 21 - 2F - как положено;
- 30 - 3F - как положено;
- 40 - 4F - ввиде вертикальных черточек;
- 50 - 5F - ввиде вертикальных черточек;
- 61 - 6F = 21 - 2F;
- 70 - пустая;
- 71 - 7F = 21 - 2F;
- 80 - пустая;
- 81 - 90 - ввиде вертикальных черточек;
- 91 - A0 - пустые;
- A0 - AF - ввиде вертикальных черточек;
- B1 - BF = 21 - 2F;
- C0 - CF - как положено;
- D0 - DF - как положено;
- E0 - EF - как положено;
- F0 - FF - как положено.
Вывод у меня напрашивается один - брак производителя, криво прошита память; что скажите народ?
Прикрепленные файлы
Прикрепленный файл  table_simbol.pdf ( 9.06 килобайт ) Кол-во скачиваний: 100
 
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 7 2007, 09:20
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(_Vadim_ @ Dec 7 2007, 09:57) *
попробовал другой такой же LCD....
что скажите народ?
Что с кривыми индикаторами сталкиваться не приходилось (а тем более с двумя!), а вот с кривыми программами - сколько угодно. rezident совершенно правильно вам заметил, что инициализация обсасывалась на этом форуме очень много раз. Вы можете до потери сознания обвинять собеседников во флуде, но он вам сделал два совершенно правильных замечания - 1) читать ваш код очень трудно - вы не потрудились его обрамить тегами code
2) ваша инициализация никуда не годится - ищите на форуме.
Не годится по следующим причинам:
1) надо указывать одну строку а не две - примите это как аксиому
2) вы не даете команду установки адреса DDRAM.
3) вы не даете еще несколько необходимых команд
Можете кивать на производителя сколько угодно, но пока не сделаете правильную инициализацию работать не будет. Примеров море что в гугле что на форуме. Творить еще одну копию нет никакого желания.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
_Vadim_
сообщение Dec 7 2007, 10:49
Сообщение #7





Группа: Новичок
Сообщений: 12
Регистрация: 30-11-07
Пользователь №: 32 840



Цитата(Сергей Борщ @ Dec 7 2007, 13:20) *
Что с кривыми индикаторами сталкиваться не приходилось (а тем более с двумя!), а вот с кривыми программами - сколько угодно. rezident совершенно правильно вам заметил, что инициализация обсасывалась на этом форуме очень много раз. Вы можете до потери сознания обвинять собеседников во флуде, но он вам сделал два совершенно правильных замечания - 1) читать ваш код очень трудно - вы не потрудились его обрамить тегами code
2) ваша инициализация никуда не годится - ищите на форуме.
Не годится по следующим причинам:
1) надо указывать одну строку а не две - примите это как аксиому
2) вы не даете команду установки адреса DDRAM.
3) вы не даете еще несколько необходимых команд
Можете кивать на производителя сколько угодно, но пока не сделаете правильную инициализацию работать не будет. Примеров море что в гугле что на форуме. Творить еще одну копию нет никакого желания.

Спасибо за помошь, буду разбираться дальше.
Go to the top of the page
 
+Quote Post
_Vadim_
сообщение Dec 12 2007, 12:00
Сообщение #8





Группа: Новичок
Сообщений: 12
Регистрация: 30-11-07
Пользователь №: 32 840



Цитата(Сергей Борщ @ Dec 7 2007, 13:20) *
Что с кривыми индикаторами сталкиваться не приходилось (а тем более с двумя!), а вот с кривыми программами - сколько угодно. rezident совершенно правильно вам заметил, что инициализация обсасывалась на этом форуме очень много раз. Вы можете до потери сознания обвинять собеседников во флуде, но он вам сделал два совершенно правильных замечания - 1) читать ваш код очень трудно - вы не потрудились его обрамить тегами code
2) ваша инициализация никуда не годится - ищите на форуме.
Не годится по следующим причинам:
1) надо указывать одну строку а не две - примите это как аксиому
2) вы не даете команду установки адреса DDRAM.
3) вы не даете еще несколько необходимых команд
Можете кивать на производителя сколько угодно, но пока не сделаете правильную инициализацию работать не будет. Примеров море что в гугле что на форуме. Творить еще одну копию нет никакого желания.

Сергей, собственно от перечтения даташитов, док и разных примеров, нечего существенно нового не узнал по инициализации, текст программы (кривой - правильно подмечено) поправил, но проблема остается таже, может поможете еще разок?
кратко попробую описать инициализацию дисплея:
1. Установить RS, E, R/W - в Down (0) (R/W-сидит на нуле);
2. Выждать паузу не менее 15 мс;
3. Установить RS в Down (на всякий случай);
4. Вывести на шину данных 0х30= 00110000 (инициализация в 8-ми битном режиме);
5. Установить Е в UP(1);
6. Установить Е в Down (0);
7. Установить шину данных в уровень высокого импеданса 1;
8. выждать паузу не менее 5 мс;
9. повторить пункты 3-7;
10. пауза не менее 100мкс (у меня 1мс);
11. повторить пункты 3-7;

12. Установить RS в Down;
13. Вывести на шину данных 0x3C= 8 бит, 2 строки, матрица 5х10
14. повторить пункты 5-7;

15. Установить RS в Down;
16. Вывести на шину данных 0x06=курсор авомат-ки перемещ. слева-направо;
17. повторить пункты 5-7;

18. Установить RS в Down;
19. Вывести на шину данных 0x01=отчиска экрана;
20. повторить пункты 5-7;

21. Установить RS в Down;
22. Вывести на шину данных 0x80=установка адресса ДДРАМ;
23. повторить пункты 5-7;

Файлик в асме прилагаю коментарии в нем имеются.
Go to the top of the page
 
+Quote Post
_Vadim_
сообщение Dec 12 2007, 14:15
Сообщение #9





Группа: Новичок
Сообщений: 12
Регистрация: 30-11-07
Пользователь №: 32 840



Файлик почемуто не добавляется, тогда вот текст.

;**************************************************************************
; Используется микроконтроллер PIC16F84A. Частота кварца 4000кГц.
;*******************************************************************************
*********
LIST p=16F84a ; Используется PIC16F84A.
__CONFIG 03FF9H ; PWR вкл, WDT выключен, бит защиты не установлен.
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+ программа вывода информации на LCD +
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


STATUS EQU 0x03
PORTA EQU 0x05
PORTB EQU 0x06
TRISA EQU 0x05
TRISB EQU 0x06
INTCON EQU 0x0B
SecH equ 0x0C
SecL equ 0x0D
SecM equ 0x0E
TimerL equ 0x0F
TimerH equ 0x10
F EQU 1
RP0 EQU 5
RS EQU 1
E EQU 3


ORG 0
GOTO START
ORG 0x04
GOTO PAUSE
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+ Подпрограмма задержки ~ 1 секунда +
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

PAUSE:
movlw 0xFF
movwf SecL
movwf SecM
movlw 0x05
movwf SecH
PAUSE_1:
decfsz SecL,F
goto PAUSE_1

PAUSE_2:
nop
nop
decfsz SecM,F
goto PAUSE_1

PAUSE_3:
decfsz SecH,F
goto PAUSE_1

goto END_PAUSE

END_PAUSE: retfie

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+ Подпрограммы задержки 1мс, 5мс, 20 мс +
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

pause1ms:
movlw 0x49
movwf TimerL
movlw 0x02
movwf TimerH
goto TIMER1
pause5ms:
movlw 0x7B
movwf TimerL
movlw 0x07
movwf TimerH
goto TIMER1

pause20ms:
movlw 0xF7
movwf TimerL
movlw 0x1A
movwf TimerH
TIMER1:
decfsz TimerL,F
goto TIMER1
TIMER2:
decfsz TimerH,F
goto TIMER1
goto END_PAUSE

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+ Вывод данных на LCD +
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


LCD_DATA_OUTPUT:
movwf PORTB ;запись информации в порт
;CALL pause1ms ; Опционально
bsf PORTA,E ;Е=1=Up
;CALL pause1ms ; Опционально
bcf PORTA,E ;Е=1=Down
CALL pause1ms ;пауза 1 мс
movlw 0xFF ;записать в аккамулятор 1111 1111
movwf PORTB ;установить D0-D7 в Up
CALL pause1ms ;пауза 1 мс


retfie ;возврат по стеку
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+ Начало программы +
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

START: clrf INTCON
BSF STATUS,RP0
clrw
movwf TRISA
movwf TRISB
BCF STATUS,RP0
clrw
movwf PORTA
movwf PORTB

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+ Выполняется инициализация LCD +
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Lsd_INIT:
CALL pause20ms ;ждем 20 мс
bcf PORTA,RS ; RS-Down
CALL pause1ms ; инициализация 00110000
movlw 0x30 ;Dl=1-8-битная шина данных
CALL LCD_DATA_OUTPUT ; вызов подпрограммы вывода
CALL pause5ms ; инф-ции в порт данных
CALL LCD_DATA_OUTPUT ; и так три раза, как в даташите
CALL pause1ms ;
CALL LCD_DATA_OUTPUT ;


;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+ Выполняется установка режима работы LCD +
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


LsdVideoConf1:
bcf PORTA,RS
movlw 0x3C ; 8 бит, 2 строки, матрица 5х10
CALL LCD_DATA_OUTPUT

LsdVideoConf2:
bcf PORTA,RS
movlw 0x0E ;изображение вкл., курсор в виде подчерка вкл.
CALL LCD_DATA_OUTPUT

LsdVideoConf3:
bcf PORTA,RS
movlw 0x06 ; курсор авомат-ки перемещ. слева-направо
CALL LCD_DATA_OUTPUT

LsdVideoConf4:
bcf PORTA,RS
movlw 0x01 ; отчиска экрана
CALL LCD_DATA_OUTPUT

LsdVideoConf5:
bcf PORTA,RS
movlw 0x80 ; установка адресса ДДРАМ
CALL LCD_DATA_OUTPUT ; (нулевой адресс)

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+ Выполняется вывод данных на LCD +
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

LsdVideoData:
bsf PORTA,RS
movlw 0x41 ; simbol "А"
CALL LCD_DATA_OUTPUT
CALL PAUSE
LsdVideoData1:
bsf PORTA,RS
movlw 0x42 ; simbol "B"
CALL LCD_DATA_OUTPUT
CALL PAUSE
LsdVideoData2:
bsf PORTA,RS
movlw 0x43 ; simbol "C"
CALL LCD_DATA_OUTPUT
CALL PAUSE
LsdVideoData3:
bsf PORTA,RS
movlw 0x41 ; simbol "D"
CALL LCD_DATA_OUTPUT
CALL PAUSE


goto LsdVideoData ; гоняем буквы по кругу



END

Сообщение отредактировал _Vadim_ - Dec 12 2007, 15:03
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 12 2007, 14:58
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(_Vadim_ @ Dec 12 2007, 17:00) *
Сергей, собственно от перечтения даташитов, док и разных примеров, нечего существенно нового не узнал по инициализации, текст программы (кривой - правильно подмечено) поправил, но проблема остается таже, может поможете еще разок?
кратко попробую описать инициализацию дисплея:

В вашем алгоритме не учитывается конечное (и немалое) время выполнения LCD каждой команды записи. Поскольку у вас сигнал R/W не используется (подключен к GND) и вы не можете проверить готовность LCD опросом (чтением) флага BF, то после каждой записи вы обязаны выдерживать паузу, оговоренную даташитом. Пауза нужна чтобы контроллер LCD заведомо успевал обрабатывать команды. В описанном вами алгоритме паузы только на этапе инициализации имеются.
Go to the top of the page
 
+Quote Post
_Vadim_
сообщение Dec 12 2007, 15:07
Сообщение #11





Группа: Новичок
Сообщений: 12
Регистрация: 30-11-07
Пользователь №: 32 840



Цитата(rezident @ Dec 12 2007, 18:58) *
В вашем алгоритме не учитывается конечное (и немалое) время выполнения LCD каждой команды записи. Поскольку у вас сигнал R/W не используется (подключен к GND) и вы не можете проверить готовность LCD опросом (чтением) флага BF, то после каждой записи вы обязаны выдерживать паузу, оговоренную даташитом. Пауза нужна чтобы контроллер LCD заведомо успевал обрабатывать команды. В описанном вами алгоритме паузы только на этапе инициализации имеются.

Это я понимаю и в тексте программы это учтено, но изменений работы от ввода в текст программы пауз, не происходит. sad.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 12 2007, 15:51
Сообщение #12


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(_Vadim_ @ Dec 12 2007, 16:15) *
Файлик почемуто не добавляется, тогда вот текст.
Потому что его надо запаковать, хотя бы в .zip Ну а если выкладываете текст в сообщение, хотя бы обрамляйте его в теги [ code ] и [ /code ] ( кнопочка с символом # над формой ввода сообщения). По программе: Вы пробовали ее гонять в симуляторе? Я сразу увидел, что в фрагменте
Код
Lsd_INIT:  
            CALL       pause20ms                           [color=#3333FF];ждем 20 мс [/color]
            bcf        PORTA,RS                               [color=#3333FF]; RS-Down[/color]
            CALL       pause1ms                             [color=#3333FF]; инициализация 00110000 [/color]
            movlw      0x30                                   [color=#3333FF];Dl=1-8-битная шина данных[/color]
            CALL       LCD_DATA_OUTPUT              [color=#3333FF]; вызов подпрограммы вывода[/color]
            CALL       pause5ms                            [color=#3333FF]; инф-ции в порт данных[/color]
            CALL       LCD_DATA_OUTPUT              [color=#3333FF]; и так три раза, как в даташите[/color]
            CALL       pause1ms          ;
            CALL       LCD_DATA_OUTPUT              [color=#3333FF];[/color]
у вас внутри LCD_DATA_OUTPUT портится содержимое W и второй и третий вызов делают совсем не то, что вы хотите. Поэтому сначала добейтесь, чтобы программа делала все, как задумано. Рядом висит еще одна тема, там тоже обсуждается дисплей и его инициализация, правда на С - почитайте, может найдете что-то полезное.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
xemul
сообщение Dec 12 2007, 17:01
Сообщение #13



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(_Vadim_ @ Dec 12 2007, 17:15) *
Файлик почемуто не добавляется, тогда вот текст.
Код
            ...
            END

По сути уважаемые уже все сказали.
Небольшие дополнения, не относящееся к теме:
1) разница между return и retfie в PIC'ах, конечно, не слишком великая, но таки есть.
2) имхо, крайне негуманно по отношению к контроллеру организовать п/п обработки прерывания как задержку на 1 секунду.
Go to the top of the page
 
+Quote Post
_Vadim_
сообщение Dec 13 2007, 07:09
Сообщение #14





Группа: Новичок
Сообщений: 12
Регистрация: 30-11-07
Пользователь №: 32 840



Спасибо всем!
Действительно не продумал с W, это от неопытности, извените, поправлю и сообщю о результатах.
Go to the top of the page
 
+Quote Post
_Vadim_
сообщение Dec 13 2007, 09:47
Сообщение #15





Группа: Новичок
Сообщений: 12
Регистрация: 30-11-07
Пользователь №: 32 840



Цитата(_Vadim_ @ Dec 13 2007, 11:09) *
Спасибо всем!
Действительно не продумал с W, это от неопытности, извените, поправлю и сообщю о результатах.

Поправил свою ошибку в секции вывода данных на LCD и дальше по тексту программы подобавлял после записи в W, копирование W в CopyW где нужно.
Код
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+                   Вывод данных на LCD                                   +
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

LCD_DATA_OUTPUT:
            CALL       pause1ms
            movf       CopyW,W  ;скопировать содержимое CopyW в W  
            movwf      PORTB    ;запись информации в порт
                                ;CALL       pause1ms            
            bsf        PORTA,E  ;Е=1=Up
                                ;CALL       pause1ms
            bcf        PORTA,E  ;Е=1=Down
            CALL       pause1ms ;пауза 1 мс
            movlw      0xFF     ;записать в 0аккамулятор 1111 1111          
            movwf      PORTB    ;установить D0-D7 в Up
            CALL       pause1ms ;пауза 1 мс
            

            retfie              ;возврат по стеку

результат тот же, что скажите вроде основные ляпы убрал, инициализация вроде идет как надо, теперь то по идее должно работать, но не работает, что делать?

вот результаты вывода 2-го и 3-го столбцов таблицы символов:
Прикрепленное изображение


и результаты вывода 4-го и 5-го столбцов таблицы символов:
Прикрепленное изображение


да вот еще файлик в асме:Прикрепленный файл  test.zip ( 1.82 килобайт ) Кол-во скачиваний: 171
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 03:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01528 секунд с 7
ELECTRONIX ©2004-2016