Поиск сообщества
Показаны результаты для тегов '1602A'.
Найдено: 3 результата
-
Добрый день. Пишу прошивку для PIC16F628A + 1602A, тестирую на бредборде. На данный момент завяз в подсчёте количества разрядов в 2-байтном числе, разбитом на два регистра. Порядок работы такой: 1. Берётся 2-байтная константа varH:varL 2. Последовательно подсчитываются дес. тыс. / тыс. / сотен / дес. / ед. Для этого из varH:varL с помощью подпрограммы subtraction вычитываются tmpH:tmpL = 10^4 / 10^3 / 10^2 / 10^1 / 10^0, цифра разряда после каждого вызова возвращается в виде переменной dignum (к которой затем добавляется b'00110000' и выводится на ЖКИ). Проблема в том, что вывод цифр останавливается после точки. Т.е. должно было быть 65.535_, а получается 65._ Прошу помочь. Подозреваю, что проблема заключается в подпрограмме вычитания или подсчёта разрядов. call init_lcd ;инициализация ЖКИ movlw b'11111111' ;переменная, в которой надо посчитать разряды movwf varH movlw b'11111111' movwf varL movlw b'10000000' ;нач. вывода символов - строка 1, яч. 1 (при иниц. был настр. авт. переход на след. яч.) movwf M_byte call addr_out ;counting 10^4 movlw b'00100111' movwf tmpH movlw b'00010000' movwf tmpL call dig_count movf dignum,0 movwf M_byte call symb_out ;counting 10^3 movlw b'00000011' movwf tmpH movlw b'11101000' movwf tmpL call dig_count movf dignum,0 movwf M_byte call symb_out ;dot movlw b'00101110' movwf M_byte call symb_out ;counting 10^2 movlw b'00000000' movwf tmpH movlw b'01100100' movwf tmpL call dig_count movf dignum,0 movwf M_byte call symb_out ;counting 10^1 movlw b'00000000' movwf tmpH movlw b'00001010' movwf tmpL call dig_count movf dignum,0 movwf M_byte call symb_out ;counting 10^0 movlw b'00000000' movwf tmpH movlw b'00000001' movwf tmpL call dig_count movf dignum,0 movwf M_byte call symb_out stop: nop goto stop ; подпрограммы dig_count: ;dignum counting subrogram clrf dignum dig_count_start: movf varH,W movwf backupH movf varL,W movwf backupL call subtraction btfss STATUS,C ;проверка на факт заема goto dig_count_1 ;возник факт заема goto dig_count_2 ;нет заема dig_count_1: movf backupH,W movwf varH movf backupL,W movwf varL goto dig_count_end dig_count_2: incf dignum,1 goto dig_count_start dig_count_end: movlw b'00110000' addwf dignum,1 return subtraction: ;subtraction subprogram movf tmpL,W ;вычитаем число лежащее в регистре tmpLL из числа subwf varL,F ;в регистре varLL btfss STATUS,C ;проверка на факт заема decf varH,F ;возник факт заема: декремент регистра varLH movf tmpH,W ;нет заема: вычитаем число лежащее в регистре tmpLH из subwf varH,F ;числа в регистре varLH return ;выход из подпрограммы
-
Здравствуйте, товарищи! Я только начал изучать программирование МК с ассемблера для пиков. Прошёл светодиодную мигалку и взялся за вывод текста с PIC16F628A на ЖКИ 1602А. Но не заладилось. Взял готовую прошивку (сама она успешно запустилась), слегка подредактировал: задал соответствие DB0...DB7=RB0...RB7, вывел отдельные переменные address и symbol для адреса и символа ячейки на экране. Это выглядит следующим образом: MOVLW 0x00 ;вывод единицы в первую ячейку MOVWF address MOVLW 0b00110001 MOVWF symbol CALL znak при этом используются подпрограммы znak: MOVF address,0 ;вывод адреса MOVWF PORTB BCF RS CALL strob CALL delay_39us MOVF symbol,0 ;вывод символа MOVWF PORTB BSF RS CALL strob CALL delay_39us RETURN strob: BSF E NOP ;задержка 2 мкс NOP BCF E RETURN Второй день до поздней ночи перепроверяю прошивку, надёжность и правильность на бредборде, RC-цепочку на MCLR. Скачанный проект работает, а моя программа - нет. Прошу помочь в поиске ошибки в коде. lcd-test.asm
- 7 ответов
-
- PIC16F628A
- 1602A
-
(и ещё 4 )
C тегом:
-
В общем нужна библиотека для вывода текста с STM32RB100 на экран 1602a. Соединение -- через 4 или 8 ножки. Я вам даю микроконтроллер и дисплей, а вы ищите или пишите библиотеку для этого. В общем нужно чтобы заработало. Если дисплей не работает, то подобрать другой. Пишите сюда либо на почту yurolejniko@yandex.ru