Расчёт времени задержки. Алгоритм. Программа. Время выполнения цикла. Код программы

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

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

задание

Написать программу, использующую микроконтроллер Intel 80C51GB так, чтобы светодиоды на панели микроконтроллера имитировали работу светофора. Для создания задержек следует использовать встроенный таймер.

описание

Алгоритм

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

Программа

Для управления этими диодами используется порт Р5. Чтобы записать в память программы действие этих светодиодов используется регистр специальных функций (РСФ), имеющий адрес F8. У этого регистра доступна побитовая адресация при прямом обращении. По умолчанию значение регистра 00000000. Для того, чтобы загорелся красный светодиод, необходимо, чтобы четвёртый бит регистра был равен 1, для жёлтого – пятый бит должен быть равен 1, для зелёного – шестой.

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

Таким образом для включения красного светодиода необходимо произвести операцию логического сложения содержимого порта Р5 и маски 00001000 и записать результат в порт Р5. При этом содержимое всех бит этого порта, кроме четвёртого, не изменится, а четвёртый будем равен 1 (то есть загорится красный). Аналогично с включением других светодиодов.

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

Для написания данной программы нужно ознакомиться со структурой таймера.

Режим работы для таймера TMOD устанавливаем на #01H. Для осуществления задержки в 100 мс установим таймер: TL0=#9AH, TH0=#19H. Для задержки на 1 секунду сделаем 10 циклов по 100 мс каждый.

Расчёт времени задержки

MOV R1,#64H        ;ZADERZHKA

TIM1:

mov 0xA6, #0E1H    ;1

mov 0xA6, #01EH    ;1

MOV TMOD,#01H           ;1

MOV TL0,#9AH      ;1

MOV TH0,#19H      ;1

SETB TR0          ;1

Задержка таймера

 
         WAIT1:

mov 0xA6, #0E1H

mov 0xA6, #01EH

JNB TF0, WAIT1

CLR TR0           ;1

CLR TF0           ;1

DEC R1            ;1

MOV A,R1          ;1

ORL A,#0H         ;1

JNZ TIM1          ;2

Внутри цикла задержки установим:

-режим работы таймера TMOD =1

-установим начальные значения TL0=9Ah и ТH0=1Eh, количество операций инкремента до максимального значения : FFFFh- 1E9Ah=E165h=57701

Время выполнения цикла задержка таймер

Время выполнения цикла задержки:

блок-схема

Код программы

;======================================

;программа светофор,

;используящая таймер для задержки

;======================================

;параметры

org 8000h

P5 EQU 0F8H;адрес порта Р5

;маски

red equ 00010000b;вкл красного

yel equ 00100000b;вкл жёлтого

gre equ 01000000b;вкл зелёного

off equ 10001111b;выкл всех

;-------------------------------------BEG:;начало

;выключение всех индикаторов

MOV A,P5

ANL A,#OFF                                                                                    

MOV P5,A

;включение красного

MOV A,P5

ORL A,#RED

MOV P5, A

;задержка с помощью таймера

MOV R1,#64H

TIM1:

mov 0xA6, #0E1H

mov 0xA6, #01EH

MOV TMOD,#01H;режим работы таймера

MOV TL0,#9AH;устанавливаем таймер

MOV TH0,#19H;на 1 мс

SETB TR0;установка бита

WAIT1:

mov 0xA6, #0E1H

mov 0xA6, #01EH

JNB TF0, WAIT1

CLR TR0

CLR TF0

DEC R1;декремент счётчика

MOV A,R1

ORL A,#0H

JNZ TIM1;зацикливание

;включение жёлтого

MOV A,P5

ORL A,#YEL

MOV P5,A

;задержка с помощью таймера

MOV R1,#64H;установка счётчика

TIM2:

mov 0xA6, #0E1H

mov 0xA6, #01EH

MOV TMOD,#01H;режим работы таймера

MOV TL0,#9AH;устанавливаем таймер

MOV TH0,#19H;на 1 мс

SETB TR0;установка бита

WAIT2:

mov 0xA6, #0E1H

mov 0xA6, #01EH

JNB TF0, WAIT2

CLR TR0

CLR TF0

DEC R1;декремент счётчика

MOV A,R1

ORL A,#0H

JNZ TIM2

;выключение красного

MOV A,P5

XRL A,#RED

MOV P5,A

;задержка с помощью таймера

MOV R1,#64H;установка счётчика

TIM3:

mov 0xA6, #0E1H

mov 0xA6, #01EH

MOV TMOD,#01H;режим работы таймера

MOV TL0,#9AH;устанавливаем таймер

MOV TH0,#19H;на 1 мс

SETB TR0;установка бита

WAIT3:

mov 0xA6, #0E1H

mov 0xA6, #01EH

JNB TF0, WAIT3

CLR TR0

CLR TF0

DEC R1;декремент счётчика

MOV A,R1

ORL A,#0H;сравнение счётчика с нулём

JNZ TIM3

;выключение жёлтого

MOV A,P5

XRL A,#YEL

MOV P5,A

;включение зелёного

ORL A,#GRE

MOV P5,A

;задержка с помощью таймера

MOV R1,#64H;установка счётчика

TIM5:

mov 0xA6, #0E1H

mov 0xA6, #01EH

MOV TMOD,#01H;режим работы таймера

MOV TL0,#9AH;устанавливаем таймер

MOV TH0,#19H;на 1 мс

SETB TR0;установка бита

WAIT5:

mov 0xA6, #0E1H

mov 0xA6, #01EH

JNB TF0, WAIT5

CLR TR0

CLR TF0

DEC R1;декремент счётчика

MOV A,R1

ORL A,#0H

JNZ TIM5

JMP BEG;зацикливание программы

END

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

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