51单片机中如何通过一个按键实现暂停与恢复?需要一个编程的思想

背景是这样的:我采用矩阵式键盘,有十二个键执行不同的任务。有很多循环。现在我需要一个按键,这个键的功能就是,我那十二个任务不论执行到什么地方,只要暂停建按下,那么程序原地... 背景是这样的:我采用矩阵式键盘,有十二个键执行不同的任务。有很多循环。
现在我需要一个按键,这个键的功能就是,我那十二个任务不论执行到什么地方,只要暂停建按下,那么程序原地踏步,按其他键都不管用,再按暂停键恢复到原来的地方。
展开
 我来答
做一个快乐的茶农
高粉答主

2019-06-29 · 每个回答都超有意思的
知道答主
回答量:1396
采纳率:100%
帮助的人:33.2万
展开全部

1、创建项目文件。

2、按键:S1=P3^2,点亮: led=P1^5。

3、创建C语言主函数。

4、创建循环效果,检测效果。

while(1)   

{

}

5、创建选择效果。

6、当按下时,即暂停与恢复。

笔杆子与小尺子
推荐于2017-09-21 · TA获得超过751个赞
知道小有建树答主
回答量:357
采纳率:0%
帮助的人:110万
展开全部
有以下几种情况:
1.循环查询按键。当按键按第一次时间,进入第一层循环查询语句内部,执行恢复。不跳出该层循环,继续查询按键。当第二次按下时间,进入第二层循环查询语句内部,执行暂停。循环结束。若想反复暂停和恢复,就在外面再加一层while(1)类似的死循环,反复执行其内部的两层循环查询语句。
2.用一个标志变量,记住按键的状态。初始化为个值,如“暂停”,按键之后检查标志变量,是“暂停”就执行“恢复”,再让它变为“恢复”说明当前已经执行了恢复。反之亦然。
3.掉电暂停。这样需要按键能触发cpu工作。所以,需要按键接到外部中断上面。中断后可以恢复CPU工作。在中断中再判断是否要让cpu掉电与否。
不知道这种方法你能接受不?还是用外部中断。此按键触发中断后,关掉所有其他的中断,也即EA=0(最好先用个变量记住EA,方便恢复),然后就一直在中断中等待该按键第二次按下再恢复EA,最后退出中断。
更多追问追答
追问
谢谢大侠,你给的答案最全面。我考虑了一下,适合我用的只能是方式三了。请问,掉电模式和空闲模式有何区别?暂停后如何恢复?一个按键如何具体操作?
追答
空闲模式是指CPU不再执行程序,但是片内的外围电路(如定时/计数器,中断控制电路,串口)仍然工作。掉电模式是指当进入掉电模式时,执行最后一条指令后,振荡器停止,cpu不工作了,可以将电压降低到2V,片内RAM和SFR的值保持原值。终止空闲模式有两种方法:a.任何使能的中断,程序自动从中断服务程序处恢复。b.硬件复位。终止掉电模式:要先将电压恢复至cpu正常工作电压,再进行下列方法:A.硬件复位,这种复位不像正常复位一样RAM,SFR的值都恢复为默认值,而是能保存RAM掉电前的值,SFR就不能了。B. 外部中断0或1被触发,前提是他们要被使能,并且为电平触发。中断服务中不能有其他语句,直接返回(汇编RETI指令),cpu就恢复执行掉电执行指令后的下一条指令。
具体怎么控制,你看PCON寄存器吧,很容易。PD=1,进入掉电模式,IDL=1进入空闲模式。
按照你的意思,要使用外部中断恢复比较好。那个按键就接到外部中断上面吧。
外部中断终止掉电模式,RAM与SFR都能保存的。硬件复位是只能保存RAM。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lake_rd
2011-05-09 · TA获得超过1311个赞
知道小有建树答主
回答量:1434
采纳率:0%
帮助的人:825万
展开全部
就是使用51的中断就可以了!
你的其他12个按键也可以使用中断来处理,只是把那个暂停键设为级别最高,不管什么情况下改建按下就到该键的子程序运行(注意此时要关闭中断功能、只是判断该暂停键是否第二次按下),若按下就跳到原来暂停前的位置即可,并开启中断!
看是这个意思吗!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yjy_qwj
2011-05-09 · 超过49用户采纳过TA的回答
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:70.9万
展开全部
你说的暂停是指的,程序不执行其他操作?若是,请接着看
设定一个标志,当程序始终停滞在这个位置,或者是不执行其他程序,这个标志设为1时,此时执行空语句;当按键时,触发中断,把标志清零。
追问
谢谢大侠的回答。我的暂停是:程序在执行其他任何动作的时候,只要一按这个键,自动停住原地踏步。再按,返回到原程序继续执行。你给的答案暂时应该不能解决这个问题哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ch314156
2011-05-09 · TA获得超过4377个赞
知道小有建树答主
回答量:2036
采纳率:100%
帮助的人:1058万
展开全部
推荐暂停 用 掉电模式
更多追问追答
追问
嗯,谢谢大侠。答案很好。有人也这么给我说过。只是我以前还没用过掉电模式,请问具体操作?而且,用掉电模式一个键能处理的来么?我怎么想都需要两个键哦...
追答
你看下PCON这个寄存器  其实很简单  写个数据就行了   至于一个按键 你用一个全局整型变量 每次按键中断取反即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式