Разработка микропроцессорной системы для управления некоторыми процессами в жилом доме, страница 5

Блок-схема алгоритма работы МПСУ представлена на рисунке 14.

Рисунок 14 – Блок-схема работы МПСУ

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

            list          p=16f873

            include<p16f873.inc>

            org          0x00

            goto start

            org          0x04

            goto interrupts

            org          0x05

;-----------------------------------------------------------------------------;

; начальная инициализация

;-----------------------------------------------------------------------------;

start

            ; reset портов

            bcf          STATUS,RP0             ; банк 0

            clrf         PORTB                       ; инициализация защёлок PORTB

            clrf         PORTC                       ; инициализация защёлок PORTC

            ; инициализация портов

            bsf          STATUS,RP0             ; банк 1

            movlw    b'10000001'                ; настройка линий PORTB на вход/выход

            movwf    TRISB

            movlw    b'10000000'                ; настройка линий PORTСB на вход/выход

            movwf    TRISC

            ; инициализация АЦП

            bcf          STATUS,RP0             ; банк 0

            clrf         PORTA                       ; инициализация защёлок PORTA

            bsf          STATUS,RP0             ; банк 1

            movlw    b'00111100'                ; входы RA0 и RA1 – аналоговые

                                                               ; входы RA2:RА5 – цифровые

            movwf    ADCON1

            bcf          STATUS,RP0             ; банк 0

            movlw    b'00000001'                ; включение АЦП

            movwf    ADCON0

            ; инициализация подсистемы прерываний

            movlw    b'11111000'                ; глобальное разрешение прерываний

                                                               ; разрешение прерываний от периф. модулей

                                                               ; разрешение прерывания по переполнению TMR0

                                                               ; разрешение внешнего прерывания INT

                                                               ; разрешение прерывания по изм. сигнала на вх. RB7

            movwf    INTCON

            bsf          STATUS,RP0             ; банк 1

            movlw    b'00101000'

            movwf    PIE1

            ; инициализация USART

            bsf          STATUS,RP0             ; банк 1

            movlw    b'00000100'                ; асинхронный высокоскоростной режим

                                                               ; восьмиразрядная передача

            movwf    TXSTA

            movlw    b'00110010'                ; скорость обмена данными 9600 бит/с

            movwf    SPBRG

            bcf          STATUS,RP0             ; банк 0

            movlw    b'10110000'                ; восьмиразрядный приём

            movwf    RCSTA

            ; инициализация таймера TMR0

            clrf         TMR0                         ; сброс TMR0

            bsf          STATUS,RP0             ; банк 1

            movlw    b'10000111'                ; выключить подтягивающие резисторы на PORTB

                                                               ; прерывания по заднему фронту сигнала на RB0

                                                               ; TMR0 инкрементируется от внеш. сигнала

                                                               ; предделитель 1:256

            movwf    OPTION_REG

;-----------------------------------------------------------------------------;

; обьявление переменных

;-----------------------------------------------------------------------------;

;-----------------------------------------------------------------------------;

; основная программа

;-----------------------------------------------------------------------------;

            bcf          STATUS,RP0

            btfss       PORTB,7                    ; проверка закрытия замка вх. двери

            bsf          PORTB,6                    ; сигнал на закрытие вх. двери

Begin

            проверить и обработать температуру воздуха

            btfss       PORTA,2                    ; проверка сигнала на включение света

            bcf          PORTB,5                    ; сигнал на включение освещения