Микропроцессорный контроллер кодового замка

Общее описание восьмиразрядного высокопроизводительного однокристального микроконтроллера. Порты ввода-вывода. Разработка структурно-функциональной схемы. Выбор элементной базы, основные используемые процедуры. Описание алгоритма программы, ее листинг.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид курсовая работа
Язык русский
Дата добавления 23.12.2012
Размер файла 28,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

СОДЕРЖАНИЕ

1. Техническое задание

2. Краткое описание микроконтроллера

2.1 Общее описание микроконтроллера

2.2 Порты ввода-вывода

2.3 Разработка структурно-функциональной схемы

3. Функциональная схема устройства

3.1 Выбор элементной базы

3.2 Описание алгоритма программы

3.3 Используемые процедуры

3.4 Листинг программной части

1. Техническое задание

Целью данной курсовой работы является разработка схемы устройства - «Микропроцессорный контроллер кодового замка» с использованием микроконтроллера.

Разрабатываемое устройство будет иметь следующие возможности:

в дежурном режиме устройство работает как часы, отображая текущее время.

в режиме замка устройство позволяет по паролю осуществлять открытие дверей, если введенный пароль верен для соответствующей двери. Если введенный пароль не верный, то на ЖКИ выдается сообщение: ошибка. Если неправильный пароль вводится 3 раза, срабатывает сигнализация.

режим программирования: при вводе мастер-пароля можно 1) редактировать пароли; 2) просмотреть информацию о последних введенных паролях и времени ввода пароля; 3) устанавливать новое время.

2. Краткое описание микроконтроллера

2.1 Описание микроконтроллера

Восьмиразрядный высокопроизводительный однокристальный микроЭВМ КР1816ВЕ51 выполнен по высококачественной n-МОП технологии. Содержит масочно-программирумое в процессе изготовления кристалла ПЗУ памяти программ емкостью 4096 байт и рассчитан на применение в массовой продукции.

ОМЭВМ содержат следующие узлы:

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

память программ объемом 4 Кбайт;

память данных объемом 128 байт;

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

два 16-битовых многореиных таймера-счетчика;

систему прерываний с пятью векторами и двумя уровнями;

последовательный интерфейс;

тактовый генератор.

Название

Вывод

Тип

Назначение

Р1.0-Р1.7

1-8

Вход/ выход

8-разрядный двунаправленный порт Р1. Вход адреса А0-А7 при проверке внутреннего ПЗУ (РПЗУ).

RST

9

вход

Сигнал общего сброса. Вывод резервного питания ОЗУ от внешнего источника.

Р3.0-Р3.7

Р3.0

Р3.1

Р3.2

Р3.3

Р3.4

Р3.5

Р3.6

Р3.7

10-17

Вход/ Выход

Вход

Выход

Вход

Вход

Вход

Вход

Выход

Выход

8-ми разрядный двунаправленный порт Р3 с дополнительными функциями.

Последовательные данные приемника - RxD.

Последовательные данные передатчика - TxD.

Вход внешнего прерывания 0 - INT0.

Вход внешнего прерывания 1 - INT1.

Вход таймера/счетчика 0 - Т0.

Вход таймера/счетчика 1 - Т1.

Выход стробирующего сигнала при записи во внешнюю память данных - WR.

Выход стробирующего сигнала при чтении из внешней памяти данных - RD.

BQ2

18

Выход

Выводы для подключения кварцевого резонатора.

BQ1

19

Вход

0 В

20

Общий выход

Р2.0-Р2.7

21-28

Вход/ выход

8-разрядный двунаправленный порт Р2. Выход адреса А8-А15 в режиме работы с внешней памятью. В режиме проверки внутреннего ПЗУ выводы Р2.0-Р2.6 используются как вход адреса А8-А14.

Вывод Р2.7 - разрешение чтения ПЗУ - Е.

PME

29

Выход

Разрешение программной памяти.

ALE

30

Вход/

выход

Выходной сигнал разрешения фиксации адрса. При программировании РПЗУ сигнал - PROG.

DEMA

31

Вход/

выход

Блокировка работы с внутренней памятью. При программировании РПЗУ подается сигнал UPR

Р0.7-Р0.0

32-39

Вход/

выход

