51单片机外部中断问题 50

刚学不久,有些表述可能不太专业。片子用的是89c52rc以及12c5a60s2。程序如图功能很简单,main就是八位数码管0-7流水显示,外部中断0(低电平触发)驱动蜂鸣... 刚学不久,有些表述可能不太专业。
片子用的是89c52rc以及12c5a60s2。
程序如图

功能很简单,main就是八位数码管0-7流水显示,外部中断0(低电平触发)驱动蜂鸣器和另一组二极管。
但实际使用时,表现为不中断时,蜂鸣器响八次之后(也就是执行一次touch函数),八位数码管流水显示一次,然后蜂鸣器再响八次。
如果这时候将外部中断口接地的话,八位数码管停止,但蜂鸣器却继续工作。
当时就理解不了问题出在哪里,猜测会不会因为某些原因,使得单片机没有正确识别中断程序touch,并由此反复执行main和touch,但main本身就是个while循环,后面还补了一个while(1),照理说未中断情况下,程序是绝对不可能跑偏到touch上的。
拿去给老师看了看,猜测是片子的问题。但换了12c5a60s2问题依旧。
这时候,突然考虑到,外部中断0不行,那改成外部中断1呢?结果修改以后,居然可以了!
那这诡异的结果是什么道理?没可能两块片子的外部中断0都出问题了吧……
展开
 我来答
凯叔的故事堂
2019-01-30 · TA获得超过3765个赞
知道大有可为答主
回答量:3098
采纳率:29%
帮助的人:480万
展开全部
如果是下降沿触发(it0=1)就只会执行一次中断程序。电平触发(it0=1)的话每次执行完中断里面的程序(只要不关闭中断)就又跳进中断里去了,不断的循环执行。
循环的频率跟晶振有关,晶振的频率直接关系到单片机执行指令的速度。频率越高速度也就越快。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
落叶l无情
2015-07-24 · TA获得超过1417个赞
知道大有可为答主
回答量:1372
采纳率:0%
帮助的人:1421万
展开全部
看程序,我怎么觉得应该是:
不中断时,蜂鸣器一直响,八位数码管流水显示;
中断时,八位数码管停止,蜂鸣器响8次。
更多追问追答
追问
蜂鸣器beep只在中断程序touch里改变过……main里没有再改变beep的值……所以按程序,不中断的时候,蜂鸣器是绝对不响的才对吧?
追答
我不知道你的蜂鸣器是高电平响,还是低电平响,如果是高电平响,那么在main中beep=1,则一直响,否则就一直不响(非中断时)。也不应该是你说的那样非中断时是会响8次
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式