在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

            51單片機的軟件復(fù)位

            作者: 時間:2016-11-19 來源:網(wǎng)絡(luò) 收藏
            請先看最下面的程序
            這是一款針對Keil軟件的,被稱作“純軟件”復(fù)位的程序。所謂“純軟件”是指它沒有直接操作硬件以及寄存器。
            事實上如果不懂硬件和匯編也不可能有這段C程序,不管怎么樣,我們還是來看一看它的真面目:
            我們知道51 單片機
            可以把數(shù)據(jù)放在程序存儲器里面,也就是程序和數(shù)據(jù)沒有本質(zhì)區(qū)別,都是一些特定的數(shù)據(jù)。如果我們將一段程序,以數(shù)組數(shù)據(jù)的形式存儲在程序存儲器里面,那么是不是也可以執(zhí)行呢?答案是肯定的。
            -
            言歸正傳,先來看看這個數(shù)組數(shù)據(jù) 0xe4,0xc0,0xe0,0xc0,0xe0,0x22,中Keil的匯編窗口看出,它其實是四條匯編語句:
            CLR A ;編譯后為 0XE4
            PUSH ACC ;編譯后為 0XC0 0XE0
            PUSH ACC ;編譯后為 0XC0 0XE0
            RET ;函數(shù)返回 編譯后為 0X22可以看出,其實這就是51 單片機 的匯編復(fù)位指令。
            其實這里只是C復(fù)位代碼的寫法難看而已,rst是一個指向程序存儲器的字節(jié)指針,我們把它轉(zhuǎn)換為指向返回為空的函數(shù)的指針,返回為空的函數(shù)指針的格式為:void
            (*)(),這個表達式比較復(fù)雜因運算符優(yōu)先級關(guān)系,用括號括號括起來,就成了(void
            (*)())rst,這樣rst就成函數(shù)指針了,再來看看求函數(shù)指針的一般格式(*p)(),把p代換成(void
            (*)())rst括起來就成了(*((void (*)())rst))(),這說將這個復(fù)位的全部面紗揭開了。
            以下為測試,驗證程序:
            #include
            main()
            {
            unsigned char code rst[6]={0xe4,0xc0,0xe0,0xc0,0xe0,0x22};//定義一個code類型的數(shù)組,一定要為code類型
            while(1)//循環(huán)測試
            {
            TMOD=5;//測試用可以是任何語名
            TI=1;
            P1=0;
            P1=1;
            P2=2;
            P3=3;
            (*((void (*)())rst))();//復(fù)位
            SCON=0x50;
            }
            }


            關(guān)鍵詞: 51單片機軟件復(fù)

            評論


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

            關(guān)閉