8-разрядный двунаправленный порт Р0. Шина адреса / данных при работе с внешней памятью. Выход данных D7-D0 в режиме проверки внутреннего ПЗУ (РПЗУ).

Ucc

40

Вывод питания от источника напряжения +5В

Организация памяти.

Память данных предназначена для приема, хранения и выдачи информации, используемой в процессе выполнения программы. Память данных, расположенная на кристалле ОМЭВМ, состоит из регистра адреса ОЗУ, дешифратора, ОЗУ и указателя стека.

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

ОЗУ представляет собой 128 восьмиразрядных регистров, предназначенных для приема, хранения и выдачи различной информации.

Указатель стека представляет собой регистр, предназначенный для приема и хранения адреса ячейки стека, к которой было последнее обращение.

В ОМЭВМ предусмотрена возможность расширения памяти данных путем подключения внешних устройств емкостью до 64 Кбайт.

Память программ предназначена для хранения программ и имеет отдельное от памяти данных адресное пространство объемом до 64 Кбайт, причем часть памяти программ с адресами 0000h-0fffh расположена на кристалле ОМЭВМ. Память программ, расположенная на кристалле, состоит из 12-разрядного дешифратора и ПЗУ емкости 4К*8 бит. Запись программ в ПЗУ происходит во время изготовления кристаллов.

контроллер программа процедура

2.2 Устройства ввода-вывода

Порты Р1-Р3 имеют идентичные характеристики. Данные, записанные в них, статически фиксируются и не изменяются до перезаписи.

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

Для перевода любой линии портов Р1-Р3 на прием входной информации необходимо в соответствующий фиксатор-защелку порта записать «1» с помощью команд выдачи данных. Сигнал RST устанавливает все порты на прием входной информации.

Порт Р0 - восьмиразрядный двунаправленный порт с тремя состояниями. Информация, выдаваемая портом Р0 с помощью команд выдачи сопровождается строб-импульсом WR.

При записи информации в порт Р0 с помощью команд приема вырабатывается строб-импульс RD.

Кроме операция ввода-вывода информации предусмотрена возможность выполнения логических операция И, ИЛИ и исключающее ИЛИ непосредственно на фиксаторах портов Р0-Р3.

В режиме работы с внешней памятью программ порт Р0 служит для выдачи младших разрядов адреса памяти программ и приема кодов команд. В режиме работы с внешним ОЗУ данных порт Р0 служит для выдачи адреса внешнего ОЗУ данных и приема-выдачи данных при обмене с внешним ОЗУ.

При работе с последовательным портом ОМЭВМ линии Р3.0 и Р3.1 используются, соответственно, как вход и выход последовательного канала.

2.3 Разработка структурно-функциональной схемы

Устройство состоит из следующих функциональных блоков:

Блок микроконтроллера

Осуществляет функционирование микроконтроллера. Состоит из следующих элементов:

схема тактового генератора. Осуществляет выработку внешнего сигнала тактирования микроконтроллера частотой 12МГц.

схема первоначального сброса микроконтроллера. Обеспечивает корректный запуск.

сам микроконтроллер.

Блок клавиатуры

Осуществляет подключение матрицы из 12 кнопок к 7 выводам микроконтроллера. Код строки матрицы выдается в младших трех битах порта P2, код столбца матрицы выдается в старших четырех битах порта Р2. В узлах полученной матрицы из 3 строк по 4 столбца расположены кнопки. На 3 младших бита порта подается логическая «1». На старшие 4 бита подается 0. Как только нажата клавиша (происходит переключение), состояние бита строки, соответствующей столбцу, перейдет в «0».

Блок индикации набора пароля.

Осуществляет подключение LCD-панели к порту Р0 и порту Р3 (биты Р3.0, Р3.1, Р3.2) микроконтроллера.. Отображает дополнительную информацию на LCD-экране.

Блок электронного ключа замка.

Размещено на http://www.allbest.ru

Состоит из транзисторной пары и открывает или закрывает двери посредством реле или электромагнита вдвигающего язычок.

3. Функциональная схема устройства

3.1 Выбор элементной базы

При разработке устройства были использованы следующие электронные компоненты:

Микроконтроллер КР1816ВЕ51. Этот микроконтроллер был выбран по причине хорошего соответствия поставленной задаче и низкой стоимости.

