
如果是12M晶振,257Hz,周期为389105us,40%占空比,高电平155642us,低电平233463us,程序如下:
#include<reg51h>
sbit pluse=P1^0;
unsigned char flag=0xff;
void t0isr() interrupt 1
{
flag=~flag;
if(flag)
{
TH0=(65536-155642)/256;
TL0=(65536-155642)%256;
pluse=1;
}
else
{
TH0=(65536-233463)/256;
TL0=(65536-233463)%256;
pluse=0;
}
}
main()
{
TMOD=0x01;
TH0=(65536-155642)/256;
TL0=(65536-155642)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}
主程序中:
TMOD=0x01;//定时器工作方式1,当然也可用方式2
TH0=(65536-250)/256;//定时250us
TL0=(65536-250)%256;
ET0=1;EA=1;//开中断
TR0=1;//启动定时器
while(1);//等待中断
中断程序中
TH0=⋯⋯//重装初值
TL0=⋯⋯
P1
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)