Автор работы: Пользователь скрыл имя, 24 Мая 2012 в 14:15, курсовая работа
Разработка принципиальной схемы кодового замка. В работе представлена инженерная интерпретация поставленной задачи с выбором и описанием алгоритма программы. Дано формирование текста исходной программы и таблицы прошивки РПЗ.
Введение...............................................................................................................4
1. Анализ поставленной задачи…………………………………………………
2. Инженерная интерпретация поставленной задачи.........................................
3. Разработка принципиальной схемы кодового замка......................................
4. Выбор и описание алгоритма программы.......................................................
4.1 Общая блок-схемы алгоритма
работы кодового замка………………………………………………….....
5. Разработка текста исходной программы...................................................
6. Расчет коэффициентов в программе задержки……………………………
Заключение. Таблица «прошивки»РПЗУ………………………………….…….
Список литературы.................................................................................................
RA0-кнопка выхода изнутри
RA1-подключение исполнительного механизма
RA2-подключение светодиода
RB1-RB4-считывание кода
;-----------------------------
#include p16f84a.inc
;-----------------------------
ETALON equ 8h ;значение эталонного кода
cnt0 equ 10h ;счетчик задержки 0.5 мс
;счетчики задержки 1 сек
cnt1 equ 11h
cnt2 equ 12h
;-----------------------------
;Инициализация
;-----------------------------
bsf STATUS,RP0 ; выбор 1-го банка
movlw b'00000001' ;
movwf TRISA ; RB3-RB6 - входы
movlw b'01111000' ; RA0 – вход
movwf TRISB ; RA1-RA2 - выходы
clrf STATUS ; возврат в банк 0
goto Start ;вход в основную программу
;=============================
;Подпрограммa задержки на 400мс-определяет частоту звука
;=============================
Delay0.4 ;movlw .2 ; Записать в регистр W константу 2
; movwf Cnt2 ; Скопировать .10 из W в регистр Cnt2
Gama ;movlw .200 ; Записать в регистр W константу .10
;movwf Cnt1 ;cкопировать .100 из W в регистр Cnt1
Beta ;movlw .200 ; Записать в регистр W константу .20
;movwf Cnt0 ; Скопировать .200 из W в регистр Cnt0
Alfa nop ; холостая команда
nop ;
;decfsz Cnt0,f ; Декремент Cnt0 и переход
;goto Alfa ; к Alfa, если ноль
;decfsz Cnt1,f ; Декремент Cnt1 и переход
;goto Beta ; к Beta, если не не ноль
;decfsz Cnt2,f ; Декремент Cnt1 и переход
;goto Gama ; к Gama, если не ноль
return ; конец программы
OPEN
bsf PORTB,2 ;открыть дверь
call delay0.4 ;задержка
bcf PORTB,2 ;закрыть дверь
goto START ;к началу
return
;-----------------------------
;Основная программа
;=============================
START
btfsc PORTB,0 ; кнопка нажата?
Goto OPEN
Bsf portB,3
Call delay0.4 ;да, перейти к ОPEN
movf PORTB,W
Bcf portB,3
Call delay0.4 ;нет, код в аккумулятор
btfsc STATUS,Z ;код введен?
Goto START ;нет, к началу
sublw ETALON ;да, вычитаем ETALON-W
btfss STATUS,Z ;коды не равны?
call open
Goto start ;нет. Перейти к Start
;=============================
end
;=============================
16