|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
再问一个C51复位的问题 |
作者:圣域天子 栏目:单片机 |
C51上有一个RST的复位引脚,我不清楚它引起的复位是如何工作的. 1) 代码执行了一半,假设执行到了第100行.复位后是重新从main的第1行开 始,还是从101行开始啊? 2) 内存中的变量,堆栈等等会清空吗? 3)还会有其它什么影响吗? |
2楼: | >>参与讨论 |
作者: tanjc2 于 2006/1/23 13:56:00 发布:
AT89C51 1复位以后,从程序存储器的第一行开始执行,用c的话,应该就是main的第一行开始执行 2只要不掉电,片内RAM不会改变,但是复位会使一些特殊寄存器初始化,比如所SP |
3楼: | >>参与讨论 |
作者: zhaoyu2005 于 2006/1/23 14:00:00 发布:
复位当然是从0开始的 不知道你说的是硬件的RST引脚,还是软件的功能按钮,说得不清楚。 硬件的RST复位引脚,引起的复位,使单片机从零开始执行程序,一些相应的寄存器也恢复到复位值,RAM是否清零有两种情况:1.上电时RST引脚复位,RAM当然是零了。2.在不断电时复位,如果没有执行RAM清零的代码,RAM不清灵,如果有就清零了 C51软件里的RST功能按钮,产生复位,也是从0执行,但是你在C51软件里看是从main开始的。实际在执行到main是已经执行了STARUP.A51,将RAM清零了,堆栈和内存是RAM的一部分,当然清零了。 |
4楼: | >>参与讨论 |
作者: xymxym 于 2006/1/23 15:31:00 发布:
不是重新上电的情况下 复位脚引起的复位,变量保持不变,程序从0开始执行。 |
5楼: | >>参与讨论 |
作者: zhaohe2001 于 2006/1/23 17:21:00 发布:
RAM 问个问题!上电复位后RAM是清零还是置FFH?? |
6楼: | >>参与讨论 |
作者: AIRWILL 于 2006/1/23 19:11:00 发布:
上电复位后RAM是随机值 |
7楼: | >>参与讨论 |
作者: AIRWILL 于 2006/1/23 19:13:00 发布:
不过c51 的启动代码startup.a51会全部清零后再执行main() |
8楼: | >>参与讨论 |
作者: hotpower 于 2006/1/23 19:44:00 发布:
IDATALEN EQU 0x00就不会清零了 Keil 8.01的startup.a51的脚本文件真方便 |
9楼: | >>参与讨论 |
作者: AIRWILL 于 2006/1/26 13:09:00 发布:
呀,8.01都尝到鲜啦 还有什么好味道哪? |
10楼: | >>参与讨论 |
作者: 12864 于 2006/1/27 2:28:00 发布:
hotpower吃到野味了,俺流口水啊 |
11楼: | >>参与讨论 |
作者: hotpower 于 2006/1/27 2:40:00 发布:
晕到~~~只是将新的startup.a51强行覆盖旧的即可流口水了 |
12楼: | >>参与讨论 |
作者: 12864 于 2006/1/27 23:31:00 发布:
俺是说你用了8.01 野味啊,我还没打到呢 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |