Смекни!
smekni.com

Микропроцессорная система охранной сигнализации автомобиля (стр. 9 из 12)

Процедура INKEY начинается с загрузки счетчика сбросов SSBR числом 114. Затем разрешается прерывание от таймера и запускается сам таймер с предделителем на 8. С помощью него задается время, отведенное на набор кода. Оно равно примерно 1 минуту. Далее проверяются ячейки памяти NK0, NK1, NK2 и NK3.

Если во всех их содержатся нулевые значения (сразу после инициализации), то подпрограмма переходит к начальному вводу ключа. Делается это так. Производится опрос клавиатуры и ожидается нажатие клавиши с кодом 11 «Е». Как только это произошло, выдается сигнал на включение светодиода, загружается счетчик нажатий клавиш SN числом 4. После осуществляется ввод четырех первых кодов и последовательный занос их в ячейки памяти NK0, NK1, NK2 и NK3. После четырех нажатий выдается сигнал на выключение светодиода, устанавливается флажок KVER=1 и производится выход из подпрограммы.

Если в ячейках памяти NK0, NK1, NK2 и NK3 содержится ненулевой ключ, то подпрограмма переходит к вводу ключа и его проверки. Делается это так. Производится опрос клавиатуры и ожидается нажатие клавиши с кодом 10 «Т». Как только это произошло, выдается сигнал на включение светодиода и производится последовательный ввод ключа в ячейки памяти VK0, VK1, VK2 и VK3, до нажатия клавиши с кодом 11 «Е». После нажатия этой клавиши нажатий.

Рис.5.10. Схема алгоритма подпрограммы INKEY.


выдается сигнал на выключение светодиода, запускается процедура проверки PROV и происходит выход из подпрограммы.

Структурная схема алгоритма подпрограммы PROV приведена на рис.5.11.

Рис.5.11. Структурная схема алгоритма подпрограммы PROV

В ней производится последовательное сравнение содержимого ячеек памяти VK0, VK1, VK2 и VK3 с содержимым ячеек NK0, NK1, NK2 и NK3 соответственно. При совпадении содержимых устанавливается флажок KVER=1, в противном случае KVER=0 и происходит выход из подпрограммы.

Прерывания от таймера обрабатывает подпрограмма OPTMR1. Структурная схема алгоритма приведена на рис.5.12. Она начинается с уменьшения счетчика сброса SSBR на единицу. Далее следует проверка на ноль. Если SSBR=0, то осуществляется запрет прерывания от таймера и переход на метку MET1, в противном случае происходит запуск таймера с предделителем на 8 и выход из подпрограммы.

Рис.5.12. Структурная схема обработки прерывания от таймера TMR1

Структурная схема подпрограммы работы с клавиатурой RUNKEY приведена на рис.5.13. Начинается подпрограмма с опроса клавиатуры. Затем осуществляется анализ кода нажатой клавиши.

Если он равен 10, то это значит, что нажата клавиша «Т» - «передача». При этом подается сигнал на включение светодиода, запрещается прерывания от детектора правильного кода, включается передатчик, осуществляется передача идентификационного номера автомобиля, для контроля доступа на охраняемую автостоянку, выключается передатчик, разрешаются прерывания от детектора правильного кода, включается подпрограмма задержки на 0,5 секунды, выключается светодиод и вновь осуществляется опрос клавиатуры.

Если код нажатой клавиши не равен 10, то запускается режим AHJ. При этом загружается счетчик сбросов SSBR числом 57, разрешается прерывание от таймера, запускается таймер с предделителем на 8, подается сигнал на включение светодиода, сбрасывается содержимое ячеек памяти VK0, VK1, VK2 и VK3 в ноль и передается управление подпрограмме INKEY по метке MET2.

Рис.5.13. Структурная схема алгоритма подпрограммы RUNKEY.


5.2 Разработка управляющей программы

При разработке программы использовался программный продукт MPLABv.3.22 производства фирмы Microchip. Он представляет собой интегрированную среду, включающую в себя программный эмулятор, внутрисхемный эмулятор и встроенный текстовый редактор и распространяется свободно этой фирмой. Этот пакет поддерживает серии микроконтроллеров, начиная с PIC 16C5X и заканчивая PIC 17CXX. При разработке и отладке использовался программный эмулятор этого пакета.

Головная программа написана по алгоритму, схема которого приведена на рис.5.1.

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

listp=16c73a, f=inhx8m

#include 16c73a.inc

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

CCequ 20 ;присвоение символических имен

RPRequ 21 ;используемым регистрам

RPRTMR1 equ 22

SU equ 23

KK equ 24

SPER equ 25

SPOS equ 26

SPOP equ 27

SSIG equ 28

NK0 equ 29

NK1 equ 2A

NK2 equ 2B

NK3 equ 2C

VK0 equ 2D

VK1 equ 2E

VK2 equ 2F

VK3 equ 30

SN equ 31

BUK equ 32

KVER equ 33

SSBR equ 34

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

org 0

gotoBegin ;переход к началу программы

org 4

callRZINT ;переход к обработчику прерываний

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

Begin: bcfSTATUS, RP0 ;переход к 0 банку памяти

clrfINTCON ;настройка регистров

clrfPIR2 ;специальных функций

