免费国产美女一级A作爱播放免费,日本动漫精品一区二区三区,ⅩⅩ国产全无遮挡无码,国产精品无码视频2020

  • <delect id="1z9bx"><center id="1z9bx"><ruby id="1z9bx"></ruby></center></delect>

      1. <u id="1z9bx"><sub id="1z9bx"></sub></u>

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

        發(fā)布時間:2024-03-01
        我們知道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 (*)(),這個表達(dá)式比較復(fù)雜因運算符優(yōu)先級關(guān)系,用括號括號括起來,就成了(void (*)())rst,這樣rst就成函數(shù)指針了,再來看看求函數(shù)指針的一般格式(*p)(),把p代換成(void (*)())rst括起來就成了(*((void (*)())rst))(),這說將這個復(fù)位的全部面紗揭開了。
        以下為測試,驗證程序:
        #include <at89x51.h>
        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;
        }
        }
        上一個:值得買的筆記本電腦有哪些,什么筆記本值得買
        下一個:智能面板設(shè)計方案及市場前景

        風(fēng)華RC-02U165JT電阻
        如何給電腦里加字體(如何在電腦中添加字體)
        spn工控配件(歐美品牌原裝電機馬達(dá)編碼器等備品備件零部件供應(yīng)商)
        蘋果12咋長截屏(iphone12咋長截圖)
        努比亞怎么不更新,努比亞的系統(tǒng)都不更新的嗎
        公積金貸款購買二手房評估房屋怎么收費,二手房的貸款條件
        減少草坪病害人造流行刻不容緩
        金葉女貞康氏粉蚧的防治方法
        如何選擇合適的bohmer公司泵,可以選擇合適的bohmer公司泵
        win11疑難解答怎么進(jìn)入,USB連接時候 看見系統(tǒng)提示說 若此設(shè)備有問題單擊疑難解答