自定義reg52.h頭文件(單片機學習重難點核心知識點)


/*--------------------------------------------------------------------------
自定義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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM