Основная программа организующая работу микроконтроллера. Подпрограмма обслуживания прерывания от таймера

Страницы работы

Содержание работы

Приложения

Основная программа организующая работу микроконтроллера.

READYACP:     REG  P1.2

READYKEY:     REG  P1.3

TABLE:              EQU  0000h

PA:                       EQU 00h

PC:                       EQU 01h

PB:                       EQU 10h

ORG 0000h:

CONTROL:        AJMP PROGR

ORG 0003h:

INT0:                  AJMP TRANSMIT

ORG 0013h:

INT1:                  AJMP KEYBOARD

ORG 000Bh:

DELAYR:               AJMP DELAY

ORG 0010h

PROGR:    MOV IE, #85h

MOV IP, #01h

MOV SP,#71h

ACALL INIT

SETB TCON4

MOV 14, #7Bh длительность задержки 5 сек.

MOV 15, #03h

ACALL DELAY

CIKL:      ACALL WYWOD

JMP CIKL

Подпрограмма обслуживания прерывания от таймера, обеспечивает двенадцать одно измерение в минуту. Для того, что бы исключить лишние операции при выполнении основной программы, будем производить измерения только по приходу сигнала прерывания от таймера, т. е. По истечении 5 сек. 

Входные параметры: ячейка 14h  младший байт и ячейка 15h старший байт, резидентной памяти данных, количества отсчётов таймера.

Выходные параметры: ячейка 14h  младший байт и ячейка 15h старший байт, резидентной памяти данных, количества отсчётов таймера.

Используются: регистры R0, R1. Подпрограммы ACP, TEMPER, PEREADR.

ORG   0020h

DELAY:    CLR C                       ;

SET RS0                   ; включить 1 банк регистров

                      MOV A, #O1h          ;

MOV R0, 14             ; загрузка  количества отсчётов таймера.

MOV R1, 15             ;

ADD A, @R0               ;если младший байт полон то переход на увеличение

JC M1                       ; старшего

CJNE R0, #7Bh, M2 ; проверка, если количество отсчётов закончилось то переход

CJNE R1, #03h, M2  ; на снятие данных с АЦП, и обнуление количества отсчётов

MOV 14, #00h          ; таймера

MOV 15, #00h          ;

ACALL ACP             ;

ACALL TEMPER     ;

ACALL SRAVNENIE;

ACALL SREDN        ;

ACALL PEREADR   ;

AJMP M2                   ;

M1:   INC @R1                       ;

M2:   MOV TMOD, #01h    ; загрузка и запуск таймера

MOV TH0, #FFh        ;

MOV TL0, #FFh        ;

SETB TCON4            ;

MOV 14, R0               ; сохранение количества отсчётов

MOV 15, R1               ;

CLR RS0                    ; включить 0 банк регистров

RETI                           ;

Подпрограмма чтения данных из аналого-цифрового преобразователя.

Входные параметры: содержимое выходного регистра преобразователя.

Выходные параметры: ячейки резидентной памяти данных с 0018h по 0023h.

Используются:  регистры R0, R1, R2, R3.

ORG 0055h

ACP:     MOV R1, #18h                    ;  начальный адрес

MOV R2, #01h                    ;  количество датчиков у нас один

MOV R3, #00h                    ;  управляющее слово АЦП

CLR P1.3                             ; 

CLR P1.4                             ;  активизация АЦП

ANL P1, #FCh                     ; 

SLED:   MOV A, R3                         ;  вывод в АЦП управляющего слова

MOVX @R1, A                  ;

WAIT:   JNB READYACP, WAIT  ;  ожидание готовности данных из АЦП

MOVX A, @R1                  ; 

MOV R0, A                         ;  чтение Мл.Б в R0

MOV A, #03h                      ;

ANL A, P1                          ;  чтение СТ.Б в А

XCH A, R0                          ;

MOV @R1, A                     ;  запись Мл.Б по адресу в R1

INC R1                                ;

MOV A, R0                         ;

MOV @R1, A                     ;  запись Ст.Б по адресу в R1

INC R1                                ;  следующий адрес

INC R3                                ;  следующий датчик

DJNZ R2, SLED                 ; 

SETB P1.3                           ;

SETB P1.4                           ; отключение АЦП

RET                                     ;

SRAVNENIE

Подпрограмма переадресации значения измеренного давления, для его дальнейшего хранения в течении одного часа.

Входные параметры: регистры R4 младший байт среднего, R5 старший байт среднего. Ячейки резидентной памяти данных 12 последний адрес, 13 количество средних.

Выходные параметры: ячейки внешней памяти данных от 0010h до 0088h, а также ячейки резидентной памяти  12 последний адрес, 13 количество средних.

Используются: регистр R0, R4, R5.

ORG 00F0h

PEREADR:    SETB P1.3            ; активизация ВПД

CLR P1.4             ; 

INC 12h               ; следующий адрес хранения среднего

MOV A, 12h        ; запись Мл.Б среднего по адресу хранения

MOV R0, A         ;

MOV A, R4         ;

MOVX @R0, A   ;

INC R0                 ; 

MOV A, R5         ; запись Ст.Б среднего по адресу хранения

MOVX @R0, A   ;

DJNZ 13, SLED   ; число средних равно 60, если нет переход

MOV 13, #3Ch    ; выбор адреса хранения сначала

MOV 12, #0Fh     ; 

SETB P1.4           ; отключение ВПД

RET                      ; 

SLED:          MOV A, R0          ;

MOV 12,A           ;

SET P1.4              ; отключение ВПД

RET                      ;

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

Входные параметры: данные с клавиатуры.  

Выходные параметры: данные на дисплей. Используются подпрограммы работы с ЖК-дисплеем.

KEYBOARD:ACALL DELAY5; ЗАДЕРЖКА НА ДРЕБЕЗГ КОНТАКТОВ

SETB P1.4            ; активизация PIO

CLR P1.3             ; 

MOVX A,PB       ;

CPL A                  ;

ANL  A,#0Fh         ;

CJNZ  A,#01,K1  ;сравнение с кодами кнопок.

CJNZ  A,#02,K2  ;

CJNZ  A,#04,K3  ;

K1:  SETB P1.4            отключение PIO

ACALL OUTPUT1;вывод значения первого канала на дисплей.

RETI;

K2:  SETB P1.4           

ACALL OUTPUT2;

RETI;

K3:  SETB P1.4           

ACALL OUTPUT3;

RETI;

Похожие материалы

Информация о работе