找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1525|回复: 1
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
ID:930905 发表于 2021-6-21 17:20 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
这个程序http://www.51hei.com/bbs/dpj-76392-1.html
求state, deteok, beep1在程序里代表什么和中断那个程序是怎么运行的

IMG_20210621_171714.jpg (1.49 MB, 下载次数: 53)

IMG_20210621_171714.jpg

IMG_20210621_171459.jpg (1.59 MB, 下载次数: 71)

IMG_20210621_171459.jpg

-7aec1c196b776feb.png (44.28 KB, 下载次数: 60)

-7aec1c196b776feb.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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 单片机教程网

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