新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > C51語言應用編程的若干問題

        C51語言應用編程的若干問題

        作者: 時間:2012-07-04 來源:網絡 收藏


          在以上程序中,函數的返回值為一無符號整型數,根據調用規則,返回值的高位必須在R6中,低位在R7中,這樣才可保證數據的傳遞不出錯。另外,在調用過程中,必須注意寄存器的入棧。這樣在以后用到A/D轉換時,在C語言中調用子程序AD()即可。 

        3 中斷處理過程

          編譯器支持在C源程序中直接開發中斷過程,因此減輕了使用的繁瑣工作,提高了開發效率。中斷服務函數的完整語法如下:

          void 函數名(void)[模式]
          [再入]interrupt n [using r]

          其中n(0~31)代表中斷號。編譯器允許32個中斷,具體使用哪個中斷由80C51系列的芯片決定。r(0~3)代表第r組寄存器。在調用中斷函數時,要求中斷過程調用的函數所使用的寄存器組必須與其相同。"再入"用于說明中斷處理函數有無"再入"能力。C51編譯器及其對C語言的擴充允許編程者對中斷所有方面的控制和寄存器組的使用。這種支持能使編程者創建高效的中斷服務程序,用戶只須在C語言下關心中斷和必要的寄存器組切換操作。

          例3 設單片機的fosc=12MHz,要求用T0的方式1編程,在P1.0腳輸出周期為2ms的方波。

          用C語言編寫的中斷服務程序如下:

        #include reg51.h>
        sbit P1_0=P1^0;
        void timer0(void)interrupt 1 using 1 {
           /*T0中斷服務程序入口*/
        P1_0=!P1_0;
        TH0=-(1000/256);   /*計數初值重裝*/
        TL0=-(1000%256);
        }
        void main(void)
        {
        TMOD=0x01;   /*T0工作在定時器方式1*/
        P1_0=0;
        TH0=-(1000/256);   /*預置計數初值*/
        TL0=-(1000%256);
        EA=1;      /*CPU開中斷*/
        ET0=1;      /*T0開中斷*/
        TR0=1;      /*啟動T0*/
        do{}while(1);
        }

         在編寫中斷服務程序時必須注意不能進行參數傳遞,不能有返回值。

        4 結論

          C51編譯器不但可以縮短單片機控制系統的開發周期,而且易于調試和維護。此外,C51語言還有許多強大的功能,如提供豐富的庫函數供用戶直接調用,完整的編譯控制指令為程序調試提供必要的符號信息等等。總之,C51語言是廣大單片機開發人員的強有力的工具。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 延川县| 木兰县| 孝义市| 雅安市| 亚东县| 宝丰县| 拉孜县| 衡阳市| 湄潭县| 平罗县| 永宁县| 新竹县| 繁峙县| 瑞金市| 广安市| 雷州市| 神农架林区| 建瓯市| 苏尼特右旗| 巴彦淖尔市| 德庆县| 如皋市| 太保市| 博兴县| 宁蒗| 宁国市| 英吉沙县| 渑池县| 宁强县| 上虞市| 平利县| 河东区| 潮州市| 宝鸡市| 建德市| 合肥市| 桃源县| 青州市| 华容县| 沐川县| 广宁县|