新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)軟件(程序)復(fù)位

        51單片機(jī)軟件(程序)復(fù)位

        作者: 時(shí)間:2013-06-06 來(lái)源:網(wǎng)絡(luò) 收藏

        POP ACC ; pop return address

        POP ACC

        ;彈出PC

        MOV SP,#30H ;復(fù)位后SP為07H ,這樣就會(huì)復(fù)位椎棧

        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處開始運(yùn)行,但寄存器內(nèi)的值不確定!

        用C51實(shí)現(xiàn)

        方法1:

        void(*SoftReset)();

        SoftReset=0;

        SoftReset();

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

        方法2: 嵌入?yún)R編

        #pragma asm

        LJMP 0FFF0h;//ljmp 0000h

        #pragma endasm

        方法3: 在C51編程過(guò)程中,用一個(gè)不存在函數(shù),引起復(fù)位。

        如下程序,編譯正常,但執(zhí)行到 reset()處即復(fù)位了。其時(shí)

        LCALL C:0000。

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

        void main()

        {

        rest(); //復(fù)位

        }

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

        51單片機(jī)相關(guān)文章:51單片機(jī)教程




        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 武川县| 锦州市| 黔西| 固阳县| 乌兰县| 涟源市| 玉环县| 芒康县| 五原县| 阿巴嘎旗| 贵南县| 山东省| 汉源县| 勐海县| 丹棱县| 青铜峡市| 外汇| 延川县| 游戏| 淳化县| 屯昌县| 濉溪县| 桐乡市| 琼中| 龙口市| 栾城县| 桃江县| 香河县| 渑池县| 平安县| 海伦市| 普兰县| 都江堰市| 夏河县| 大港区| 汉沽区| 厦门市| 衡阳县| 安塞县| 永善县| 呈贡县|