Dalrate.ru

Построение рабочей локальной сети

Подпрограмма двоично-десятичной коррекции

; КОНТЕКСТА

;-

Подпрограмма часов

Данная подпрограмма осуществляет счет и вывод на индикацию (в случае включения режима отображения текущего времени) текущего времени. Кроме того подпрограмма проверяет совпадение текущего времени с временем начала и поддержания температуры. В случае их совпадения подпрограмма включает либо выключает режим поддержания температуры. Для счета используется 6 регистров-счетчиков:

SEC_L - счетчик единиц секунд;

SEC_H - счетчик десятков секунд;

MIN_L - счетчик единиц минут;

MIN_H - счетчик десятков минут;

HOUR_L - счетчик единиц часов;

HOUR_H - счетчик десятков часов.

Счетчики SEC_L, MIN_L, HOUR_L инкрементируются от 0х00 до 0х0А. При достижении 0х0А счетчики сбрасываются. Счетчики SEC_H и MIN_H инкрементируются от 0х00 до 0х06. При достижении 0х06 счетчики сбрасываются. Счетчик HOUR_H инкрементируется от 0х00 до 0х02. Счетчик сбрасывается, когда в нем записано значение 0х02, а счетчик HOUR_L досчитал до 0х04.

Листинг подпрограммы часов приведен ниже.

;- ; ПОДПРОГРАММА ТАЙМЕРА PIR1, CCP1IF ; СБРОСИТЬ ФЛАГ ПРЕРЫВАНИЯ ОТ МОДУЛЯ CCP1

;-

; СЧЕТЧИК ЕДИНИЦ СЕКУНД SEC_L, F ; ИНКРЕМЕНТИРОВАТЬ МЛАДШИЙ СЧЕТЧИК СЕКУНД SEC_L, W ; СЧЕТЧИК ДОСЧИТАЛ ДО 10 0x0A STATUS, Z CURR_TIME ; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ

; ТЕКУЩЕГО ВРЕМЕНИ НА ИНДИКАЦИЮ SEC_L ; ДА - ОЧИСТИТЬ МЛАДШИЙ СЧЕТЧИК СЕКУНД

;-

; СЧЕТЧИК ДЕСЯТКОВ СЕКУНД SEC_H, F ; ИНКРЕМЕНТИРОВАТЬ СТАРШИЙ СЧЕТЧИК СЕКУНД STATUS, Z SEC_H, W ; СЧЕТЧИК ДОСЧИТАЛ ДО 6 0x06 STATUS, Z CURR_TIME ; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ

; ТЕКУЩЕГО ВРЕМЕНИ НА ИНДИКАЦИЮ SEC_H ; ДА - ОЧИСТИТЬ СТАРШИЙ СЧЕТЧИК СЕКУНД

;-

; СЧЕТЧИК ЕДИНИЦ МИНУТ MIN_L, F ; ИНКРЕМЕНТИРОВАТЬ МЛАДШИЙ СЧЕТЧИК МИНУТ STATUS, Z MIN_L, W ; СЧЕТЧИК ДОСЧИТАЛ ДО 10 0x0A STATUS, Z CURR_TIME ; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ

; ТЕКУЩЕГО ВРЕМЕНИ НА ИНДИКАЦИЮ MIN_L ; ДА - ОЧИСТИТЬ МЛАДШИЙ СЧЕТЧИК МИНУТ

;-

; СЧЕТЧИК ДЕСЯТКОВ МИНУТ MIN_H, F ; ИНКРЕМЕНТИРОВАТЬ СТАРШИЙ СЧЕТЧИК МИНУТ STATUS, Z MIN_H, W ; СЧЕТЧИК ДОСЧИТАЛ ДО 6

XORLW 0x06 STATUS, Z

GOTO CURR_TIME ; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ

; ТЕКУЩЕГО ВРЕМЕНИ НА ИНДИКАЦИЮ MIN_H ; ДА - ОЧИСТИТЬ СТАРШИЙ СЧЕТЧИК МИНУТ

;-

