新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 能讓匯編轉到C51的初學者有更清晰的認識的一篇文章

        能讓匯編轉到C51的初學者有更清晰的認識的一篇文章

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



        在單一模組內可以使用下面的語法宣告

        [memory_space]typevariable_name_at_location

        範例
        pdatacharmy_pdata_at_0x80;

        如果該變數必須為多個模組所使用(GlobalVariable)則以

        抽象指標(AbstractPointer)的方式在標頭檔(HeaderFile)定義較為方便。

        #definevariable_name*((data_type*)location)

        範例
        #definemy_pdata*((charpdata*)0x80)

        (注意char與pdata的順序)

        ABSACC.H提供了下列方便的巨集(Macro)定義。

        #defineCBYTE((unsignedcharvolatilecode*)0)
        #defineDBYTE((unsignedcharvolatiledata*)0)
        #definePBYTE((unsignedcharvolatilepdata*)0)
        #defineXBYTE((unsignedcharvolatilexdata*)0)
        #defineCWORD((unsignedintvolatilecode*)0)
        #defineDWORD((unsignedintvolatiledata*)0)
        #definePWORD((unsignedintvolatilepdata*)0)
        #defineXWORD((unsignedintvolatilexdata*)0)

        隱藏的初始化程序

        80在電源重置後(PowerOnReset)所執行的第一個程式模組並不是使用者的主程式
        main(),而是一個隱藏在KEIL-標準程式庫中稱為startup.a51的程式模組。
        startup.a51的主要工作是把包含idata、xdata、pdata在內的記憶體區塊清除為0,並
        且初始化遞迴指標。接著startup.a51被執行的仍然是一個隱藏在KEIL-標準程式庫
        中稱為init.a51的程式模組。而init.a51的主要工作則是初始化具有非零初始值設定的
        變數。

        在完成上述的初始化程序之後,80C51的控制權才會交給main()開始執行使用者的程式。
        研究在C51Lib目錄下相關模組的組合語言程式碼,使用者將會對KEIL-C51的架構有進
        一步的了解,同時更能掌握不同的高階應用技巧。

        程式範例

        軟體模擬的SingleMasterI2C介面程式:C51-I2C.C

        庫(RegisterBank)切換的應用

        庫(RegisterBank)切換的最大應用是在中斷程序的處理。一般的軟體設計會在程
        式進入中斷之後,利用切換庫的方式保持主程式R0~R7暫存器的內容,不受中斷
        程序的影響而改變。

        上一頁 1 2 下一頁

        關鍵詞: 匯編 C51 暫存器

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 西和县| 乌拉特前旗| 黄浦区| 五大连池市| 东方市| 乌兰察布市| 乌兰浩特市| 合作市| 宁波市| 益阳市| 师宗县| 滨海县| 道孚县| 宜兰市| 盐山县| 香河县| 广平县| 化德县| 玛纳斯县| 柞水县| 曲靖市| 大新县| 当阳市| 泗水县| 五峰| 小金县| 镇江市| 永靖县| 雷山县| 龙游县| 理塘县| 报价| 庆云县| 岳池县| 进贤县| 荣昌县| 屯门区| 寻甸| 满洲里市| 思茅市| 长武县|