#include
int a; //用于计数
void main ()
{
TMOD=0X01; //T0工作方式1
EA=1;
ET0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
led=1;
while (1)
{
if (a>=20) //a=20时刚好1s
{
a=0;
led=~led;
}
}
}
void timer0 () interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
这个程序已经在实验板上实验过,能够实现其功能
;每隔一秒,取反P1.0。
;汇编程序,不知道行不行:
ORG 0000H
SJMP START
ORG 000BH
MOV TH0, #6
DJNZ R7, E_T0
MOV R7, #125
CRL P1.0
E_T0:
RETI
START:
MOV TH0, #6
MOV R7, #125
MOV IE, #82H
SETB TR0
SJMP $
END
晶振频率使用 12MHz。