; СЧЕТЧИКИ ЧАСОВ HOUR_L, F ; ИНКРЕМЕНТИРОВАТЬ МЛАДШИЙ СЧЕТЧИК ЧАСОВ STATUS, Z HOUR_H, W ; СТАРШИЙ СЧЕТЧИК ДОСЧИТАЛ ДО 2 0x02 STATUS, Z M3 ; НЕТ - ПЕРЕХОД НА ПРОВЕРКУ МЛАДШЕГО СЧЕТЧИКА

BCF STATUS, Z HOUR_L, W 0x04 STATUS, Z M3 STATUS, Z HOUR_L ; ДА - ОЧИСТИТЬ МЛАДШИЙ СЧЕТЧИК ЧАСОВ

CLRF HOUR_H CURR_TIME ; ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ

; ТЕКУЩЕГО ВРЕМЕНИ НА ИНДИКАЦИЮ HOUR_L, W 0x0A ; СЧЕТЧИК ДОСЧИТАЛ ДО 10 STATUS, Z CURR_TIME ; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ

; ТЕКУЩЕГО ВРЕМЕНИ НА ИНДИКАЦИЮ HOUR_L ; ДА - ОЧИСТИТЬ МЛАДШИЙ СЧЕТЧИК ЧАСОВ HOUR_H ; ИНКРЕМЕНТИРОВАТЬ СТАРШИЙ СЧЕТЧИК ЧАСОВ

;-_TIME ; ПОДПРОГРАММА УПРАВЛЕНИЯ ВЫВОДОМ ТЕКУЩЕГО

; ВРЕМЕНИ НА ИНДИКАЦИЮ

;-

; ВКЛЮЧЕНИЕ/ВЫКЛЮЧЕНИЕ РЕЖИМА ПОДДЕРЖАНИЯ ТЕМПЕРАТУРЫ

BCF STATUS, Z START_ML, W MIN_L, W STATUS, Z M4

STATUS, Z START_MH, W MIN_H, W STATUS, Z M4

STATUS, Z START_HL, W HOUR_L, W STATUS, Z M4

STATUS, Z START_HH, W HOUR_H, W STATUS, Z M4

FLAG_R1,0 STATUS, Z STOP_ML, W MIN_L, W STATUS, Z M5

STATUS, Z STOP_MH, W MIN_H, W STATUS, Z M5

STATUS, Z STOP_HL, W HOUR_L, W STATUS, Z M5

STATUS, Z STOP_HH, W HOUR_H, W STATUS, Z M5

FLAG_R1,0

;- FLAG_R, 6 ; ВКЛЮЧЕН РЕЖИМ ОТОБРАЖЕНИЯ ТЕКУЩЕГО ВРЕМЕНИ INT_SOURCE ; НЕТ - ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ

; -

; ВКЛЮЧЕНИЕ/ВЫКЛЮЧЕНИЕ РАЗДЕЛЯЮЩЕЙ ТОЧКИ POINT, 2 POINT, 1 ; ДЕЦИМАЛЬНАЯ ТОЧКА ВКЛЮЧЕНА $+3 POINT, 1 ; ДА - ВЫКЛЮЧИТЬ ТОЧКУ $+2 POINT, 1 ; НЕТ - ВКЛЮЧИТЬ ТОЧКУ

; -

MOVF MIN_L, W IND_0 MIN_H, W IND_1 HOUR_L, W IND_2 HOUR_H, W IND_3

GOTO INT_SOURCE ; НЕТ - ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ

;-

Подпрограмма обработки прерываний от таймера

TMR Перейти на страницу: 1 2 3 4 5 6 7

Популярное:

Изготовление цифрового прибора для контроля осанки и зрения при работе на персональном компьютере Современную жизнь невозможно представить без электроники и ее важнейшей отрасли - микроэлектроники. В любом месте - на работе и в быту - изделия из электроники окружают человека. Она трудится повсюду - в сверхглубоких скважинах и в подводных аппаратах - батискафах, в самолетах и космических кораблях, на атомных электростанциях и рад ...