软件复位
来源:互联网 发布:电信网络营业厅 编辑:程序博客网 时间:2024/06/11 08:09
/***************************************************
*作 者 :温子祺
*联系方式:wenziqi@hotmail.com
*说 明 :软件复位的研究
***************************************************/
ISP_CONTR:ISP/IAP控制寄存器
D7
D6
D5
D4
D3
D2
D1
D0
复位值
ISPEN
SWBS
SWRST
-
-
WT2
WT1
WT0
000x,0000
- SWBS:当设置为0时,软件复位后从用户应用程序区启动;当设置为1时,软件复位从ISP程序区启动,。要与SWRST直接配合才可以实现。
- SWRST:当设置为0时,不执行软件复位;当设置为1时,产生软件系统复位,硬件自动清零。
该复位是整个系统复位,所有的特殊功能寄存器都会复位到初始值,I/O口也会初始化。
【例子】通过按键中断来使MCU软件复位,复位后闪烁LED灯一段时间,然后MCU保持当前状态,空转。若要继续使LED重新闪烁,要求MCU复位来进行。
软件复位代码:
1 #include "stc.h"
2
3 #define LED_PORT P2 //定义LED控制端口为P2口
4
5 /********************************************
6 *函数名称:Delay
7 *输 入:无
8 *输 出:无
9 *说 明:延时一段时间
10 ********************************************/
11 void Delay(void)
12 {
13 unsigned char i,j;
14
15 for(i=0;i<130;i++)
16 for(j=0;j<255;j++);
17 }
18 /********************************************
19 *函数名称:SoftReset
20 *输 入:无
21 *输 出:无
22 *说 明:软件复位MCU
23 ********************************************/
24 void SoftReset(void)
25 {
26 ISP_CONTR=0x20;
27 }
28 /********************************************
29 *函数名称:EXTInit
30 *输 入:无
31 *输 出:无
32 *说 明:外部中断初始化
33 ********************************************/
34 void EXTInit(void)
35 {
36 EX1=1; //允许外部中断1中断
37 IT1=0; //低电平触发
38 EA=1; //允许所有中断
39 }
40 /********************************************
41 *函数名称:main
42 *输 入:无
43 *输 出:无
44 *说 明:函数
45 ********************************************/
46 void main(void)
47 {
48 unsigned char i;
49
50 EXTInit(); //外部中断初始化
51
52 for(i=0;i<20;i++) //循环闪烁LED灯
53 {
54 LED_PORT=~LED_PORT;
55 Delay();
56 }
57
58 while(1)
59 {
60 ;//空操作
61 }
62 }
63 /********************************************
64 *函数名称:EXT1IRQ
65 *输 入:无
66 *输 出:无
67 *说 明:外部中断1中断服务函数 复位操作
68 ********************************************/
69 void EXT1IRQ(void)interrupt 2
70 {
71 SoftReset();
72 }
73
代码分析:
SoftReset是复位操作函数,对ISP/IAP控制寄存器ISP_CONTR赋值位0x20,即将ISP_CONTR
中“SWRST”置1来进行软件复位。要说明的是这里的软件复位是真正意义上的复位,同硬件复位的效果一模一样。
在main函数中,初始化外部中断后进行LED灯闪烁一阵时间,然后进入while(1)死循环进行空操作。
软件复位操作放在外部中断1中断服务函数函数当中,只要外部中断1被触发,单片机就进行复位。
转自:http://www.cnblogs.com/wenziqi/archive/2010/07/01/1769296.html
- 软件复位
- 对于STM32软件复位
- STM32的软件复位
- 芯片软件复位不成功
- STM32软件复位
- stm32f070 软件复位
- STM软件复位
- STM32程序软件复位
- STM32软件复位办法
- 51单片机的软件复位
- STC89C52MCU--软件实现系统复位
- STM32 关于复位类型的判断及软件复位
- STM32 关于复位类型的判断及软件复位 bug
- 硬件复位、软件复位、上电复位的异同
- MCS51系列单片机软件复位的方法
- 单片机的软件复位分析(C语言)
- 软件复位问题(跳转PC)
- 剖析单片机C语言软件复位
- SCRIBEFIRE4l9i33IJpsSCRIBEFIRE
- 波特率的研究
- 多机通信的研究
- sql 语法大全
- 中断唤醒
- 软件复位
- 动态创建的 CEdit 被限制长度,增加 ES_AUTOHSCROLL 属性;被无法Tab激活焦点,增加 WS_TABSTOP 属性
- GetMessage(), PeekMessage(), PostMessage(), SendMessage()
- Virtualbox安装使用手记
- DES 加解密
- 获取网页中的内容(CDHtmlDialog)
- Ajax乱码问题
- 重载赋值运算符与拷贝构造函数的区别
- 重定向编译时的警告和错误信息