LCD Hitachi HD44870. Данный контроллер фактически является промышленным стандартом и широко применяется при производстве алфавитно-цифровых ЖКИ-модулей. АЦ ЖКИ-модули представляют собой недорогое и удобное решение, позволяющее сэкономить время и ресурсы при разработке новых изделий, при этом обеспечивают отображение большого объема информации при хорошей различимости и низком энергопотреблении.

Электронный стабилизатор КР145ЕН5А

3.2 Описание алгоритма программы

1) Дежурный режим.

В

Р

Е

М

Я

1

2

:

2

2

:

4

0

В дежурном режиме (пока не нажата клавиша) работы устройства на ЖКИ отображается текущее время.

2) Режим ввода пароля.

В

В

Е

Д

И

Т

Е

П

А

Р

О

Л

Ь

*

*

*

*

*

*

В этот режим работы устройство автоматически, если нажата управляющая клавиша ВВОД. Далее осуществляется вывод строки «Введите пароль» на ЖКИ и ожидается нажатие клавиши. Далее вводим клавиши и подтверждаем ввод кнопкой ВВОД. Если такой пароль существует, открывается дверь. Если пароль не совпадает с зарегистрированными, то выдается сообщение об ошибке. Если ввод неправильного пароля повторяется 3 раза, после третьего раза выдается сообщение об ошибке и подается звуковой сигнал.

В

В

Е

Д

И

Т

Е

П

А

Р

О

Л

Ь

*

*

*

*

*

*

*

О

Ш

И

Б

К

А

Если введен мастер-пароль, можно редактировать старые пароли или установить новое время. Выдается строка «Введите №». Дальше ожидается нажатие клавиши.

В

В

Е

Д

И

Т

Е

*

Если нажата клавиша ОК, осуществляется установка нового времени. Выводится сообщение «Введите время». После этого ждем нажатия клавиш. Вводятся цифры нового времени, которые затем выводятся на ЖКИ с символом «:»;

В

В

Е

Д

И

Т

Е

В

Р

Е

М

Я

1

2

4

0

5

9

Если нажата одна из цифровых клавиш, начинается процедура ввода нового пароля. Сначала выводится сообщение «Введите пароль» и ожидается нажатие клавиш. Вводятся цифры нового пароля, которые затем отображаются на ЖКИ.

В

В

Е

Д

И

Т

Е

П

А

Р

О

Л

Ь

1

2

9

8

7

5

3.3 Описание используемых процедур

Процедура-обработчик прерываний таймера.

В ней осуществляется проверка нажатия клавиши, особенно контролируется нажатие управляющих клавиш ПАРОЛЬ и ОК, а также осуществляем подсчет секунд, минут и часов.

Процедуры вывода сообщений: выводят сообщения на ЖКИ ВВЕДИТЕ, НОВЫЙ, ПАРОЛЬ, ВРЕМЯ, ОШИБКА, ПОВТОРИТЕ.

Процедура вывода времени на ЖКИ: выводит текущее время на ЖКИ.

Процедура вывода номера пароля и времени ввода на ЖКИ. Процедура выводит на ЖКИ номер и время введенного ранее пароля. Доступна, если набран мастер-пароль.

Процедура вывода на ЖКИ. Осуществляет вывод данных, помещаемых в буфер на ЖКИ.

Процедура поиска пароля. Ищет пароль среди известных 10 паролей. Одновременно проверяет введенный пароль на мастер пароль. Если введен мастер-пароль, происходит переход в процедуру программирования.

Процедура программирования. Работает, если введен мастер-пароль.

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

После начала работы процедуры выводится сообщение: введите номер. В зависимости от нажатой клавиши, будет выбран тот или иной режим работы процедуры.

Если нажата клавиша ОК - осуществляется установка нового времени.

Если нажата клавиша ПАРОЛЬ - мы может просмотреть 10 ранее введенных паролей и время ввода.

Если нажата одна из цифровых клавиш - начитает работать режим редактирования одного из ранее запрограммированных паролей.

Процедура инициализации.

В ней устанавливаются режимы работы таймерф, инициализируется ЖКИ, показания часов устанавливаются в 00:00:00.

3.4 Листинг

init: procedure; /*пpоцедуpа инициализации*/

