找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

对单片机中断程序不太懂,求state, deteok, beep1在程序里代表什么?

查看数: 1954 | 评论数: 1 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-6-21 17:20

正文摘要:

这个程序http://www.51hei.com/bbs/dpj-76392-1.html 求state, deteok, beep1在程序里代表什么和中断那个程序是怎么运行的

回复

ID:942477 发表于 2021-6-22 17:36
state, deteok, beep1是用户设定的3个bit型标志位,标志位就是对运行结果的标明。比如说你要跑五千米,跑道一圈只有400米,那我们可以声明一个变量uchar  flag,每当你跑一圈flag就++一次,那到时候如果想知道已经跑了几圈只需要看flag的值就可以了。我们也可以把它用作下一段程序执行的条件,比如说你跑到两千米要休息一下,那就 if (flag==5){休息一下};在这的话state, deteok, beep1是bit型,所以只有0和1。
  分析程序能看出beep1的值是由dateOK和state决定的:当state=1,dateOK=1时beep1=1;dateok是当state=1,tes-t --到0时为1;state是当第一次按下key2时为1,再按取反为0,如此往复。也能看出有且只有state=0时date beep1才置0。
  所以定时器0的中断就是:第一次开机,TIME=3,state, deteok, beep1都为0,中断内部一直ms++,k++,ms=0,不执行其他,主程序中一直数码管显示,检测key,关beep、led,置0 dateOK、beep1。当按下key1时,TIME(即tes-t)的值改变,其他不变。  按下key2时,state=1,此时tes-t开始每隔1秒减减,当tes-t=0时dateOK=1,紧接着beep1=1,然后蜂鸣器以300ms的周期开始响,直到beep1=0,也就是dateok=0,也就是state=0,即再次按下key2.以后就是如此重复,不过TIME的值是你上次的值不变。
   外部中断不用说了吧,当state=1时,初始化tes-t和ms。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表