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

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

#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)

}

这是一道不完整的题目吧,c语言需要硬件电路比如(单片机,PLC等)实现软件编写,是什么样的脉冲(有周期?有规律?方波?正弦?等),这才能针对性的给出代码,如果你是想用单片机实现方波或者正弦波的脉宽测量(这几样跟测量周期一样) 那么你可以考虑计时中断,当脉冲为1时,启动计时,当脉冲为0,结束计时,转换计时器的时间,脉宽就出来了,可以多次测量取平均值,测量脉冲的口可以随意选择,建议用中断口更好编写,普通口会比较麻烦。如果其他脉冲大部分可以用这个原理测试,但是有些会影响到精度,还需采取其他措施进行补偿。

提供个思路给你

计数器 模式

将脉冲接入定时器0的GATE 和中断0

将脉冲反向接入定时器1的GATE和中断1

让后在中断0里面读取 定时器1的计数器 并清零

让后在中断1里面读取 定时器0的计数器 并清零

这样

定时器1的记数就是 正脉宽

定时器0的记数就是负 正脉宽


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8085676.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存