- STC89全系列AT89C52以上系列的頭文件共用,帶詳細的中文說明,內部資源一覽無余
- /*-------------------------------------------------------------------------
- 89X5X_H
- Header file for 89CXX controller
- Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc^
- All rights reserved^
- --------------------------------------------------------------------------*/
- #ifndef __89x5X_H__
- #define __89x5X_H__
- // 8051 core
- sfr ACC = 0xE0;//累加器A (可位尋址)
- sfr B = 0xF0;//寄存器B (可位尋址)
- sfr DPL = 0x82;//數據指針低位 (不可位尋址)
- sfr DPH = 0x83;//數據指針高位 (不可位尋址)
- sfr SP = 0x81;//堆棧指針 (不可位尋址)
- sfr SBUF = 0x99;//串行數據緩沖器 (不可位尋址)
- sfr TL0 = 0x8A;//T0低字節 (不可位尋址)
- sfr TL1 = 0x8B;//T1低字節 (不可位尋址)
- sfr TH0 = 0x8C;//T0高字節 (不可位尋址)
- sfr TH1 = 0x8D;//T1高字節 (不可位尋址)
- sfr PSW = 0xD0;//狀態 (標志) 寄存器 (可位尋址)
- /************************************************************************
- BIT7 CY (進位標志位)
- BIT6 AC ( 輔助進位標志位,當進行加、減運算時當有低4位向高4位進位或
- 借位時,AC置位,否則被清零。AC輔助進位位也常用于十進制調整)
- BTT5 F0 (用戶標志位0,供用戶設置的標志位)
- BIT4~BIT3 RS1~RS0 (寄存器組選擇位)
- BIT2 OV (溢出標志位)
- BIT1 F1 (用戶標志位1,供用戶設置的標志位)
- BIT0 P (奇偶校驗位)
- *************************************************************************/
- sfr SCON = 0x98;//串口 (控制及標志) 寄存器 (可位尋址)
- /************************************************************************
- BIT7~BIT6 SM1~SM0 (串口的工作方式選擇:00B 為同步8位工作方式0
- 01B 為定波特綠
- 10B 為
- 11B 為)
- BTT5 SM2 (多機通信控制位,僅在工作方式2和3有效)
- BIT4 REN (允許接收控制位)
- BIT3 TB8 (發送數據位8,多機通信中,0代表當前發送內容是數據,1代表地址)
- BIT2 RB8 (接收數據位8,存放接收到的第9位數據)
- BIT1 TI (發送中斷標志位,1有效,需軟件清0)
- BIT0 RI (發送中斷標志位,1有效,需軟件清0)
- *************************************************************************/
- sfr IE = 0xA8;//中斷使能 (控制) 寄存器 (可位尋址)
- /************************************************************************
- BIT7 EA (全局中斷使能控制位,1有效)
- BIT6 ---
- BIT5 ET2 (定時器2中斷使能控制位,1有效)
- BIT4 ES (串口中斷使能控制位,1有效)
- BIT3 ET1 (定時計數器1中斷使能控制位,1有效)
- BIT2 EX1 (外部中斷1中斷使能控制位,1有效)
- BIT1 ET0 (定時計數器0中斷使能控制位,1有效)
- BIT0 EX0 (外部中斷0中斷使能控制位,1有效)
- *************************************************************************/
- sfr IP = 0xB8;//中斷優先級 (控制) 寄存器 (可位尋址)
- /************************************************************************
- BIT7 ---
- BIT6 ---
- BIT5 PT2 (為1時T2中斷設置為高優先級)
- BIT4 PS (為1時串口中斷設置為高優先級)
- BIT3 PT1 (為1時T1中斷設置為高優先級)
- BIT2 PX1 (為1時外部中斷1設置為高優先級)
- BIT1 PT0 (為1時T0中斷設置為高優先級)
- BIT0 PX0 (為1時外部中斷0設置為高優先級)
- *************************************************************************/
- sfr TCON = 0x88;//T1,T0及INT1,INT0 (控制及標志) 寄存器 (可位尋址)
- /************************************************************************
- BIT7 TF1 (定時計數器1中斷標志位,1有效,硬件自動清0)
- BIT6 TR1 (定時計數器1啟動控制位,1有效)
- BIT5 TF0 (定時計數器0中斷標志位,1有效,硬件自動清0)
- BIT4 TR0 (定時計數器0啟動控制位,1有效)
- BIT3 IE1 (外部中斷1中斷標志位,1有效,硬件自動清0)
- BIT2 IT1 (外部中斷1引起中斷的方式: 0為低電平觸發,1為下降沿觸發)
- BIT1 IE0 (外部中斷0中斷標志位,1有效,硬件自動清0)
- BIT0 IT0 (外部中斷0引起中斷的方式: 0為低電平觸發,1為下降沿觸發)
- *************************************************************************/
- sfr TMOD = 0x89;//T1,T0 (控制及標志) 寄存器 (不可位尋址)
- /************************************************************************
- BIT7 GATE1 (T1啟動是否與"/INT1"引腳相關)
- BIT6 C/T1 (0時T1為定時,1時TI為計數)
- BIT5~BIT4 T1M1~T1M0 (T1的工作模式)
- BIT3 GATE1 (T0啟動是否與"/INT0"引腳相關)
- BIT2 C/T1 (0時T0為定時,1時T0為計數)
- BIT1~BIT0 T0M1~T0M0 (T0的工作模式)
- *************************************************************************/
- sfr PCON = 0x87;//電源 (控制) 寄存器 (不可位尋址)
- /************************************************************************
- BIT7 SMOD (為串行口波特率倍率控制位,用于串行通信)
- //=====以下僅STC89系列和AT89S5X系列有效
- BIT6 SMOD0
- BIT5 ---
- BIT4 POF (上電復位標志位: 1則表明該復位為上電復位,可由軟件清0
- 0則表明該復位為外部手動復位或看門狗復位)
- BIT3~BIT2 GF1~GF0 (通用標志位,描述中斷是來自正常運行還是來自空
- 閑方式,用戶可通過指令設定它們的狀態)
- BIT1 PD (為1時,進入掉電模式,外部時鐘停振,CPU,定時器,
- 串口全部停止工作,僅由外部中斷喚醒)
- BIT0 IDL (為1時,進入空閑模式,CPU不工作,可欲任何一個中斷喚醒)
- *************************************************************************/
- // Ports
- sfr P0 = 0x80;//端口0(可位尋址)
- sfr P1 = 0x90;//端口1(可位尋址)
- sfr P2 = 0xA0;//端口2(可位尋址)
- sfr P3 = 0xB0;//端口3(可位尋址)
- // Timer2
- sfr T2CON = 0xC8;//定時器2的 (控制標志) 寄存器 (可位尋址)
- /************************************************************************
- BIT7 TF2 (定時計數器2中斷標志位,1有效,必須由軟件清0,
- 當該定時器作為波特率時不置該標志位)
- BIT6 EXF2 (定時計數器2外部中斷標志位,1有效,必須軟件清0,
- 當EXEN2為1且T2EX引腳負跳變產生捕獲或重裝時引
- 起該中斷標志位置1,在遞增/遞減模式即T2MOD中的
- DCEN = 1時及,EXF2為1不會引起中斷)
- BIT5 RCLK (為1時定時計數器2溢出脈沖作為串口接收波特率)
- BIT4 TCLK (為1時定時計數器2溢出脈沖作為串口發送波特率)
- BIT3 EXEN2 (定時計數器2外部中斷使能控制位,
- 當該位為1且RCLK和TCLK同時為0時有效)
- BIT2 TR2 (定時計數器2啟動控制位,1有效)
- BIT1 C/T2 (定時計數器2工作方式選擇控制位: 0時為內部定時器
- 1時為外部事件計數器)
- BIT0 CP/RL2 (捕獲還是重裝選擇控制位:僅RCLK和TCLK同時為0時有效,
- 為0時且EXEN2=0,定時計數器2的溢出和T2EX引腳的負跳變
- 都能使TH2和TL2重裝;為1時且EXEN2=1,T2EX引腳負跳變產生
- 捕獲,TH2和TL2清0)
- *************************************************************************/
- sfr T2MOD = 0xC9;//定時計數器2模式控制寄存器 (不可位尋址)
- /************************************************************************
- BIT7 --- 0
- BIT6 --- 0
- BIT5 --- 0
- BIT4 --- 0
- BIT3 --- 0
- BIT2 --- 0
- BIT1 T2OE (定時計數器2中斷T2輸出使能控制位,1有效)
- BIT0 PX0 (向下計數使能位,為1時定時計數器2倒計數)
- *************************************************************************/
- sfr RCAP2H = 0xCB;//定時計數器2再裝入緩沖區高字節 (不可位尋址)
- sfr RCAP2L = 0xCA;//定時計數器2再裝入緩沖區低字節 (不可位尋址)
- sfr TH2 = 0xCD;//定時計數器2高字節 (不可位尋址)
- sfr TL2 = 0xCC;//定時計數器2低字節 (不可位尋址)
- // BIT Registers
- // Port0
- sbit P0_7 = P0^7;
- sbit P0_6 = P0^6;
- sbit P0_5 = P0^5;
- sbit P0_4 = P0^4;
- sbit P0_3 = P0^3;
- sbit P0_2 = P0^2;
- sbit P0_1 = P0^1;
- sbit P0_0 = P0^0;
- // Port1
- sbit P1_7 = P1^7;
- sbit P1_6 = P1^6;
- sbit P1_5 = P1^5;
- sbit P1_4 = P1^4;
- sbit P1_3 = P1^3;
- sbit P1_2 = P1^2;
- sbit T2_EX = P1^1;
- sbit T2 = P1^0;
- // Port2
- sbit P2_7 = P2^7;
- sbit P2_6 = P2^6;
- sbit P2_5 = P2^5;
- sbit P2_4 = P2^4;
- sbit P2_3 = P2^3;
- sbit P2_2 = P2^2;
- sbit P2_1 = P2^1;
- sbit P2_0 = P2^0;
- // Port3
- 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;
- // 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 F1 = PSW^1;
- sbit P = PSW^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;
- // IE
- sbit EA = IE^7;
- sbit ET2 = IE^5;
- 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;
- // 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;
- // 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;
- //以下僅STC89C5X系列有效
- sfr AUXR = 0x8E;//擴展RAM管理及禁止ALE輸出控制寄存器 (不可位尋址)
- /************************************************************************
- BIT7 --- 0
- BIT6 --- 0
- BIT5 --- 0
- BIT4 --- 0
- BIT3 --- 0
- BIT2 --- 0
- BIT1 EXTRAM (為0時允許使用內部擴展的RAM,為1時使用同普通 51 MCU)
- BIT0 ALEOFF (為0時允許ALE一直輸出固定的頻率信號,
- 為1時僅在對外存儲器有操作時輸出ALE控制信號)
- *************************************************************************/
- sfr AUXR1 = 0xA2;//雙數據指針控制寄存器 (不可位尋址)
- /************************************************************************
- BIT7 --- 0
- BIT6 --- 0
- BIT5 --- 0
- BIT4 --- 0
- BIT3 GF2 (通用功能用戶自定義位)
- BIT2 --- 0
- BIT1 --- 0
- BIT0 DPS (為0時使用DPTR0,為1時使用DPTR1)
- *************************************************************************/
- sfr IPH = 0xB7;//中斷優先級控制寄存器高位(同IP配合組成4個中斷優先級,不可位尋址)
- /************************************************************************
- BIT7 PX3H (外部中斷3中斷設置優先級高位)
- BIT6 PX2H (外部中斷2中斷設置優先級高位)
- BIT5 PT2H (定時計數器2中斷設置優先級高位)
- BIT4 PSH (串口中斷設置優先級高位)
- BIT3 PT1H (定時計數器1中斷設置優先級高位)
- BIT2 PX1H (外部中斷1中斷設置優先級高位)
- BIT1 PT0H (定時計數器0中斷設置優先級高位)
- BIT0 PX0H (外部中斷0中斷設置優先級高位)
-
- 中斷 代號 優先級0 優先級1 優先級2 優先級3 說明
- INTn PXnH,PXn 0,0 0,1 1,0 1,1 第n個外部中斷
- Timer PTnH,PTn 0,0 0,1 1,0 1,1 第n個定時器中斷
- USART PSH,PS 0,0 0,1 1,0 1,1 串口中斷
- *************************************************************************/
- sfr XICON = 0xC0;//擴展外部中斷控制及標志寄存器 (可位尋址)
- /************************************************************************
- BIT7 PX3 (外部中斷3優先級設置低位)
- BIT6 EX3 (外部中斷3中斷使能控制位,1有效)
- BIT5 IE3 (外部中斷3中斷標志位,1有效)
- BIT4 IT3 (外部中斷3引起中斷的方式: 0為低電平觸發,1為下降沿觸發)
- BIT3 PX2 (外部中斷2優先級設置低位)
- BIT2 EX2 (外部中斷2中斷使能控制位,1有效)
- BIT1 IE2 (外部中斷2中斷標志位,1有效)
- BIT0 IT2 (外部中斷2引起中斷的方式: 0為低電平觸發,1為下降沿觸發)
- *************************************************************************/
- sfr WDT_CONTR = 0xE1;//看門狗定時器控制寄存器 (不可位尋址)
- /************************************************************************
- BIT7 ---
- BIT6 ---
- BIT5 EN_WDT (看門狗啟動控制位,1有效)
- BIT4 CLR_WDT (看門狗清零控制位,設置為1看門狗將重新計數,該位硬件自動清0)
- BIT3 IDLE_WDT (看門狗工作方式選擇位: 1時看門狗在"空閑模式"下計數
- 0時看門狗在"空閑模式"下不計數)
- BIT2~BIT0 PS2~PS0 (看門狗定時器分頻模式:
- 0時為2分頻,1時為4分頻,2時為8分頻,3時為16分頻
- 4時為32分頻,5時為64分頻,6時為128分頻,7時為256分頻)
- //PS:看門狗的溢出時間公式 WDT_T(S) = (N*分頻值*32768)/晶振頻率(Hz) (其中當在12 Clock 模式
- N = 12, 在6 Clock 模式
- N = 6)
- *************************************************************************/
- sfr ISP_DATA = 0xE2;//=ISP/IAP操作時使用的數據寄存器 (不可位尋址)
- sfr ISP_ADDRH = 0xE3;//=ISP/IAP操作時使用的地址寄存器高字節 (不可位尋址)
- sfr ISP_ADDRL = 0xE4;//=ISP/IAP操作時使用的地址寄存器低字節 (不可位尋址)
- sfr ISP_CMD = 0xE5;//=ISP/IAP操作時命令模式寄存器,需設置后ISP/IAP操作才有效 (不可位尋址)
- /************************************************************************
- BIT7 ---
- BIT6 ---
- BIT5 ---
- BIT4 ---
- BIT3 ---
- BIT2~BIT0 B2~B0 (為0時 待機模式,無ISP操作
- 為1時 對用戶程序Flash區或數據Flash區讀
- 為2時 對用戶程序Flash區或數據Flash區編程
- 為3時 對用戶程序Flash區或數據Flash區擦除)
- *************************************************************************/
- sfr ISP_TRIG = 0xE6;//=ISP/IAP操作時的命令觸發寄存器 (不可位尋址)
- /************************************************************************
- 在ISPEN(ISP_CONTR.7) = 1時,對ISP_TRIG先寫入0x46,再寫入0xB9,ISP/IAP命令才能生效
- *************************************************************************/
- sfr ISP_CONTR = 0xE7;//=ISP/IAP控制寄存器 (不可位尋址)
- /************************************************************************
- BIT7 ISPEN (ISP/IAP功能允許位,1有效)
- BIT6 SWBS (軟件選擇從用戶主程序區啟動(0),還是從ISP程序區啟動(1))
- BIT5 SWRST (為0時不操作,為1時產生軟件復位,硬件自動清0)
- BIT4 ---
- BIT3 ---
- BIT2~BIT0 WT2~WT0 (ISP/IAP操作等待的時間,晶振頻率越大,設置值越小)
- *************************************************************************/
- sfr P4 = 0xE8;//=P4口 (可位尋址)
- /************************************************************************
- BIT7 ---
- BIT6 ---
- BIT5 ---
- BIT4 ---
- BIT3 P4.3 INT2 (外部中斷2輸入端口)
- BIT2 P4.2 INT3 (外部中斷3輸入端口)
- BIT1 P4.1 (普通I/O口)
- BIT0 P4.0 (普通I/O口)
- *************************************************************************/
- // XICON
- 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;
- // P4
- sbit P4_3 = P4^3;
- sbit P4_2 = P4^2;
- sbit P4_1 = P4^1;
- sbit P4_0 = P4^0;
- sbit INT3 = P4^2;
- sbit INT2 = P4^3;
- //以下僅STC89LE5X系列有效
- sfr P1_ADC_EN = 0x97;//=P1作為AD轉換輸入口使能控制寄存器 (不可位尋址)
- /************************************************************************
- BIT7 ADC_P17 (P1.7作為AD輸入口使能控制位)
- BIT6 ADC_P16 (P1.6作為AD輸入口使能控制位)
- BIT5 ADC_P15 (P1.5作為AD輸入口使能控制位)
- BIT4 ADC_P14 (P1.4作為AD輸入口使能控制位)
- BIT3 ADC_P13 (P1.3作為AD輸入口使能控制位)
- BIT2 ADC_P12 (P1.2作為AD輸入口使能控制位)
- BIT1 ADC_P11 (P1.1作為AD輸入口使能控制位)
- BIT0 ADC_P10 (P1.0作為AD輸入口使能控制位)
- *************************************************************************/
- sfr ADC_CONTR = 0xC5;//8位AD轉換控制及標志寄存器 (不可位尋址)
- /************************************************************************
- BIT7 ---
- BIT6 ---
- BIT5 ---
- BIT4 ADC_FLAG (模數轉換啟動控制位,設置為1開始轉換)
- BIT3 ADC_START (模數轉換結束標志位,轉換完成后,該位置1)
- BIT2~BIT0 CHS2~CHS0 (選擇P2哪個端口輸入進行AD轉換)
- *************************************************************************/
- sfr ADC_DATA = 0xC6;//8位AD轉換結果寄存器 (不可位尋址)
- #endif
復制代碼
|