Данная подпрограмма осуществляет конвертирование двоичного кода, предварительно записанного в буферных регистрах TEMP_TL TEMP_TH в двоично-десятичный код, записываемый в регистры индикации IND_0, IND_1, IND_2, IND_3.
Листинг подпрограммы приведен ниже.
;-_DEC ; ПОДПРОГРАММА ДВОИЧНО-ДЕСЯТИЧНОЙ КОРРЕКЦИИ
;-
; РАСПРЕДЕЛЕНИЕ ТЕТРАД РЕГИСТРОВ TEMP_TL И TEMP_TH ПО РЕГИСТРАМ IND_0 - IND_3
MOVF TEMP_TL, W 0x0F
MOVWF IND_0 ; ПОМЕСТИТЬ МЛАДШУЮ ТЕТРАДУ TEMP_TL В IND_0
SWAPF TEMP_TL, W 0x0F
MOVWF IND_1 ; ПОМЕСТИТЬ СТАРШУЮ ТЕТРАДУ TEMP_TL В IND_1
MOVF TEMP_TH, W 0x0F
MOVWF IND_2 ; ПОМЕСТИТЬ МЛАДШУЮ ТЕТРАДУ TEMP_TH В IND_2
SWAPF TEMP_TH, W 0x0F
MOVWF IND_3 ; ПОМЕСТИТЬ СТАРШУЮ ТЕТРАДУ TEMP_TH В IND_3
;-
; КОРРЕКЦИЯ РЕЗУЛЬТАТА STATUS, Z STATUS, C
MOVLW 0x0A IND_0, W STATUS, C
GOTO $+5 STATUS, Z ; ЕСЛИ ЗНАЧЕНИЕ IND_0 НЕ МЕНЬШЕ 0x0A $+3 IND_0 ; В РЕГИСТР IND_0 ЗАПИСАТЬ РАЗНОСТЬ ЕГО СОДЕРЖИМОГО И
; 0x0A IND_1, F ; И УВЕЛИЧИТЬ НА 1 СОДЕРЖИМОЕ IND_1
BCF STATUS, Z STATUS, C
MOVLW 0x0A ; ИНАЧЕ ЗНАЧЕНИЯ РЕГИСТРОВ ОСТАВИТЬ БЕЗ ИЗМЕНЕНИЯ
SUBWF IND_1, W STATUS, C
GOTO $+5 STATUS, Z ; ЕСЛИ ЗНАЧЕНИЕ IND_1 НЕ МЕНЬШЕ 0x0A $+3 IND_1 ; В РЕГИСТР IND_1 ЗАПИСАТЬ РАЗНОСТЬ ЕГО СОДЕРЖИМОГО И
; 0x0A IND_2, F ; И УВЕЛИЧИТЬ НА 1 СОДЕРЖИМОЕ IND_2
BCF STATUS, Z STATUS, C
MOVLW 0x0A ; ИНАЧЕ ЗНАЧЕНИЯ РЕГИСТРОВ ОСТАВИТЬ БЕЗ ИЗМЕНЕНИЯ
SUBWF IND_2, W STATUS, C
GOTO $+5 STATUS, Z ; ЕСЛИ ЗНАЧЕНИЕ IND_2 НЕ МЕНЬШЕ 0x0A $+3 IND_2 ; В РЕГИСТР IND_2 ЗАПИСАТЬ РАЗНОСТЬ ЕГО СОДЕРЖИМОГО И
; 0x0A IND_3, F ; И УВЕЛИЧИТЬ НА 1 СОДЕРЖИМОЕ IND_3
;-
Обработка прерываний
Вектор прерываний находится по адресу 0х04.
Обработчик прерываний включает в себя следующие подпрограммы:
1. Подпрограмма сохранения контекста.
2. Подпрограмма определения источника прерывания.
. Подпрограмма часов.
. Подпрограмма обработки прерываний от таймера TMR2.
. Подпрограмма обработки прерываний по входу INT.
. Подпрограмма обработки прерываний по входам <RB4: RB7>.
. Подпрограмма приема / передачи данных через USART.
. Подпрограмма восстановления контекста.
Подпрограмма сохранения контекста
При переходе на обработку прерываний необходимо сохранять текущее содержимое аккумулятора и регистра STATUS, чтобы при возврате из прерывания программа могла продолжать нормальную работу.
Ниже приведен листинг подпрограммы, осуществляющей сохранение контекста во временные регистры W_TEMP и STATUS_TEMP. Регистр STATUS_TEMP определен в 0-м банке по адресу 0х39, а регистр W_TEMP - в 0-м банке по адресу 0х3А и в 1-м банке по адресу 0хВА.
;-
; СОХРАНЕНИЕ АККУМУЛЯТОРА И РЕГИСТРА STATUS STATUS, RP0 ; ОПРЕДЕЛЕНИЕ ТЕКУЩЕГО БАНКА RP0_CLR STATUS, RP0 ; УСТАНОВИТЬ БАНК 0 W_TEMP ; СОХРАНИТЬ АККУМУЛЯТОР STATUS, W STATUS_TEMP ; СОХРАНИТЬ РЕГИСТР STATUS STATUS_TEMP, 5 ; ВОССТАНОВИТЬ ЗНАЧЕНИЕ БИТА RP0 $+4_CLR W_TEMP ; СОХРАНИТЬ АККУМУЛЯТОР
SWAPF STATUS, W STATUS_TEMP ; СОХРАНИТЬ РЕГИСТР STATUS
;-
Подпрограмма определения источника прерывания
Данная подпрограмма по состоянию флагов прерываний в регистрах PIR1 и INTCON определяет источник прерывания и осуществляет вызов соответствующей подпрограммы обработки.
Листинг подпрограммы приведен ниже.
;-
; ОПРЕДЕЛЕНИЕ ИСТОЧНИКА ПРЕРЫВАНИЯ
INT_SOURCE STATUS ; ОЧИСТИТЬ РЕГИСТР STATUS
BTFSC PIR1, CCP1IF ; ЕСЛИ ПРЕРЫВАНИЕ ОТ МОДУЛЯ CCP1 CLOCK ; ПЕРЕХОД НА ПОДПРОГРАММУ ЧАСОВ
PIR1, TMR2IF ; ЕСЛИ ПРЕРЫВАНИЕ ОТ ТАЙМЕРА TMR2 INT_TMR2 ; ПЕРЕХОД НА ПОДПРОГРАММУ ОБРАБОТЧИКА ПРЕРЫВАНИЙ ОТ
; TMR2
INTCON, INTF ; ЕСЛИ ПРЕРЫВАНИЕ ПО ВХОДУ INT INT_INT ; ПЕРЕХОД НА ПОДПРОГРАММУ ОБРАБОТЧИКА ПРЕРЫВАНИЙ ПО
; INT
INTCON, RBIF ; ЕСЛИ ПРЕРЫВАНИЕ ПО ВХОДАМ <RB4:RB7> INT_RB ; ПЕРЕХОД НА ПОДПРОГРАММУ ОБРАБОТЧИКА ПРЕРЫВАНИЙ ПО
; ВХОДАМ <RB4:RB7> PIR1, RCIF ; ЕСЛИ ПРЕРЫВАНИЕ ОТ ПРИЕМНИКА USART SERIAL_PRT ; ПЕРЕХОД НА ПОДПРОГРАММУ ПРИЕМА/ПЕРЕДАЧИ
; ДАННЫХ ЧЕРЕЗ USART END_INT ; ИНАЧЕ ПЕРЕХОД НА ПОДПРОГРАММУ ВОССТАНОВЛЕНИЯ
Самое читаемое:
Конструкторско-технологическое проектирование печатной платы
печатная плата
Проектирование печатных плат (ПП) представляет трудоемкий, но очень
важный процесс. Для того, чтобы обеспечить функционирование электронной
аппаратуры (ЭА) необходимы не только схемотехнические решения, функциональная
точность, надежность, но и учет влияния внешней среды, конструктивных,
эксплуатационных требований, пр ...