;: Программа отображающая v1.06 ;: ;: Предназначена для замены ЖК модулей со ;: встроенным контроллером типа HT1611, HT1613 ;: HT1616 и им подобных при работе с ;: управляющим контроллером в качестве ;: устройства вывода инфы. ;: Такие ф-ции как таймер не реализованы! ;: ;: Можно применить как к готовому устройству ;: чтобы была возможность наблюдать показания ;: прибора в темноте, или к разрабатываемому ;: устройству. ;: ;: Применен алгоритм коррекции данных при ;: возникновении помех по входу clk. ;: Загрузка данных на индикацию производится в ;: промежутки между поступлениями кодов на ;: вход, что позволило устранить подсветку ;: при загрузке новых данных. Но это наложило ;: небольшие дополнительные временные ограни- ;: чения: 1. простой между регенерациями >200мс ;: 2. паузы между символами < 2мс ;: (даны не точные значения, они зависят от ;: кварца) ;: ;: кварц =4 МГц ;: PA0 -clk (через инвертор на транзисторе) ;: PA1 -dta (через инвертор на транзисторе) ;: PA2 яркость (1 - полная, 0 - малая 1/4) ;: PA3 не поюзан ;: PA4 не поюзан ;: PB0 clk (выход на 555ИР8 -образ символа) ;: PB1 dta (выход на 555ИР8 -образ символа) ;: PB0 d1 (выход1 на 555ИД10-номер разряда) ;: PB1 d2 (выход2 на 555ИД10-номер разряда) ;: PB2 d4 (выход4 на 555ИД10-номер разряда) ;: PB3 d8 (выход8 на 555ИД10-номер разряда) ;: PB4 код режима ;: PB5 код режима ;: PB6 не поюзан ;: PB7 не поюзан ;: ;: pb4 pb5 bit ;: 1 1 4 HT1611, HT1613, HT1616 mode=0 (код символа) ;: 1 0 8 Sanchos-iz format (образ символа) ;: 0 x 5 HT1616 mode=1 (код символа) ;: ;: Автор: Измайлов Александр sanchos_iz@mail.ru ;: ;############################################################################# ;# область векторов прерываний процессора # ;############################################################################# jmp start ;<0> Начальный пуск программы jmp count_wdt ;<1> Сторожевой таймер rst ;<2> выход за границу стека jmp count ;<3> Таймер A nop ;<8> не используется nop ;<5> не используется nop ;<6> Порт A nop ;<7> Порт B (прерывания не используются) nop ;<8> nop ;<9> nop ;<10> nop ;<11> nop ;<12> nop ;<13> nop ;<14> rst ;<15>Завершение записи в флэш ;############################################################################# ;# Таблица кодов знакогенератора # ;############################################################################# code: .byte 000h ; 0 space .byte 006h ; 1 1 .byte 05bh ; 2 2 .byte 04Fh ; 3 3 .byte 066h ; 4 4 .byte 06Dh ; 5 5 .byte 07Dh ; 6 6 .byte 007h ; 7 7 .byte 07Fh ; 8 8 .byte 06Fh ; 9 9 .byte 03fh ; 10 0 .byte 00011000b ; 11 right .byte 00001100b ; 12 left .byte 01110001b ; 13 F .byte 01110011b ; 14 P .byte 01000000b ; 15 - .byte 01110111b ; 16 A a .byte 01111100b ; 17 b f b .byte 00111001b ; 18 C g .byte 01011110b ; 19 d e c .byte 01111001b ; 20 E d h .byte 00110100b ; 21 h .byte 01110110b ; 22 H .byte 00111000b ; 23 L .byte 01011100b ; 24 o .byte 01100111b ; 25 q .byte 01010000b ; 26 r .byte 00011100b ; 27 u .byte 00111110b ; 28 U .byte 01101110b ; 29 У .byte 01010000b ; 30 г .byte 01000100b ; 31 -| .even ; ; ;############################################################################# ;# Точка старта # ;############################################################################# start: ; jsr init ;инициализация портов и таймера jsr delay ; jsr delay ; ldr #c,40h ; ldr #a,50h ;загрузка movl c3,0 ;высокий уровень loop: ; stie ; nop ;ожидание прерывания nop ; nop ; nop ; nop ; clie ; ldr #c,40h ; ldr #a,50h ; bttl d1,0010b ; jeq $100 ;если высокий cmpl c3,128 ; jnz loop ; jsr zagruz ; movl c3,0 ; jmp loop ; $100: movl c3,128 ; jmp loop ; ; ;############################################################################# ;# Подпрограмма загрузки кода символа # ;############################################################################# zagruz: ; ldr #a,50h ; ldr #c,40h ; dec c0 ; bttl d1,0001b ; jne $10 ; stc ; $10: rlc c1 ; cmpl c0,0 ; jz $2 ;если 0 jmp $3 ; $2: ; ; bich c1,1111b ; btth d2,0010b ;порт pb5 jeq $202 ;не меняем если образ ; mdal c5,code ;грузим указатель mdah c4,code ; add c5,c1 ;+ (смещение) mtpr #6,c5 ;непосредственная адресация к памяти mtpr #7,c4 ; mov c1,d7 ; $202: ; ; ldr #c,58h ; clr c2 ;счет mov c1,c0 ; mov c0,a7 ; ldr #c,40h ;загрузка в буфер mov a7,a6 ; mov a6,a5 ;и сдвиг влево mov a5,a4 ; mov a4,a3 ; mov a3,a2 ; mov a2,a1 ; mov a1,a0 ; mov a0,c1 ; movl c0,4 ; jsr num_bit clr c1 ; $3: rts ; ; ;############################################################################# ;# Загрузка из буфера в сегмент индикации # ;############################################################################# zagruz1: ; ldr #a,50h ; ldr #c,60h ; mov c0,a0 ; mov c1,a1 ; mov c2,a2 ; mov c3,a3 ; mov c4,a4 ; mov c5,a5 ; mov c6,a6 ; mov c7,a7 ; ldr #a,58h ; ldr #c,68h ; mov c0,a0 ; mov c1,a1 ; ldr #c,40h ; rts ; ; ;############################################################################# ;# Какое кол-во битов будем грузить # ;############################################################################# num_bit: ; movl c0,4 ; btth d2,0001b ;порт pb4 jne $10 ;если 0 movl c0,5 ; jmp $20 ; $10: ; btth d2,0010b ;порт pb5 jne $20 ; movl c0,8 ; $20: ; rts ; ;############################################################################# ;# Таймер # ;############################################################################# count: ; bich d4,1110b ;обнуляeм для следующего счета rti ;выходим ; ;############################################################################# ;# По срабатыванию WDT сканируем индикатор # ;############################################################################# count_wdt: ; clie ; ldr #d,18h ; movl d5,0aah ;wdt movl d5,01010110b ;1/x ldr #d,00h ; push #a ; ldr #a,58h ; ldr #c,40h ; inc a2 ; cmpl a2,127 ; jnz $100 ; clr a2 ; movl c0,4 ; jsr num_bit ; clr c1 ; jsr zagruz1 ; $100: ; jsr led_scan_s ; pop #a ; ldr #c,40h ; stie ; rti ; ; ;############################################################################# ;# Задержка # ;############################################################################# delay: ; push #c ; ldr #c,68h ; movl c5,255 ; $1: nop ; dec c5 ;уменьшение -1 jnz $1 ;переход 1 pop #c ; rts ; ;############################################################################# ;# Инилка # ;############################################################################# init: ldr #b,18h ;сегмент регистров конфигурации портов ldr #d,0 ;сегмент порты ;формирование конфигурации порта A movl b1,00011011b ;заполнение регистра управления порта для ;формирования конфигурации порта в ;автоинкрементном режиме movl b1,00000000b ;3-сканирующие на вход/выход movl b1,00000000b ;4-активный выход movl b1,00011111b ;5-резисторы отключены movl b1,00000000b ;6-прерывания / movl b1,00000000b ;7-прерывания запрещены ;формирование конфигурации порта B movl b2,00011011b ;заполнение регистра управления порта для ;формирования конфигурации порта в ;автоинкрементном режиме movl b2,00001111b ;3-все вход/выход movl b2,00001111b ;4-активный выход movl b2,11110000b ;5-резисторы отключены movl b2,00000000b ;6-прерывания запрещены movl b2,00000000b ;7-прерывания запрещены ; movl b5,0aah ;wdt movl b5,01010110b ;1/x rts ;возврат ; ;############################################################################# ;# Led scan for 1533IR8 # ;############################################################################# led_scan_s: ; ldr #a,058h ;грузим ldr #5,0c0h ;указатели ; bicl d2,0001b ; bisl d2,1110b ; ; inc a3 ; cmpl a3,4 ; jne $22 ;если ещё нет clr a3 ;иначе чистим ldr #a,68h ;и inc a7 ;переключаем сканирующую $22: ; ldr #a,68h ; ; cmpl a7,10 ;10 разрядов jne $10 ; clr a7 ; $10: movl a6,060h ;вычисляем где add a6,a7 ;лежат данные mtpr #4,a6 ; mov a3,d6 ; ; movl a4,8 ; $3: bicl d2,0001b ; nop ; shl a3 ; jc $1 ; bicl d2,0010b ; $1: jnc $2 ; bisl d2,0010b ; $2: nop ; bisl d2,0001b ; dec a4 ; jnz $3 ; ; mov d2,a7 ;загоняем номер разряда ; bttl d1,0100b ;порт pa2 jne $24 ;переход если 1 ldr #a,58h ; cmpl a3,0 ; jeq $24 ; movl d2,15 ; $24: ; rts ;выход ; ;############################################################################# ;# # ;############################################################################# sanchos: ; 87654321b ; ldr #c,060h ;обращение к адресу movl c7,01000110b ;-| movl c6,00111001b ;С movl c5,01110111b ;А movl c4,01110110b ;Н movl c3,01100110b ;Ч movl c2,00111111b ;О movl c1,00111001b ;С movl c0,01110000b ;|- rts ;возврат .END ;