/*-------------------------------------------------------------------------- 自定義REG52頭文件 @auth lei @date 2017-05 --------------------------------------------------------------------------*/ #ifndef __REG52_H__ #define __REG52_H__ /* 一個字節的寄存器 */ sfr P0 = 0x80;//雙向IO,向外輸出要接上拉電阻 sfr P1 = 0x90;//准雙向IO,作為輸入要先置1 sfr P2 = 0xA0;//准雙向IO,作為輸入要先置1 sfr P3 = 0xB0;//准雙向IO,作為輸入要先置1,有第二功能 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;//定時器/計數器0低8位 sfr TL1 = 0x8B;//定時器/計數器1低8位 sfr TH0 = 0x8C;//定時器/計數器0高8位 sfr TH1 = 0x8D;//定時器/計數器1高8位 sfr IE = 0xA8;//中斷允許寄存器 sfr IP = 0xB8;//中斷優先級寄存器 sfr SCON = 0x98; sfr SBUF = 0x99; /* 8052單片機擴展的寄存器 */ sfr T2CON = 0xC8; sfr RCAP2L = 0xCA; sfr RCAP2H = 0xCB; sfr TL2 = 0xCC; sfr TH2 = 0xCD; /* 一位長度的寄存器 */ /* 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 專用 /*------------中斷內容詳解---------------------------- *相關的寄存器 * 1.IE中斷允許寄存器 * 2.TCON定時控制寄存器 * 3.IP中斷優先級寄存器(不常用) * 4.TMOD定時器工作方式寄存器(定時器/計數器中斷才用到) *使用中斷的步驟: * 1.中斷初始化函數(只需要調用一次,不要放到循環里重復調用) * 2.編寫中斷處理函數 * 3.主函數中調用中斷初始化函數 *------------中斷內容詳解----------------------------/ /* TCON定時控制寄存器 */ sbit TF1 = TCON^7;//定時器/計數器中標志位: sbit TR1 = TCON^6;//定時器/計數器中1啟動、停止: sbit TF0 = TCON^5;//定時器/計數器中0標志位: sbit TR0 = TCON^4;//定時器/計數器中斷0啟動、停止: sbit IE1 = TCON^3;//外部中斷1中斷標志位:中斷產生時硬件置1,中斷函數處理完后硬件置0 sbit IT1 = TCON^2;//外部中斷1觸發方式:0為電平、1為下降沿 sbit IE0 = TCON^1;//外部中斷0中斷標志位:中斷產生時硬件置1,中斷函數處理完后硬件置0 sbit IT0 = TCON^0;//外部中斷0觸發方式:0為電平、1為下降沿 /* IE中斷允許寄存器 */ sbit EA = IE^7;//中斷總開關 sbit ET2 = IE^5; //8052 專用 sbit ES = IE^4; sbit ET1 = IE^3;//定時器/計數器中斷1開關 sbit EX1 = IE^2;//外部中斷1開關 sbit ET0 = IE^1;//定時器/計數器中斷0開關 sbit EX0 = IE^0;//外部中斷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; /*------------------TMOD寄存器詳解----------------- 8位從高到低依次為:GATE C/T M1 M0 GATE C/T M1 M0 {----配置定時器1----} {----配置定時器0----} GATE:門控位,由外部引腳(T0、T1)作為定時器的啟動總開關:GATE=0時,T0和T1無效;GATE=1時,需要T0或者T1開關打開(高電平)定時器才能啟動 C/T:計數方式選擇,C/T=0時用作定時器,C/T=1時用作計數器 M1、M0:工作方式選擇位,00為工作方式0,13位定時器/計數器,TH存放高8位,TL存放低5位 01為工作方式1,16位定時器/計數器,TH存放高8位,TL存放低8位(常用) 10為工作方式2,初值自動裝載的8位定時器/計數器(常用) 11為工作方式3,T0被分為兩個8位獨立計數器,T1停止工作 *------------------TMOD寄存器詳解-----------------/ /* P3口的第二功能 */ sbit RD = P3^7;//外部存儲器讀選通信號 sbit WR = P3^6;//外部存儲器寫選通信號 sbit T1 = P3^5;//外部控制定時器/計數器1的啟動(TMOD寄存器第7位GATE = 1時才有效),1為啟動,0位停止 sbit T0 = P3^4;//外部控制定時器/計數器0的啟動(TMOD寄存器第3位GATE = 1時才有效),1為啟動,0位停止 sbit INT1 = P3^3;//外部中斷1輸入 sbit INT0 = P3^2;//外部中斷0輸入 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 專用 sbit T2 = P1^0; // 8052 專用 /* 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; #endif