就是这个东西 TMOD寄存器中的那个GATE位 很明显 手册中说道 当这位置1的时候 只有在INT0(P3.2)引脚为高电平的时候 并且TR0或者TR1置位的时候 定时/计数器才打开 我们就可以利用这个特点来测量一个脉冲的高电平的宽度 就是这个高电平的持续时间 那么怎么测量呢 说一下思路首先
我们让门控位GATE=1 并且启动定时/计数器 TR0 但是这时候寄存器TH0 TL0里面的数值并不会增加 因为INT0这个引脚上还没高电平 我们把要测量的脉冲接到P3.2这个引脚上 当高电平来的时候 TH0和TL0里面的数值就开始每过一个机器周期增加一 知道P3.2引脚上的高电平消失 当高电平消失的时候 自然 TH0和TL0也就停止计数了 这时候我们把TH0和TL0里面的数值读出来 根据时钟和机器周期的关系就可以的出来高电平的时间了 这里 简单算一下 吧 好算一点假设晶振频率是12MHZ那么机器周期就是1US 如果读出来 TH0+TL0=50000 那么这个高电平的持续时间就是50mS 能明白不 !!!我用仿真做了一下 得出的结果基本正确 这里说一下仿真的问题 就是 仿真里面好像默认的51的晶振频率是12MHZ 即使你搭建外部晶振电路也不能改变改变频率 还要复位貌似也不太好用 哎呀 算了 这个不太影响直接上代码 上图 看一下 下面的代码 我仿真里面设置的脉冲频率是1KHZ 占空比是50% 由这个代码得到的高电平的时间 理论值是500us 测得位501us 我觉得基本正确
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !