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

单片机频率计的这段程序怎么理解?

chunyang 2017-05-24 浏览量:760


哪位大神帮我讲解一下这段代码。

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 定时器1,因为TH1与TL1配置成了0,配置的计数值是65536。也就是每进入一次定时器1的中断,计数值就是65536了,这也是为什么在定时器0中的nn要乘以65536.
    定时器0配置的计数值是到了0x3cb0,由于高8位乘以了256.

    定时器0中的counter到达890后计算一次计数值并显示
    但是你的counter定义在了中断内,是个局部变量,每次进中断都是0,不可能达到890的,你应该定义成全局变量才对中以。
    • 发布于 2017-05-24
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:4
  • 这段代码无非就是对电平进行计时而已吧
    • 发布于2017-05-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 使用定时器中断对某个引脚的高电平时间计数

    • 发布于2017-05-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个代码是定时器产生计数,然后使用数码管显示出来的吧
    • 发布于2017-05-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 感覺就是TIMER1和TIMER0串接出來的頻率,然後對其頻率做計數並輸出,

    static uint counter=0;是不影響功能,但建議還是將中斷中使用的變數宣告成volatile,這樣才不會有優化問題(習慣)

    即是

    volatile uchar mm,tmp;
    volatile uint counter=0;
    宣告成Global變數,還有mm有overflow(890>255)的問題

    以上供參考

    • 发布于2017-05-25
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

单片机频率计的这段程序怎么理解?