如何实现STC15单片机的复位操作?
STC15系列单片机提供了多种复位方式,包括外部RST引脚复位、软件复位、掉电复位/上电复位、内部低压检测复位、MAX810专用复位电路复位、看门狗复位和程序地址非法复位,下面将详细介绍这些复位方式及其实现方法。
一、软件复位
IAP_CONTR寄存器
SWBS位(第6位):软件选择启动区,当该位为1时,选择从系统ISP监控程序区启动;当该位为0时,选择从用户应用程序区启动。
SWRST位(第5位):软件复位控制位,当该位为0时,表示没有复位操作;当该位为1时,软件控制产生复位,单片机自动复位。
PCON寄存器
POF位(第4位):上电复位标志位,当单片机断电后,上电复位标志设置为1,该位由软件清除。
示例代码
#include <STC15F2K60S2.H> #include <stdio.h> #include <intrins.h> void Delay2000ms(void); void UartInit(void); void GpioInit(void); void main(void) { GpioInit(); UartInit(); Delay2000ms(); Delay2000ms(); Delay2000ms(); Delay2000ms(); Delay2000ms(); printf("This is a test of soft reset...\r "); if (PCON & 0x10) { // 检测是否为上电复位 printf("Poweron reset is detected!\r "); PCON &= ~0x10; } else { // 否则本次为软件复位 printf("Soft reset is detected!\r "); } P55 = 0; Delay2000ms(); P55 = 1; Delay2000ms(); P55 = 0; Delay2000ms(); printf("Soft reset is executed...\r "); IAP_CONTR &= ~0x40; // 软件复位后直接执行用户代码 IAP_CONTR |= 0x20; // 软件复位 for (;;) { ; } } void UartInit(void) { // 9600bps@11.0592MHz SCON = 0x50; // 8位数据, 可变波特率 AUXR |= 0x01; // 串口1选择定时器2为波特率发生器 AUXR |= 0x04; // 定时器2时钟为Fosc, 即1T T2L = 0xE0; // 设定定时初值 T2H = 0xFE; // 设定定时初值 AUXR |= 0x10; // 启动定时器2 } char putchar(char c) { SBUF = c; while (TI == 0); TI = 0; return c; } void GpioInit(void) { // 初始化GPIO端口 P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; } void Delay2000ms(void) { // @11.0592MHz unsigned char i, j, k; _nop_(); _nop_(); i = 85; j = 12; k = 155; do { do { while (k); } while (j); } while (i); }
二、外部RST引脚复位
通过外部RST引脚输入高电平信号,可以实现对单片机的复位,这种方式常用于手动复位或外部设备触发的复位。
三、掉电复位/上电复位
当单片机断电后再上电时,系统会自动进行上电复位,上电复位标志位POF会被置1,需要通过软件清除该标志位。
四、内部低压检测复位
当单片机内部电压VCC低于设定的低压检测门限电压时,PCON寄存器中的LVDF位会自动置1,可以在烧录时选择LVDF置1时单片机复位或是申请中断停止程序。
五、MAX810专用复位电路复位
使用MAX810专用复位电路,可以在电源电压异常时自动复位单片机,确保系统稳定运行。
六、看门狗复位
看门狗定时器在设定时间内未被清零,会导致系统复位,这通常用于防止系统进入死循环或长时间无响应的情况。
七、程序地址非法复位
当程序计数器指向非法地址时,系统会自动复位,以防止程序跑飞或执行错误指令。
STC15系列单片机提供了多种复位方式,以满足不同应用场景的需求,通过合理配置和使用这些复位方式,可以有效提高系统的可靠性和稳定性,特别是在软件开发过程中,利用软件复位功能可以方便地进行调试和测试,而不必频繁重启硬件设备。
作者:豆面本文地址:https://www.jerry.net.cn/articals/273.html发布于 2024-11-24 00:10:17
文章转载或复制请以超链接形式并注明出处杰瑞科技发展有限公司