Листинг программы

P=16F84

;Описание встроенных в контроллер ресурсов

#include <P16F84.INC>

config _XT_OSC & _WDT_OFF & _PWRTE_ON

F0 EQU 0equ 2

;Переменные и константы, используемые в программе

NumL EQU 0x0CEQU 0x0DEQU 0x0EEQU 0x0FEQU 0x10EQU 0x11EQU 0x13EQU 0x14EQU 0x15 EQU 0x16EQU 0x17 ;Три ячейки, содержат семисегментный код для вывода на индикатор

RAZR1 EQU 0x18

RAZR2 EQU 0x19

;В переменной FLAGS каждый бит сигнализирует о:

;0 - нажата кнопка вызова таймера

;1 - нажата кнопка установки таймера

;2 - необходимости обновления в экранном буфере оставшегося времени в таймере

;3 - произошло нажатие кнопки вызова таймера, необходимо подать короткий звуковой сигнал

;4 - закончилась выдержка времени таймера, необходимо подать условный звуковой сигнал

;5 - раз в секунду сигнализирует о необходимости считывания показаний DS1820

;6 - необходимости вывода десятичной точкиEQU 0x1A

J EQU 0x1BEQU 0x1CEQU 0x1DEQU 0x1EEQU 0x1F

T7SEG0 EQU 0x20SEG1 EQU 0x21SEG2 EQU 0x22_IND EQU 0x23

TEMP_READH EQU 0x24_READL EQU 0x25EQU 0x26EQU 0x27EQU 0x28_BYTE EQU 0x29

_N EQU 0x2AEQU 0x2B_BYTE EQU 0x2CEQU 0x2DEQU 0x2E

T_ALARM EQU 0x2F_ALARM EQU 0x30

CONSTANT DATA_PIN=7

;****** Начальная инициализация контроллера и программы *******STATUS, RP0 ;Устанавливаем страницу памяти 1TRISA ;Настраиваем все линии порта А и В на вывод

CLRF TRISB

GOTO BEGIN_PROG

;***** Точка входа в процедуру обработки прерываний от таймера*************INTCON, GIE ;Запрещаем прерыванияBACKUPW ;Сохраняем содержимое рабочего регистра

MOVF STATUS, 0 ;и регистра STATUSBACKUPS

;Программные таймерыTIME0, 1TIME0, 0.81 ;122STATUS, CL22TIME0TIME2, 1MOVF TIME2, 0

SUBLW.2 ;Устанавливаем период измерения температуры равным 1 сек.

BTFSC STATUS, CL26TIME2

BSF FLAGS, 5BTFSS FLAGS, 0 ;Корректировка таймера возможна только при нажатии кнопкиL22 ;вызова таймераFLAGS, 1 ;Если нажата кнопка установки таймера

GOTO L22FLAGS, 2FLAGS, 7T_ALARM, 1

MOVF T_ALARM, 00x7D ;Если достиг 125 градусов, сбрасываем до -55 градусов

BTFSS STATUS, ZL220xC9

MOVWF T_ALARM

;Опрос состояния кнопок управленияBCF PA, 0 ;Флаги, показывающиеFLAGS, 1 ;состояние кнопок.PA, 1 ;Выключаем индикаторыPA, 2

BSF PA, 4PA, 0PORTA

BSF STATUS, RP0 ;Устанавливаем страницу памяти 1TRISB, 5 ;Разряды порта В, подключенные к кнопкам настраиваем на вводTRISB, 6STATUS, RP0 ;Устанавливаем страницу памяти 0PORTB, 6 ;Устанавливаем флаги в зависимости от состояния кнопок

GOTO L23FLAGS, 0.255

MOVWF T_INDDECFSZ T_IND

GOTO L24FLAGS, 0FLAGS, 7SEEPROM

BCF FLAGS, 7BTFSS PORTB, 5FLAGS, 1

BSF STATUS, RP0 ;Устанавливаем страницу памяти 1TRISB, 5 ;Разряды порта В, подключенные к кнопкам настраиваем на выводTRISB, 6STATUS, RP0 ;Устанавливаем страницу памяти 1

;Динамическая индикация содержимого RAZR0, RAZR1, RAZR2.0 ;Отображаем разряд 0I, 0

BTFSS STATUS, ZL2B'10000000'

ANDWF PORTB, 1 ;Очищаем разряды порта, подключенные к индикаторуRAZR0, 0PORTB, 1 ;Выводим отображаемую цифруPA, 0 ;Включаем соответствующий разряд индикатора

MOVF PA, 0PORTAL4

L2 MOVLW.1 ;Отображаем разряд 1I, 0

BTFSS STATUS, ZL3B'10000000'

ANDWF PORTB, 1 ;Очищаем разряды порта, подключенные к индикаторуRAZR1, 0PORTB, 1 ;Выводим отображаемую цифру

BSF PA, 1

BTFSC FLAGS, 6

BCF PA, 4

BTFSS FLAGS, 6PA, 4PA, 0PORTAL4MOVLW B'10000000'PORTB, 1 ;Очищаем разряды порта, подключенные к индикаторуRAZR2, 0PORTB, 1 ;Выводим отображаемую цифруPA, 2PA, 0PORTA

L4 INCF I, 1.3 ;Обнулить счетчик разрядов, если достиг 3

SUBWF I, 0STATUS, ZI

;Завершение обработки прерывания от таймераBCF INTCON, RTIF ;Сброс флага прерывания от таймераBACKUPS, 0STATUSBACKUPW, 0 ;Восстановление рабочего регистраINTCON, GIE ;Разрешение прерываний;Возврат из обработки прерывания

;****** Продолжение начальной инициализации *****************_PROGB'01000011' ;Подключаем определитель к таймеру и устанавливаем коэффициентOPTION_REG ;деления 1:16, сигнал на таймер от внутреннего генератораSTATUS, RP0 ;Устанавливаем страницу памяти 0

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

Прочтите также:

Разработка схемы преобразователя двоичного кода в код индикатора
Задачей курсовой работы является разработка схемы преобразователя двоичного кода в код индикатора, который, в свою очередь, состоит из семи сегментов, отображающих арабские цифры и латин ...

Разработка источника питания с защитой от перегрузок
Разработать источник питания с защитой от перегрузок и цифровым отсчётом тока нагрузки: Все напряжения 50 В стабилизированы: Uпул 1 мВ. Напряжение +300 В стабилизировано: ...

Определение и исследование спектров сигнала
К числу важных областей науки и техники, достижения которых непосредственно способствуют росту материального и культурного уровня общества, принадлежит радиотехника. Р ...

Основные разделы

2020 © Все права защищены! >> www.techeducator.ru