• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

检测51单片机某个io口输入信号的高低电平时间

d772899434a28000 2019-05-24 浏览量:3594
本人是个新手刚刚接触51单片机,怎么编程去计算51单片机某个io口的输入高低电平时间,比如我从P1.0口输入了一个方波信号,那么怎么通过单片机编程去检测我这个方波高电平的时间(或者说长度),还有低电平的时间(或者说长度),这个检测时间要精确到ms。
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 通过外部中断和定时器计算时间,原理就是下降沿触发中断后立马开启定时器,然后在主循环里面判断io电平变高就停止计时,这个计数器就是脉宽长度,还要考虑计数器溢出次数一起计算,注意这种测量一定要用外部晶振比较精确
    • 发布于 2019-05-24
    • 举报
    • 评论 0
    • 1
    • 0

其他答案 数量:4
  • 有个思路,主函数用while循环,同时配置一个定时器,在while(1)循环内判断P1.0的电平,然后开启中断计时。并把用于计时的变量保存下了就行吧
    • 发布于2019-05-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果精度只需要到ms级别,连中断都可以不用,直接在主循环里面一直判断某个GPIO的电平,然后当GPIO发生电平变化时就触发定时器计数,再次变化停止定时器就行,不过这种应用中,主循环里面不要有延时
    • 发布于2019-05-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个肯定要用定时器,电平变化时通过定时器计数来判断电平纯在的时间
    • 发布于2019-05-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个可以用外部中断,触发对应的定时器计时,在电平变化后停止计时
    • 发布于2019-08-09
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

检测51单片机某个io口输入信号的高低电平时间