怎么用C语言编写51单片机测脉宽的程序~ 跪求完整程序!

 我来答
zhxiufan
2013-05-07 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38379
国家科技进步奖

向TA提问 私信TA
展开全部
#include<reg51.h>

#define uint unsigned int
uint width;
sbit pulse=P3^2;
main()
{
TMOD=0x09; //定时器0模式1,GATE=1
TH0=0;
TL0=0;
while(pulse); //等待P3.2变低
TR0=1; //启动定时器0
while(!pulse); //等待脉冲变高
while(pulse); //等待脉冲变低
TR0=0; //关闭定时器0
pulse=TH0*256+TL0; //取定时值。
while(1);
}
sqbuzidjy
2013-05-07 · 超过18用户采纳过TA的回答
知道答主
回答量:97
采纳率:0%
帮助的人:28万
展开全部
sbit echo=P3^6;
cemk()
{uint mk=0;
TR0=0;
TH0=0;
TL0=0;
echo=0;
while((!echo);
TR0=1;
while(echo);
TR0=0;
mk=TH0*256+TL0
return mk;
}
主程序要加上
TMOD=0x11;
EA=1;
ET0=1;
把要测的端脚接P3.6调用cemk()程序返回的数据就是脉宽了(机器周期1us即(12MHZ晶振)测量范围0~65535us)如果害怕陷入死循环可以在while()语句里面加点保护。
这个只测量高电平时间周期时间zhxiufan答的就是,他的比较全
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式