- 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
复制代码
|