新聞中心

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

        51單片機軟件(程序)復位

        作者: 時間:2013-06-06 來源:網絡 收藏

        POP ACC ; pop return address

        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:如果有用看門狗,使用看門狗復位。

        51單片機相關文章:51單片機教程




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 曲水县| 宝鸡市| 香格里拉县| 宁陕县| 陆河县| 长子县| 郸城县| 彭山县| 榕江县| 赣榆县| 枞阳县| 兴山县| 赣州市| 珲春市| 蕉岭县| 汉川市| 旌德县| 驻马店市| 平江县| 哈尔滨市| 铜山县| 永宁县| 元谋县| 辉县市| 宣城市| 略阳县| 西华县| 廊坊市| 贵州省| 栾城县| 黎川县| 吉木乃县| 梁山县| 榆中县| 行唐县| 平邑县| 凤凰县| 石屏县| 大厂| 汉沽区| 东乌珠穆沁旗|