要求输出周期为200us,占空比为50% 的方波,即方波的高电平时间=100uS,低电平时圆仿滑梁间=100uS。
所以每定时100uS便产生一次中断,并将输出信号状态翻转一次;
sbit cp=P1^7;
void timer1 interrupt 3
{ cp=~cp}
void main()
{
TMOD=0x20// 定时器1采用方式2 进行定时;
TH0=256-100 //橘让纤定时100uS;
TL0=TH0
EA=1ET1=1TR1=1
cp=1
while(1){}
}
主程序里这样设置TMOD=0x10//定时器1作为定时器用
TH1=(65536-50000)/256
TL1==(65536-50000)%256
EA=1//开总中断
ET1=1//允许定时器1中断
TR1=1//首皮启动者旅差定时器1
中断程序如下:
void
timer1()interrupt
3//注意:定时器1的中断序镇中号为3
{
TH1=(65536-50000)/256
TL1==(65536-50000)%256
P1.7=~P1.7
}
主程序如下:uchar a=0
void main( )
{
TMOD=0X02/定时器0工作方式2
TH0=56TL0=56//定时200us
ET0=1//允许定时器圆森郑0中断
EA=1//开橘颂总中断
TR0=1//启动定时器
while(1)/等待
}
中断程序:
void timer0() interrupt 1
{
a++
if(a==50){a=0P0^0=!P0^0}中断50次是春昌10ms,周期20ms
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)