tmod=00000001b;/*пеpвый pежим для 0 о таймеpа */

it0=1;/*пpеpывание по фpонту сигнала пеpеполнения*/

th0,tl0=0;tr0=1; /*обнуляем счетчики и pазpешаем pаботу 0 таймеpa*/

er1=0;/*запускаем таймеp 0 и 1*/

et0=1;/*pазpешаем пpеpывания Т0 T1*/

ea=1;/*pазpешаем все пpеpывания*/

P2=00111111b; st=0;/* скан 1 столбца*/

n_key=0; k_old=0;fl_ind=1;fl_p=1;

flH=0;fl_r1=0;fl_r2=0;fl_r3=0;fl_r4=0; flN=0;

/*инициализация ЖКИ*/

do I=0 to 3;

rs=0;rw=1b;e=1b; call time(10);

do while (p0 and 80h)<>0; end;

e=0; rs=0; rw=0; call time(10);

PO=LCD_Ini(i);

end;

/*устаналиваем значения по умолчанию*/

chas=0;min=0;sek=0;

out_ind;

end init;

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

start: do;

$include(reg812.dcl)

declare

/* объявление основных переменных и флагов */

str_vvedite(*) byte (42h,0b3h,65h,0e3h,0b8h,0bfh,65h,20h),/*стр Введите*/

str_time(*) byte (0b3h,70h,65h,0bch,0c7h,20h),/*стр время*/

str_nov(*) byte(0bdh,6fh,0b3h,0c3h,0b9h,20h),/*стр новый*/

str_parol(*) byte(0a8h,61h,70h,6fh,0BBh,0c4h,20h),/*стр пароль*/

str_ohibka(*) byte (4fh,0c1h,0b8h,0b2h,0bah,61h,20h),/*стр ошибка*/

str_povtor(*) byte (0beh,0b3h,0bfh,0bfh,06fh,070h,0b8h,0bfh,65h,20h), /*стр повторите*/

mastert_pasvord(10)byte constant(1,9,4,6,2,0,2,4,3,8),/*пароль программирования*/

pasv_buf(10),/*буфер введенного пароля*/

pasv(100) byte,/* массив добавляемых паролей*/

reg(75) byte, /*массив последних 10 введ паролей*/

LCD_Ini (*) byte constant(08h,02h,0fh,01h), /*команды инициализации ЖКИ*/

Ind(56) bute ,/* содержимое индикатора */

(i,ip,jp,per,s,np,st,timN,nreg,pl) byte,/* переменные для работы */

(flag,fl_p,flH,fl_key,fl_pasv,fl_ok,fl_ind) byte,/*флаги определения режима работы */

n_key byte, /*номер нажатой клавиши */

(k1_old) byte,/*номер последней нажатой клавиши */

(sek,min,chas) word;/*секунды,минуты и часы*/

/*пеpеименование pазpядов поpта */

declare rs literally 'P3.0',/* RS линия связи с LCD*/

rw literally 'P3.1',/*RW линия связи с LCD*/

