
отчеты по лабораторным работам / общий отчет / Таймеры
.docЛабораторная работа по Организации ЭВМ
Таймеры
Выполнили: студенты группы 2100
Митрофанов Александр
Пермяков Валерий
Программа часы.
Таймеры по переполнению вызывают прерывания – внутренние события. Счетчик событий используются для расчета текущего времени в сек и минутах в портах P1,P2
Реализация задачи на С
#include <reg51.h>
unsigned char t=0;
int_0() interrupt 3
{
t++;
TH1 = 0x3C;
TL1 = 0xAF + TL1;
}
main()
{
P3=0;
P1=0;
P0=0;
TMOD = 0x10;
TH1 = 0x3C;
TL1 = 0xAF;
ET1 = 1;
TR1 = 1;
EA = 1;
while(1)
{
if (t==20) {t=0; P1++;}
if (P1==60) {P1=0; P0++;}
};
}
Реализация задачи на ассемблере
iseg at 30h
Stack: ds 10
cseg at 0
ljmp start
cseg at 1Bh
ljmp ex00
cseg at 40h
start:
mov P1, #0
mov P2, #0
mov P3, #0
mov R1, #1
mov SP, #Stack-1
mov TMOD, #10h
mov TH1, #3Ch
mov TL1, #0AFh
setb EA
setb TR1
setb ET1
cikl:
mov A, R1
mov B, #20
subb A,B
jnz p_1
call calc0
p_1:
mov A, P1
mov B, #60
subb A,B
jnz p_2
call calc1
p_2:
jmp cikl
ex00:
push ACC
mov A, R1
inc A
mov R1, A
mov TH1, #3Ch
mov TL1, #0AFh
pop ACC
Reti
calc0:
mov A, P1
inc A
mov P1, A
mov R1, #1
ret
calc1:
mov A, P2
inc A
mov P2, A
mov P1, #0
ret
end