新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機軟件程序復位

        51單片機軟件程序復位

        作者: 時間:2016-11-19 來源:網絡 收藏
        51單片機軟件復位匯編代碼

        POP ACC ; pop return address

        本文引用地址:http://www.104case.com/article/201611/318163.htm

        POP ACC
        ;彈出PC

        MOV SP,#30H ;復位后SP為07H ,這樣就會復位椎棧
        MOV PSW,#00H ;清寄存器


        CLR A ; push 0 as new


        PUSH ACC ; return address to stack
        PUSH ACC
        ;重置PC=0并壓到椎棧中

        RETI ; execute return of interrupt

        ;程序又開始從0000H處開始運行,但寄存器內的值不確定!



        用C51實現軟件復位



        方法1:



        void(*SoftReset)();



        SoftReset=0;



        SoftReset();



        解釋:利用函數型指針,使函數型指針指向的函數的入口地址為0。



        方法2: 嵌入匯編



        #pragma asm


        LJMP 0FFF0h;//ljmp 0000h



        #pragma endasm



        方法3: 在C51編程過程中,用一個不存在函數,引起復位。



        如下程序,編譯正常,但執行到 reset()處即復位了。其時匯編代碼為

        LCALL C:0000。







        extern void rest(void); //實際并不存在。



        void main()



        {



        rest(); //復位




        }

        方法4:如果有用看門狗,使用看門狗復位。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 铜鼓县| 宁远县| 山丹县| 黔西| 茌平县| 龙游县| 双流县| 镇巴县| 顺义区| 泽州县| 靖安县| 崇明县| 江源县| 获嘉县| 海丰县| 射洪县| 三门峡市| 延津县| 兴国县| 保德县| 玛多县| 北海市| 彰武县| 芷江| 潼关县| 赣榆县| 通渭县| 东台市| 安顺市| 固阳县| 文昌市| 和硕县| 德兴市| 曲靖市| 蛟河市| 正蓝旗| 新建县| 高密市| 监利县| 苍山县| 大田县|