完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 2801871981 于 2021-10-19 11:42 编辑
怎样在我的源程序中实现软件复位? 我们知道51单片机可以把数据放在程序存储器里面,也就是程序和数据没有本质区别,都是一些特定的数据。如果我们将一段程序,以数组数据的形式存储在程序存储器里面,那么是不是也可以执行呢?答案是肯定的。 答: 您可以使用下面的程序跳到0000H实现软复位,下面的程序实际上是一个函数指针,指针指向了0000H地址。 ((void (code *) (void)) 0x0000) (); 下面的例子将实现软件自复位void reset (void) { ((void (code *) (void)) 0x0000) (); } void main (void) { reset (); } 你可能注意到以上的软复位程序并不能清除8051的中断系统和某些8051的外围设备,当您在中断程序中调用上面的软件复位程序后,中断将再不能触发。因此,以上的软复位程序不能在中断子程序中调用。 下面的小段汇编函数可以在中断程序或主程序中调用,该函数将0x0000压栈,然后通过“REti”出栈,这将清除中断环境并让程序从0000H重新开始运行。 以上程序在选择bank 0寄存器组时工作良好,假如选择的不是bank0寄存器组,那么可能无法获得预料的结果。你应该在以上的程序或启动代码中加上“MOV PSW, #0”来选择bank 0寄存器组。 [url=]http://baidu.com1">111111[/url] |
|
相关推荐
1 个讨论
|
|
[url=]1223[/url][url=]http://baidu.com">1123[/url]
|
|
|
|
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
737 浏览 1 评论
910 浏览 2 评论
为什么在频率为10^3 Hz处,产生的相移就可以确定约为-90度
1515 浏览 1 评论
【高手问答】电路的功能是为了0.6v到40v之间调压,运放发热严重
3998 浏览 8 评论
USB3.0 工业相机的传输速率是否受到电脑主板某些硬件的限制?
1294 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 16:44 , Processed in 0.631087 second(s), Total 43, Slave 33 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号