e literally `P3.2';

timer_int: procedure interrupt 1; /*---Обработчик прерывания таймера---------------*/

if st=0 then P2=10111111; /*установка сканируемого столбца*/

if st=1 then P2=11011111;

if st=2 then P2=11101111;

if st=3 then P2=11110111;

if st=4 then do; /*если нет нажат клавиш сброс флага нажатия иначе утанавливаем */

if n_key=0 then do; fl_key=0;key_old=0;end

else key_old=n_key;/*предшеств кл */

st=0; n_key=0;

end; st=st+1;

/*блок проверки нажатия клавиш*/

if (p2.0=0b) then do n_key=st*3+1; fl_key=1; end;

if (p2.1=0b) then do n_key=st*3+2; fl_key=1; end;

if (p2.2=0b) then do n_key=st*3+3; fl_key=1; end;

if fl_key=1 then do/*обработка нажатий на определенныке клавиши*/

if (n_key=11)and(n_key<>key_old) then fl_pasv=1;/*флаг ввода пароля на вход*/

if (n_key=12)and(n_key<>key_old) then fl_ok=1;/*флаг установки подтверждения*/

end;

per=per+1; /* увеличиваем счетчик переполнений */

if per>=15 then do; /*отсчет времени*/

per=0;sek=sek+1;/*отсчет секунд*/

if sek>=60 then do; min=min+1;sek=0;/*минут*/

if min=60 then do; chas=chas+1; if chas=24 then chas=0;end;end;/*часов*/

flag=1;/*флаг необходимости обновления изображения индикатора*/

end;

tf0=0; /* сброс флага переполнения */

end timer_int;

vvod_ind:procedure; /* вывод Введите*/

i=0;j=1; do while str_vvedite(i)<>20h; ind(j)=str_vvedite(i);

i=i+1;j=j+1;end; ind(j)=20h;j=j+1;

end vvod_ind;

nov_ind:procedure; /* вывод новый*/

i=0; do while str_nov(i)<>20h; ind(j)=str_nov(i);

i=i+1;j=j+1;end; ind(j)=20h;j=j+1;

end nov_ind;

parol_ind:procedure; /* вывод пароль*/

i=0;do while str_parol (i)<>20h; ind(j)=str_parol(i);

i=i+1;j=j+1;end;ind(j)=20h;j=j+1;

end parol_ind;

ohibka_ind:procedure; /* вывод Ошибка*/

i=0; do while str_ohibka(i)<>20h;ind(j)=str_ochibka (i);

i=i+1;j=j+1;end;ind(j)=20h;j=j+1;

end ohibka_ind;

povtor_ind:procedure; /* вывод Ошибка*/

i=0; do while str_povtor(i)<>20h;ind(j)=str_povtor(i);

i=i+1;j=j+1;end;ind(j)=20h;j=j+1;

end povtor_ind;

time:procedure;/*вывод ВРЕМЯ*/

i=0; do while str_time(i)<>20h;ind(j)=str_time(i);

i=i+1;j=j+1;end;ind(j)=20h;j=44;

end time ;

time_ind:procedure; /* вывод времени*/

j=5; call time;

ind(j)=(chas/10)+30h;ind(j+1)=(chas mod 10)+30h; ind(j+2)=0d0h;

ind(j+3)=(min/10)+30h;ind(j+4)=(min mod 10)+30h; ind(j+5)=0d0h;

ind(j+6)=(sek/10)+30h;ind(j+7)=(sek mod 10)+30h;j=j+7;

call out_ind;

end time_ind;

timep_ind:procedure;/*выводим номер и время введенного пароля*/

ind(j)=pl+30h;ind(j+1)=2dh;

ind(j+2)=(reg(pl+1)/10)+30h;ind(j+3)=(reg(pl+1) mod 10)+30h; ind(j+4)=0d0h;

ind(j+5)=(min/10)+30h;ind(j+6)=(min mod 10)+30h;

call out_ind;

end timep_ind;

out_ind: procedure; /*вывод буфера на жки*/

call time(20);rs,rw=0; P0=1;/*очистка ЖКИ*/

do I=0 to 55;

rs=0;rw=1;e=1b;P0=0ffh

do while (P0 and 80h)<>0; end;

rs=1; rw=0;call time(20);

P0=Ind(i); e=0;call time(20); end;

Do I=0 to 55; ind(i)=20h;end;/*очистка буфера индикатора*/

end out_ind;

/*процедурa поиска введенногo пароля*/

poisk_pasv:procedure;

fl_p=0;Ip=0;/*флаг перехода в режим программирования*/

do while (Ip<=9) and (pasv_buf(ip)=master_pasvord(ip));

ip=ip+1;end;

if Ip=9 then call progr;/*введен пароль программирования, вызов процедуры */

/*программирования*/

Ip=0;jp=0;np=12;nr=0;

Do nr=0 to 9;/*проверяем весь массив паролей

Do ip=0 to 9;/*сравниваем введенный пароль с установленными*/

do while (Ip<=9) and (pasv_buf(ip)=pasv(ip));

ip=ip+1;end;

if Ip=9 then np=nr;/*введеный пароль совпадает с записанным по номеру nr*/

end;

end;

end poisk_pasv;

progr:procedure;/*программирование нового пароля*/

call vvod_ind;ind(j)=4eh;call out_ind;/*Выводим строку Ведите№*/

do while n_key<>0;end;/*ждем отпускания клавиши*/

do while n_key=0;end; /*ждем нажатия клавиши*/

if (n_key=12) then do;/*установка параметров времени*/

call vvod_ind; call time;j=44;call out_ind; /*выводим строку введите время*/

do ip=0 to 5;

do while n_key<>0;end;/*ждем отпускания клавиши*/

do while n_key=0;end;

if n_key=10 then n_key=0;

pasv_buf(ip)=n_key;ind(j+ip)=n_key+30h;call out_ind;/* ввод инф и выв на индикатор*/

end;

chas= rol(pasv_buf(0),4)+ pasv_buf(1);/*устанавливаем часы*/

min= rol(pasv_buf(2),4)+ pasv_buf(3);/*устанавливаем минуты секунды*/

sek = rol(pasv_buf(4),4)+ pasv_buf(5);/*устанавливаем часы*/

end;

end progr;

if (n_key=11) then do;/*просмотр лога введенных паролей*/

do while n_key<>12;/*пока не нажат ОК можем просматривать лог*/

call vvod_int; ind(j)=4eh;j=41; call out_ind; /*выводим строку введите N*/

do while n_key<>0;end;/*ждем отпускания клавиши*/

do while n_key=0;end;

if n_key=10 then do; pl=n_key; call timep; end;

end;

end progr;

if n_key<11 then do;/*ввод пароля*/

ip=0;

call vvod_ind;call parol_ind; out_ind;/* выводим строку введите пароль*/

do while (ip<10)and(n_key<>12);/*цикл ввода пароля*/

do while n_key<>0;end;/*ждем отпускания клавиши*/

do while n_key=0;end;/*ждем нажатия следующей клавиши*/

if n_key=10 then n_key=0;

pasv_buf(ip)=n_key;ind(j+ip)=n_key+30h;call out_ind;/* ввод инф и выв на индикатор*/

end;

end;

end progr;

init: procedure; /*пpоцедуpа инициализации*/

tmod=00010001b;/*пеpвый pежим для 0 и 1 го таймеpа */

it0=1;/*пpеpывание по фpонту сигнала пеpеполнения*/

th0,tl0=0;tr0=1; /*обнуляем счетчики и pазpешаем pаботу 0 таймеpa*/

er1=0;/*запускаем таймеp 0 и 1*/

et0=1;/*pазpешаем пpеpывания Т0 T1*/

ea=1;/*pазpешаем все пpеpывания*/

P2=00111111b; st=0;/* скан 1 столбца*/

n_key=0; k_old=0;fl_ind=1;fl_p=1;

flH=0;fl_r1=0;fl_r2=0;fl_r3=0;fl_r4=0; flN=0;

/*инициализация ЖКИ*/

do I=0 to 3;

rs=0;rw=1b;e=1b; call time(10);

do while (M and 80h)<>0; end;

e=0; rs=0; rw=0; call time(10);

PO=LCD_Ini(i);

end;

/*устаналиваем значения по умолчанию*/

chas=0;min=0;sek=0;

out_ind;

end init;

/*Tело основной программы */

call init;

do while 1;

flag=0;

do while flag=0; end;/*ждем пока не пройдет секунда*/

call time_ind; /*Строка Время 12:19:33 */

if n_key=11 then do; ip=0;

call vvod_ind;call parol_ind; out_ind;/* выводим строку введите пароль*/

do while (ip<10)and(n_key<>12);/*цикл ввода пароля*/

do while n_key<>0;end;/*ждем отпускания клавиши*/

do while n_key=0;end;/*ждем нажатия следующей клавиши*/

if n_key=10 then n_key=0;

pasv_buf(ip)=n_key;ind(j+ip)=23h;/* ввод инф и выв на индикатор #####*/

end;out_ind;

call poisk_pasv;/*проверяем пароль */

if np<11 then p3.3=1 /*открываем замок */

else do;j=0;call ohibka;call povtor;call out_ind;end;/*сообщаем об ошибке*/

do I=1 to 12; call time(255);end;/*удержание паузы 3 сек*/

p3.3=0;/*закрытие замка

reg(n)=np;reg(n+1)=chas;reg(n+2)=min;/* фиксируем лог N, часы,мин*/

n=n+3;if n>29 then n=0;/*увеличиваем и проверяем указатель лога*/

End;

end;

end start;

Размещено на www.allbest.


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.