很多初學(xué)單片機者往往對C51的頭文件感到很神秘,而為什么要那樣寫(xiě),甚至有的初學(xué)者喜歡問(wèn),P1口的P為什么要大寫(xiě),不大寫(xiě)行不行呢?其實(shí)這樣的問(wèn)題,看過(guò)本文后,就會(huì )明白。其實(shí)這個(gè)是在頭文件中用sfr定義的,現在定義好了的是這樣的sfr P1= 0x90;,也就是說(shuō),到底大寫(xiě),還是小寫(xiě),就是在這里面決定的。這就說(shuō)明,如果你要用小寫(xiě),就得在頭文件中改為小寫(xiě)。其實(shí)它都是為了編程序方便才這樣寫(xiě)的,在程序編譯時(shí),就會(huì )變成相應的地址(如P1就變成了0x90)。還有一點(diǎn)就是,現在有很多改進(jìn)型的單片機,它們有很多新增的特殊功能寄存器在標準的reg51.h或reg52.h中沒(méi)有定義,這就需要自己加進(jìn)頭文件(相關(guān)廠(chǎng)家已經(jīng)把它們定義好了),當然也可以直接在程序中定義。下面是一個(gè)標準的C51頭文件:
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;
本文引用地址:http://dyxdggzs.com/article/201611/321874.htm
sfr T2CON= 0xC8;
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2= 0xCC;
sfr TH2= 0xCD;
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
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;
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;
sbit PT2= IP^5;
sbit PS= IP^4;
sbit PT1= IP^3;
sbit PX1= IP^2;
sbit PT0= IP^1;
sbit PX0= IP^0;
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;
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;
sbit T2EX= P1^1; // 8052 only
sbit T2= P1^0; // 8052 only
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;
評論