#include
//设CPU是时钟12MHz的8051系列
void SetupTimer0()
{
TMOD &= 0XF0; //仅保留T1信息
TMOD |= 0X02; //设置T0: 定时功能,方式2,自动重载8位定时器/计数器
TH0 = 256-250;//每个周期为1us, 250us=0.25ms, 定时每0.25ms中断一次
TL0 = 256-250;//自动重装,TL0, TH0均置256-250
TR0 = 1; //开启定时器
ET0 = 1; //定时器0中断打开
}
void Timer0_ISR() interrupt 1 //中断服务程序
{
static data unsigned char us250;
static data unsigned char p1;
if (++us250>=2)
{
us250=0; //每0.25msx2=0.5ms中断一次。
p1^=1; P1=p1; //p1完成翻转后输出到P1,两次翻转完成一个周期输出
}
}
void main()
{
data unsigned char p1,p2;
SetupTimer0();
EA = 1; //全局中断打开
while(1); //死循环,中断程序完成波形输出
}