Cac pac tham khaoxem cai nay the nao!
void khoitaotimer0(void)// Ham khoi tao
{
EA=0;// Cam ngat toan cuc
TMOD=0x02;// Timer 0 che do 2 8 bit auto reload
TH0=0x9B;// Gia tri nap lai 155 doi ra so hex
TL0=0x9B;// Gia tri khoi tao 155 doi ra so hex
ET0=1;// Cho phep ngat timer 0
EA=1;// Cho phep ngat toan cuc
TR0=1;// Chay timer 0 bat dau dem so chu ki may
}
* Hàm ngat:
unsigned char dem=0;// Khai bao bien dem de dem tu 1 den 10
unsigned char phantramxung;// Bien chua phan tram xung(0...10)
void timer0(void) interrupt 1 //Ngat timer 0
{
TR0=0;// Dung chay timer 0
TF0=0;// Xoa co, o che do co tu duoc xoa,che do khac can toi cu viet vao day
dem++;
if(dem<phantramxung) P2_0=1;// Neu bien dem < phan tram xung thi dua gia tri 1 ra
chan, xung 5V
else P2_0=0;// Neu dem = phan tram xung
if(dem==10) dem=0;// Neu dem du 10 thi gan lai bang 0 de bat dau chu ki moi
TR0=1;// Cho chay timer
}
De có the thay doi do rong xung thì ta l
u do rong xung vào 1 biên, vì hàm
ngat không cho truyên biên vào ta khai báo biên dó là biên toàn cc de có
the gán giá tr mi hàm.
100 uS ngat 1 lân de xác dnh d chu kì 1000 uS ta cân dêm t" 1 dên 10 ta
khai báo biên dêm.
void timer0(void) interrupt 1 //Ngat timer 0
{
TR0=0;// Dung chay timer 0
TF0=0;// Xoa co, o che do co tu duoc xoa,che do khac can toi cu viet vao day
TH0=0xAB;
TL0=0xAB;
….
TR0=1;// Cho chay timer
}
Câu trúc hàm ngat timer nào cung phi theo, do chê do 2 t% dong np li nên
kô cân gán giá tr cho TH0 và TL0.
Vê biên dem se dêm t" 1 dên 10 nêu bang 10 kêt thúc 1 chu kì 10*100
=1000 uS, ta gán li nó bang 0 de sang chu kì mi.
if(dem<phantramxung) P2_0=1;// Neu bien dem < phan tram xung thi dua gia tri 1 ra
chan, xung 5V
else P2_0=0;// Neu dem = phan tram xung
Câu lenh này kiem tra nêu dêm nh( hơn phantramxung thì se d
a ra cong
giá tr 1, bang hoac ln hơn se d
a ra giá tr 0. Khi vào ch
ơng trình chính ta
ch
viec thay doi giá tr biên phantramxung thì do rong xung se thay doi.
* Hàm main:
void main(void)
{
khoitaotimer0();
while(1)
{
phantramxung=9;
delaylong(20000);
phantramxung=4;
delaylong(20000);
}
}