movlwB’00111100’

movwfT!CON

bsfSTATUS, RP0 ;переход к 1 банку памяти

movlwB’11000000’ ;настройка регистров

movwfOPTION ;специальных функций

clrf TRISA

movlw B’11100001’

movwf TRISB

movlw B’00110111’

movwf TRISC

clrf PCON

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

bcfSTATUS, RP0 ;переход к 0 банку памяти

clrfPORTA ;настройка выходных портов

bcfPORTC, RC7

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

movlw 1

movwfCC ;начальная установка слова состояния

movlw 2

movwfSU ;начальная установка счетчика ударов

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

Start: btfsc CC, 0 ;анализ слова состояния

btfss CC, 0

goto Trev

btfsc CC, 1

goto Og

call Ohrana ;вызовподпрограммы Ohrana

goto Start

Trev: call Trevoga ;вызовподпрограммы Trevoga

goto Start

Og: call Ogid ;вызовподпрограммы Ogid

goto Start

end

В состав головной программы входит подпрограмма режима охраны Ohrana. Согласно алгоритму, схема которого представлена на рис.5.2. была написана подпрограмма Ohrana. Текст ее приведен ниже.

; подпрограмма Ohrana

Ohrana:

bcf STATUS, RP0 ;переход к 0 банку памяти

bsf PORTA, RA1 ;блокирование зажигания

bsf PORTA, RA3 ;сигнал закрытия ЦЗ

call Del1 ;задержка 1 с

bcf PORTA, RA3

movlw B’10011000’ ;разрешение прерываний

movwf INTCON ;от датчиков

Mor: bsf PORTA, RA4 ;вкл. светодиода

call Del1 ;задержка 1 с

bcf PORTA, RA4 ;выкл. светодиода

call Del1 ;задержка 1 с

goto Mor

Прерывания от датчиков, таймера и детектора правильного кода будут обрабатываться подпрограммой RZINT, текст которой показан ниже. Она написана согласно алгоритму, схема которого показана на рис.5.3.

; подпрограмма RZINT

RZINT:

movf INTCON, 0 ;запоминание разрешенных

movwf RPR ;или запрещенных прерываний

movf PIE1, 0 ;

movwf RPRTMR1 ;

bcf INTCON, 7 ;запрет всех прерываний

bcf PIE1, 0 ;

btfsc INTCON, RBIF ;определение источника прерывания

goto AAA ;переход если прерывание от порта В

A11: btfsc PIR1, TMR1IF

gotoBBB ;переход если прерывание от таймера

btfscINTCON, INIF

gotoCCC ;переход если прерывание от ДК

redfie ;возврат

AAA: btfssPORTB, RB5 ;определение источника прерывания

gotoAA1 ;переход если прерывание от ДД

btfscPORTB, RB6

gotoBB1 ;переход если прерывание от УЛЗД

btfscPORTB, RB7

gotoCC1 ;переход если прерывание от ДУ

gotoA11

AA1: movlw 2

movwfCC ;установка режима “Тревога”

gotoBeg

BB1: movlw 2

movwfCC ;установка режима “Тревога”

gotoBeg

CC1: callOPDU ;вызов подпрограммы OPDU

gotoBeg

BBB: callOPTMR1 ;вызов подпрограммы OPTMR1

goto Beg

CCC: call OPPK ;вызовподпрограммы OPPK

goto Beg

Beg: movfRPR, 0 ;восстановление запомненных

movwfINTCON ;разрешенных или запрещенных

movfRPRTMR1, 0 ;прерываний

movwfPEI1 ;

gotoStart

В состав подпрограммы обработки прерываний RZINT входит подпрограмма обработки прерывания от датчика ударов OPDU, текст которой приведен ниже а схема алгоритма на рис.5.4.

; подпрограмма OPDU

OPDU:

bsfINTCON, 7 ;разрешение прерываний от датчиков

bsfPORTA, RA5 ;включение сирены

callDel05 ;задержка на 0,5 с

bcfPORTA, RA5 ;выкл. сирены

decfSU, 1 ;декремент счетчика ударов

btfscSTATUS, Z

gotoPPP ;переход если счетчик ударов равен 0

callDel3 ;задержка на 3с

movlw 2

movwfSU ;восстановление счетчика ударов

gotoStart

PPP: movlw 2

movwfSU ;восстановление счетчика ударов

movwfCC ;установка режима “Тревога”

gotoStart

Также в состав подпрограммы RZINT входит подпрограмма обработки прерывания от таймера TMR1. Ее текст приведен ниже, а схема алгоритма на рис.5.12.

; подпрограмма OPTMR1

OPTMR1:

decfSSBR, 1 ;декремент счетчика сбросов

btfscSTATUS, Z

gotoFFF ;переход если счетчик сбросов равен 0

bcfPIR1, 0 ;сброс флага прерывания от таймера

bsfT1CON, 0 ;запуск таймера

return ;возврат

FFF: bcfPIE1, 0 ;запрет прерывания от таймера

gotoMET1


6. РАЗРАБОТКА КОНСТРУКЦИИ КОДОВОГО БРЕЛКА

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

При конструировании пульта управления следует руководствоваться ГОСТ 16456-70, который содержит 23 эргономических показателя, и ГОСТ 22973-78.

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