51单片机软件复位

时间:2023-03-17来源:佚名
我们知道51单片机可以把数据放在程序存储器里面,也就是程序和数据没有本质区别,都是一些特定的数据。如果我们将一段程序,以数组数据的形式存储在程序存储器里面,那么是不是也可以执行呢?答案是肯定的。
言归正传,先来看看这个数组数据 0xe4,0xc0,0xe0,0xc0,0xe0,0x22,中Keil的汇编窗口看出,它其实是四条汇编语句:
CLR A ;编译后为 0XE4
PUSH ACC ;编译后为 0XC0 0XE0
PUSH ACC ;编译后为 0XC0 0XE0
RET ;函数返回 编译后为 0X22可以看出,其实这就是51单片机的汇编复位指令。
其实这里只是C复位代码的写法难看而已,rst是一个指向程序存储器的字节指针,我们把它转换为指向返回为空的函数的指针,返回为空的函数指针的格式为:void (*)(),这个表达式比较复杂因运算符优先级关系,用括号括号括起来,就成了(void (*)())rst,这样rst就成函数指针了,再来看看求函数指针的一般格式(*p)(),把p代换成(void (*)())rst括起来就成了(*((void (*)())rst))(),这说将这个复位的全部面纱揭开了。
以下为测试,验证程序:
#include
main()
{
unsigned char code rst[6]={0xe4,0xc0,0xe0,0xc0,0xe0,0x22};//定义一个code类型的数组,一定要为code类型
while(1)//循环测试
{
TMOD=5;//测试用可以是任何语名
TI=1;
P1=0;
P1=1;
P2=2;
P3=3;
(*((void (*)())rst))();//复位
SCON=0x50;
}
}

    相关阅读

    电焊机电流调到多少合适,根据焊条大小及焊接对象做调整

    2.5焊条电焊机电流大小应根据焊条的种类来定: 1、一般碳钢焊条焊接电流调到100A左右,不锈钢焊条稍低点。 2、焊方管2.5焊条电流: 60-80A电焊机利用正负两极在瞬间短路时产生的高温电...
    2023-01-09
    电焊机电流调到多少合适,根据焊条大小及焊接对象做调整

    软启动器12个故障代码

    软启动器常见故障问题的故障代码,参考如下: 1、故障代码Err01 故障类容:→断相;说明:主电路任意一相断相。 2、故障代码Err02 故障类容:→过电流;说明:超过额定电流12倍。 3、故...
    2022-11-26

    第一次有人把电流互感器介绍得这么好!

    ...
    2024-10-08
    第一次有人把电流互感器介绍得这么好!

    睡觉要远离的十大电器,长期辐射会致癌,所有人猜不到第一名是它

    辐射这个名词进入普通人的生活时间并不长,但大家对辐射的关注程度并不低,而日常我们接触到的辐射主要来自家用电器,那么到底哪些电器对我们有危害呢? 辐射是否对人有害的标...
    2023-06-11
    睡觉要远离的十大电器,长期辐射会致癌,所有人猜不到第一名是它

    电焊机怎么调,电流与电压调整方法

    电焊机的调整方法,具体参考如下: 1、先把电流旋钮调到最小,把电压旋钮调到最大,试焊一下,不要动电压旋钮,逐步调大电流,直到能正常焊接时停上。 2、反过来,把电流旋钮先...
    2023-01-09
    电焊机怎么调,电流与电压调整方法

    零线带电的三种原因

    在生活中安全用电无小事,尤其是零线带电的话,也是非常危险的,零线带电的原因不止一处,可能是零线断掉了,也可能是开关控零了,又或者是三相火线不平衡,零线带电的三种原...
    2023-01-09
    零线带电的三种原因

    电动车电池看参数的三种方法,轻松查看电动车电池型号

    新买的电动车电池是什么型号的,很多人并不是很清楚,而在需要换电池时搞不清楚型号就会很麻烦,那么电动车电池规格怎么,怎么来识别电动车电池的型号,与电工天下小编一起来...
    2022-11-30

    插座发出滋滋滋的声音是什么原因

    首先最有可能的原因就是电源线与插座接线端子接触不牢固,而造成的虚接,进而产生电弧也就是我们俗称的电火花,就会发出的滋滋声音。 插座内由于质量问题,电源接线柱与插头触...
    2022-11-10
    插座发出滋滋滋的声音是什么原因

    网站栏目