新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機C語言學習筆記6:51單片機C語言頭文件及其使用

        51單片機C語言學習筆記6:51單片機C語言頭文件及其使用

        作者: 時間:2016-11-23 來源:網絡 收藏
        很多初學單片機者往往對C51的頭文件感到很神秘,而為什么要那樣寫,甚至有的初學者喜歡問,P1口的P為什么要大寫,不大寫行不行呢?其實這個是在頭文件中用sfr定義的,現在定義好了的是這樣的

        sfr P1 = 0x90;

        也就是說,到底大寫,還是小寫,就是在這里面決定的。這就說明,如果你要用小寫,就得在頭文件中改為小寫。其實它都是為了編程序方便才這樣寫的,在程序編譯時,就會變成相應的地址(如P1就變成了0x90)。

        下面是一個標準的C51頭文件REG52.H:

        (此文件一般在C:KEILC51INC下 ,INC文件夾根目錄里有不少頭文件,并且里面還有很多以公司分類的文件夾,里面也都是相關產品的頭文件。如果我們要使用自己寫的頭文件,使用的時候只需把對應頭文件拷貝到INC文件夾里就可以了。)








        /* BYTE Registers */
        sfr P0 = 0x80;
        sfr P1 = 0x90;
        sfr P2 = 0xA0;
        sfr P3 = 0xB0;
        sfr PSW = 0xD0;
        sfr ACC = 0xE0;
        sfr B = 0xF0;
        sfr SP = 0x81;
        sfr DPL = 0x82;
        sfr DPH = 0x83;
        sfr PCON = 0x87;
        sfr TCON = 0x88;
        sfr TMOD = 0x89;
        sfr TL0 = 0x8A;
        sfr TL1 = 0x8B;
        sfr TH0 = 0x8C;
        sfr TH1 = 0x8D;
        sfr IE = 0xA8;
        sfr IP = 0xB8;
        sfr SCON = 0x98;
        sfr SBUF = 0x99;



        /* 8052 Extensions */
        sfr T2CON = 0xC8;
        sfr RCAP2L= 0xCA;
        sfr RCAP2H = 0xCB;
        sfr TL2 = 0xCC;
        sfr TH2 = 0xCD;


        /* BIT Registers */
        /* PSW */
        sbit CY = PSW^7;
        sbit AC = PSW^6;
        sbit F0 = PSW^5;
        sbit RS1 = PSW^4;
        sbit RS0 = PSW^3;
        sbit OV = PSW^2;
        sbit P = PSW^0; //8052 only

        /* TCON */
        sbit TF1 = TCON^7;
        sbit TR1 = TCON^6;
        sbit TF0 = TCON^5;
        sbit TR0 = TCON^4;
        sbit IE1 = TCON^3;
        sbit IT1 = TCON^2;
        sbit IE0 = TCON^1;
        sbit IT0 = TCON^0;

        /* IE */
        sbit EA = IE^7;
        sbit ET2 = IE^5; //8052 only
        sbit ES = IE^4;
        sbit ET1 = IE^3;
        sbit EX1 = IE^2;
        sbit ET0 = IE^1;
        sbit EX0 = IE^0;

        /* IP */
        sbit PT2 = IP^5;
        sbit PS = IP^4;
        sbit PT1 = IP^3;
        sbit PX1 = IP^2;
        sbit PT0 = IP^1;
        sbit PX0 = IP^0;

        /* P3 */
        sbit RD= P3^7;
        sbit WR = P3^6;
        sbit T1= P3^5;
        sbit T0= P3^4;
        sbit INT1 = P3^3;
        sbit INT0 = P3^2;
        sbit TXD = P3^1;
        sbit RXD = P3^0;

        /* SCON */
        sbit SM0 = SCON^7;
        sbit SM1 = SCON^6;
        sbit SM2 = SCON^5;
        sbit REN = SCON^4;
        sbit TB8 = SCON^3;
        sbit RB8 = SCON^2;
        sbit TI = SCON^1;
        sbit RI = SCON^0;

        /* P1 */
        sbit T2EX = P1^1; // 8052 only
        sbit T2 = P1^0; // 8052 only

        /* T2CON */
        sbit TF2 = T2CON^7;
        sbit EXF2 = T2CON^6;
        sbit RCLK = T2CON^5;
        sbit TCLK = T2CON^4;
        sbit EXEN2 = T2CON^3;
        sbit TR2 = T2CON^2;
        sbit C_T2 = T2CON^1;
        sbit CP_RL2 = T2CON^0;



        還有一點就是,現在有很多改進型的單片機,它們有很多新增的特殊功能寄存器在標準的reg51.h或reg52.h中沒有定義,這就需要自己加進頭文件(相關廠家已經把它們定義好了),當然也可以直接在程序中定義。

        如STC傳統51單片機,要使用新增的特殊功能寄存器要include頭文件,具體定義如下:

        http://space.ednchina.com/Upload/2009/4/8/aef22653-a6aa-42ed-9019-8ffe4f074c6e.rar



        sfr AUXR = 0x8e;

        sfr AUXR1 = 0xa2;



        sfr P4 = 0xe8;

        sfr XICON = 0xc0;



        sfr IPH = 0xb7;



        sfr WDT_CONTR = 0xe1;



        sfr ISP_DATA = 0xe2;

        sfr ISP_ADDRH = 0xe3;

        sfr ISP_ADDRL = 0xe4;

        sfr ISP_CMD = 0xe5;

        sfr ISP_TRIG = 0xe6;

        sfr ISP_CONTR = 0xe7;



        sbit PX3 = XICON^7;

        sbit EX3 = XICON^6;

        sbit IE3 = XICON^5;

        sbit IT3 = XICON^4;

        sbit PX2 = XICON^3;

        sbit EX2 = XICON^2;

        sbit IE2 = XICON^1;

        sbit IT2 = XICON^0;



        頭文件STC12C5A60S2系列雙串口1T 8051單片機

        頭文件STC12C5A60AD系列高速1T 8051單片機

        頭文件STC12C5201AD系列高速1T 8051單片機

        頭文件STC11F60XE高速總線系列1T 8051單片機

        頭文件STC10F08XE高速總線系列1T 8051單片機



        參考資料:

        1)51單片機C語言頭文件及其使用——徐學軍單片機工作室

        http://hi.baidu.com/xxjmcu/blog/item/6f77308dc53bf013b31bbaa7.html/cmtid/6aaaf78f561073e7f01f36a7

        2)單片機中用c編程時頭文件reg51.h及reg52.h解析
        http://blog.csdn.net/benben85/archive/2009/03/03/3951522.aspx


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 黔江区| 会昌县| 屏东县| 蛟河市| 界首市| 龙胜| 临邑县| 福泉市| 东宁县| 罗山县| 龙泉市| 咸宁市| 聂拉木县| 慈溪市| 方城县| 永兴县| 六安市| 双城市| 沙田区| 托克逊县| 澄江县| 普格县| 漳浦县| 崇礼县| 威远县| 浦江县| 陇川县| 祁门县| 新兴县| 崇信县| 建昌县| 江津市| 加查县| 伊吾县| 舟山市| 和龙市| 城步| 图们市| 朔州市| 南康市| 五原县|