C51: 用C51实现软件复位
问:
怎样在我的源程序中实现软件复位?
答:
您可以使用下面的程序跳到0000H实现软复位,下面的程序实际上是一个函数指针,指针指向了0000H地址。
((void (code *) (void)) 0x0000) ();
下面的例子将实现软件自复位void reset (void)
{
((void (code *) (void)) 0x0000) ();
}
void main (void)
{
reset ();
}
你可能注意到以上的软复位程序并不能清除8051的中断系统和某些8051的外围设备,当您在中断程序中调用上面的软件复位程序后,中断将再不能触发。因此,以上的软复位程序不能在中断子程序中调用。
下面的小段汇编函数可以在中断程序或主程序中调用,该函数将0x0000压栈,然后通过“RETI”出栈,这将清除中断环境并让程序从0000H重新开始运行。
?PR?RESET SEGMENT CODE
RSEG ?PR?RESET
; C prototype: void reset (void);
PUBLIC reset
reset: POP ACC pop return address
POP ACC
CLR A push 0 as new
PUSH ACC return address to stack
PUSH ACC
RETI execute return of interrupt
END
以上程序在选择bank 0寄存器组时工作良好,假如选择的不是bank0寄存器组,那么可能无法获得预料的结果。你应该在以上的程序或启动代码中加上“MOV PSW, #0”来选择bank 0寄存器组。
关键字:源程序 软件复位
引用地址:
在源程序中实现软件复位
推荐阅读最新更新时间:2024-03-16 15:56
基于MSP430 Timer_B的D/A转换及C语言源程序
本文分析了利用MSP430的TImer_B在比较模式下输出的脉宽调制(PWM)波,来实现D/A转换的工作原理。介绍了利用MSP430F449的TImer_B的PWM输出产生正弦波和直流电平的方法,并给出了对应的硬件电路和C语言源程序。 1.简介 1.1 MSP430单片机介绍 虽然目前在国内市场上应用较多的单片机仍然是8位单片机,但是由美国德州仪器(TI)公司推出的16位单片机MSP430具有处理能力强、运行速度快、低功耗、指令简单等优点。并采用了JTAG技术、FLASH在线编程技术、BOOTSTRAP等诸多先进技术,因此具有很高的性价比,在欧洲市场已得到了非常广泛的应用。虽然MSP430进入国内市场的时间不是很长,但是因其具
[单片机]
基于机智云的智能感应灯源程序
实现功能:人走灯量 手机APP调节光强度 远程控制灯 云端数据函数:(int8_t ICACHE_FLASH_ATTR gizwitsEventProcess(eventInfo_t *info, uint8_t *data, uint32_t len)) 继电器,人体红外,白灯标志位定义;RGB颜色定义 RGB开关标志位设置 白灯开关标志位 继电器开关标志位 RGB颜色选择标志位(7种颜色) 默认三种颜色标志位选择(红黄蓝) 事件上报处理函数:void ICACHE_FLASH_ATTR userHandle(void) 继电器控制: RGB开关控制 白灯强弱控制 RGB
[单片机]
51单片机模拟串口源程序
单片机模拟串口实验,在没有串口的单片机上想使用串口功能这就需要模拟一个串口了 单片机源程序如下: #include reg51.h typedef unsigned char BYTE; typedef unsigned WORD; typedef bit BOOL; #define BAUD 0xFE80 /* 9600bps@11.0592MHz */ sfr AUXR = 0x8E; sbit RXB = P3^0; /* 定义串口TX RX端口 */ sbit TXB = P3^1; BYTE TBUF,RBUF; BYTE TDAT,RDAT; BYTE TCNT,RCNT
[单片机]
读写PIC18F452內部EEPROM的源程序实例
读写PIC18F452內部EEPROM的实例源程序 list p=18f452 #i nclude P18F452.INC ; ;---- 18F452 RAM LOCATIONS ------ Data_EE_Addr EQU 0X000 Data_EE_Data EQU 0X001 EEPROM_Buffer equ 0x02 ;--------VECTORS------------ org 0x00 bra START ;-------PROGRAM-------------- org 0x20 START rcall INIT ; ;---- Test th
[单片机]
MCS51系列单片机软件复位方法介绍
有的单片机(如8098)有专门的复位指令,某些增强型MCS-51系统单片机虽然没有复位指令,但片内集成了WATCHDOG电路,故抗干扰也不成问题。而普及型MCS-51系列单片机(如8031和8032)既然无复位指令,又不带硬件WATCHDOS,如果没有外接硬件WATCHDOG电路,就必须采用软件抗干扰技术。常用的软件抗干扰技术有:软件陷阱、指令冗余、软件WATCHDOG等,它们的作用是在系统受干扰时能及时发现,再用软件的方法使系统复位。所谓软件复位就是用一系列指令来模仿复位操作,这就是MCS-51系列单片机所特有的软件复位技术。 现用一简单的实验说明,实验电路如附图所示。接于仿真插座P1.0的发光二极管LED0用来表示
[单片机]
MSP430模拟串口的源程序-汇编语言
#i nclude MSP430x11x1.h ; ; MSP430F1121 ; ----------------- ; /|\| XIN|- ; | | | 32k ; --|RST XOUT|- ; | | ; | | 2400 8N1 ; | TX/P1.1|-------- ; | TX/P2.2| -------- ; RXD equ 004h ; RXD on P2.2 TXD equ 002h
[单片机]
注释非常详细的51单片机IIC源程序
自己写的IIC程序,因为初学,还是有借鉴的地方,但是所有程序均为手打,每一行都有详细的注释 单片机源程序如下: #include reg52.h #include iic.h sbit IIC_SDA=P2^6; //声明IIC总线的数据线接在单片机的P2.6端口。 sbit IIC_SCL=P2^7; //声明IIC总线的时钟线接在单片机的P2.5端口。 //void delay(unsigned int t) //{//延时函数 // while(t){t--;}; //延时循环计数 //} //-----------------------------------------
[单片机]
MSP430与ST7529液晶显示控制器源程序
简介:MSP430与ST7529液晶显示控制器源程序 /*-------------------------------------------------------------------------- File Name:HG16016005T.C; Description:This Resouce Is For Dot Matrix Liquid Crystal Modules Controlled By SitronixS ST7529 LCM Interface Dimenision: 1 2 3 4 5 6 7 8 9 10 ------------------------------------------
[单片机]