.
#define _E1 LATC,1 ; #define _E2 LATC,2 ; #define E1 Krist,1 ; #define E2 Krist,2 ; #define Stob_kr0 LATC,4 ; #define Stob_kr LATC,5 ; #define D1 LATC,6 ; #define E LATC,7 ; #define Port PORTC ; ;----------------------------------------------------------------------------- ; назначение ;----------------------------------------------------------------------------- CBLOCK Temp ; Temp_2 Krist Data_1 Temp_1 Reg ENDC org 0x000 goto START START clrf TRISC ; Порт на выход clrf PORTC ; Очистить порт bsf Stob_kr ; =Необходимая процедура bsf Stob_kr0 ; для сброса защелок= bcf Stob_kr ; = bcf Stob_kr0 ; = ;------------------------------------------------------------------ ; инициализация индикатора ;------------------------------------------------------------------ bsf E1 ; Включить оба кристалла bsf E2 ; movlw 3Eh ; Команда "выключить индикатор" movwf Data_1 ; call Graf_18_1 ; Записать управ. команду movlw 3Fh ; Команда "включить индикатор" movwf Data_1 ; call Graf_18_1 ; Записать управ. команду movlw .4 ; =Задержка 14мкс ( при кварце 4 МГц movwf Temp ; при другой частоте тактового генератора m_1 decfsz Temp ; изменить задержку до 14 мкс.= goto m_1 ;
;---------------------------------------------------------------------------------- ;ПП работы граф. индикатора на один порт. До вызова ПП необходимо выбрать кристалл ;индикатора и записать необходимое значение в регистр "Data_1". В случае передачи ;данных вызывается ПП "Zap_dan". ;---------------------------------------------------------------------------------- Graf_18_1 call Vyb_kr ; Записываем в защелку выбранный кристалл movf Data_1,0 ; Значение в W andlw 0Fh ; Сбрасываем ст.полубайт W movwf Temp_1 ; Копируем результат в регистр movf Port,0 ; Значение порта в W andlw 0F0h ; Сбрасываем мл.полубайт xorwf Temp_1 ; Операция "Или" movff Temp_1,Port ; Копируем в порт bsf Stob_kr0 ; =Строб защелки выбора мл. nop ; bcf Stob_kr0 ; полубайта= movf Data_1,0 ; Значение в W andlw 0F0h ; Сбрасываем мл. полубайт movwf Temp_1 ; Результат в регистр swapf Temp_1 ; Меняем местами полубайты в регистре movf Port,0 ; Значение порта в W andlw 0F0h ; Сбрасываем мл.полубайт xorwf Temp_1 ; Операция "Или" movff Temp_1,Port ; Копируем в порт bsf E ; =Строб записи nop ; bcf E ; в индикатор clrf Port ; Очистка порта. return ; Возврат из ПП ;---------------------------------------------- ;выбор кристала ;---------------------------------------------- Vyb_kr btfsc E1 ; Выбран 1 кристал индикатора? bsf _E1 ; Да.Устанавливаем бит. btfsc E2 ; Выбран 2 кристал индикатора? bsf _E2 ; Да.Устанавливаем бит. bsf Stob_kr ; =Строб защелки выбора nop ; bcf Stob_kr ; кристалла= return ;---------------------------------------------- ;запись данных ;---------------------------------------------- Zap_dan bsf D1 ; установить признак запись данных call Graf_18_1 ; запись команд bcf D1 ; убрать признак запись данных return ;
Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2021 © ChipMK.ru
![]() |
|