如何用定时器中断产生1khz的方波 单片机at89c51 用C语言

谢谢

楼上的代码要用6M的晶振,还有定时器没有重新开启;
以下代码借用楼上的,用12M晶振 ,分给楼上吧
#include<reg51.h>sbit pulse=P1^0;//脉冲输出引脚P1^0;void t0isr() interrupt 1 //定时器0中断服务函数{TH0=(65536-1000)/256;//重新赋值TL0=(65536-1000)%256;pulse=~pulse;//电平取反
TR0=1;//重新开启定时器!
}main(){TMOD=0x01;//16位定时器TH0=(65536-1000)/256;//加法计数器 12M晶振 1000个1us 即频率1KHz
TL0=(65536-1000)%256;TR0=1;//开启定时器ET0=1;//开启定时器中断EA=1;//开启总中断while(1);//阻塞
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-23
count=1;while循环{sleep 0.0005s,然后输出count%2,count+=1}
第2个回答  推荐于2017-05-20
#include<reg51.h>
sbit pulse=P1^0;
void t0isr() interrupt 1
{
TH0=(65536-500)/256;
TL0=(65536-500)%256;
pulse=~pulse;
}
main()
{
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}本回答被网友采纳