
отчеты по лабораторным работам / общий отчет / Формирование серии прямоугольных сигналов - метод ШИМ
.docЛабораторная работа по Организации ЭВМ
Формирование серии прямоугольных сигналов - метод ШИМ
Выполнили: студенты группы 2100
Митрофанов Александр
Пермяков Валерий
Николаев Владимир
Голубцов Евгений
Таймер Тм0 переключает в режиме 2 по прерыванию бит INT1 – ШИМ на выходе Р3.3. В режиме GATE1 Tm1 измеряет полупериод прямоугольного сигнала INT1
F0/12
TF0
TL0
P3.3^1
пп прерывания таймера
TH0
3 0 P3
Int1
TH1
TL1 TL1P2
пп
прерывания
F0/12 TL1=0
Временная диаграмма
TF0
Int1 TL1++ TL1++
Реализация задачи на С
#include <reg51.h>
#define con (0x10000-10000)/256;
#define con2 (0x10000-10000)%256;
unsigned int x, abs;
void signal_handler() interrupt 0
{
x = (TL1 + (TH1<<8))*2;
TL1 = 0;
TH1 = 0;
}
void time_handler() interrupt 1
{
TL0 = con2;
TH0 = con;
P3 ^= 0x7F;
}
void main()
{
TR0 = 1;
IT0 = 1;
TMOD = 0x91;
TR1 = 1;
ET0 = 1;
EX0 = 1;
EA = 1;
for(;;);
}
Реализация задачи на ассемблере
iseg at 30h
Stack: ds 10
cseg at 0
ljmp start
cseg at 0Bh
ljmp ex00
cseg at 13h
ljmp ex01
cseg at 40h
start:
mov P3, #0
mov SP, #Stack-1
mov TMOD, #11h
setb EA
setb EX1
setb IT1
setb TR1
setb TR0
setb ET0
setb IE0
cikl: jmp cikl
ex00:
push ACC
mov TL0, #0xEF
mov TH0, #0xD8
mov a, P3
subb a, #0x7E
jz zero
mov P3, #0x7F
jmp nzero
zero: mov P3, #0
nzero:
pop ACC
Reti
ex01:
push ACC
mov P2, TH1
mov P1, TL1
mov TH1, #0
mov TL1, #0
pop ACC
Reti
end