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

谢谢... 谢谢 展开
 我来答
百度网友d2d7c8d
2013-12-23 · TA获得超过528个赞
知道小有建树答主
回答量:109
采纳率:50%
帮助的人:51.5万
展开全部
楼上的代码要用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);//阻塞
}
匿名用户
2013-12-23
展开全部
count=1;while循环{sleep 0.0005s,然后输出count%2,count+=1}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhxiufan
推荐于2017-05-20 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38387
国家科技进步奖

向TA提问 私信TA
展开全部
#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);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式