水杉的地头 https://passport2.21ic.com/?559905 [收藏] [复制] [RSS]

日志

在C语言中不插入汇编实现软复位(转自网络)

已有 570 次阅读2009-4-23 09:09 |个人分类:单片机|系统分类:单片机

///////////////////////////////////////////////////////////


?PR?reset?RESET_ASM        SEGMENT CODE 
        PUBLIC        reset


        RSEG        ?PR?reset?RESET_ASM


reset:        
        NOP                                   ;可以在这里加上对“软启动”标志的修改等
        MOV         0x81,        #0xFD        ;对于只有128字节RAM的51、2051等,改为0x7D
        MOV         DPTR,        #RST_NEST
        PUSH        0x82                      ;PUSH        DPL
        PUSH        0x83                      ;PUSH        DPH
        RETI                                  ;清第一级中断嵌套
RST_NEST:
        CLR         A
        PUSH        0xE0                      ;PUSH        ACC
        PUSH        0xE0                      ;PUSH        ACC
        RETI                                  ;清第二级中断嵌套


        END
======================================================================
将以上代码保存为“reset.asm”,创建一个工程(工程名soft_reset),器件就选AT89C51/AT89C52,将reset.asm文件加入,在工程属性对话框的“output”标签中设置为生成.lib文件,build,得到一个名为soft_reset.lib的库文件。
在需要“软件复位”的工程中包含上述的soft_reset.lib文件并作如下声明:
        extern        void reset(void);
即可以在在需要的地方写“reset();”来使CPU“软件复位”。


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)