单片机执行完中断程序后,我想让程序再从头开始,而不是接着原来的中断点进行下去,我该怎样办?

51,C语言... 51,C语言 展开
 我来答
谦虚还清雅丶彩旗Qe4c
2012-08-13 · 超过24用户采纳过TA的回答
知道答主
回答量:83
采纳率:0%
帮助的人:61.1万
展开全部
硬件电路上用一个I/O口连接到复位端,然后直接在单片机的中断程序的最后加一个控制该I/O口的电平的指令就好了。或者我百度的其他人的资料:
这不是复位,只是把程序转到地址0去执行,不如用一个JMP更直接。目前可能极少数单片机或者用户已经自行添加Boot load时用户程序的程序开始地址并不为0x0000,所以需要查找这些特定单片机的启动地址。
在keil C51下面可以这样实现:
void soft_reset(void)
{
((void (code *) (void)) 0x0000) ();
}
在需要软件复位的地方使用语句:
soft_reset();
一般可实现软件复位。
追问
你好,我用了你的语句后,可以从头开始,但是好像复位后就不能再进行中断了,就算触发也没有了反应,是这样的吗?
追答
这个是我在网上找的,但是感觉这样能行,最近上班忙。没有验证

参考资料: http://zhidao.baidu.com/question/92017853.html

生活如歌_
2012-08-13 · TA获得超过1.5万个赞
知道大有可为答主
回答量:7398
采纳率:78%
帮助的人:2189万
展开全部
在中断返回指令前加上两句入栈指令,比如:
MOV A,#00H
PUSH ACC
PUSH ACC
RETI
这样当中断返回时自然就返回到0000H处了。
追问
你好,请问用C语言是怎样处理的呢?
追答
C语言的话嵌套这两句汇编指令。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6eab688
2012-08-13 · TA获得超过4692个赞
知道大有可为答主
回答量:962
采纳率:50%
帮助的人:951万
展开全部
不是从中断返回,而是产生复位一样的效果?
如果是这样,修改一下电路,从通用端(例如P1.0)连个信号到复位端,在中断程序中向P1.0置个位。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
laohuang81
2012-08-13 · TA获得超过298个赞
知道小有建树答主
回答量:315
采纳率:0%
帮助的人:86.1万
展开全部
多少时间后关掉中断。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式