⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 at89x52.h

📁 AT80x52.h源程序注释
💻 H
字号:
/*--------------------------------------------------------------------------
AT89X52.H

Header file for the low voltage Flash Atmel AT89C52 and AT89LV52.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __AT89X52_H__
#define __AT89X52_H__

/*-------------------------------------------
	基本特殊功能寄存器
-------------------------------------------*/
sfr P0      = 0x80;				// P0通用I/O寄存器
sfr SP      = 0x81;				// 堆栈指针
sfr DPL     = 0x82;				// 数据指针低
sfr DPH     = 0x83;				// 数据指针高
sfr PCON    = 0x87;				// 电源控制
sfr TCON    = 0x88;				// 定时器控制
sfr TMOD    = 0x89;				// 定时器模式控制
sfr TL0     = 0x8A;				// 定时器0低字节
sfr TL1     = 0x8B;				// 定时器1低字节 
sfr TH0     = 0x8C;				// 定时器0高字节
sfr TH1     = 0x8D;				// 定时器1高字节

sfr P1      = 0x90;				// P1通用I/O寄存器
sfr SCON    = 0x98;				// 串口控制寄存器
sfr SBUF    = 0x99;				// 串口缓冲区

sfr P2      = 0xA0;				// P2通用I/O寄存器
sfr IE      = 0xA8;				// 中断使能寄存器

sfr P3      = 0xB0;				// P3通用I/O寄存器
sfr IP      = 0xB8;				// 中断优先级寄存器

sfr T2CON   = 0xC8;				// 定时器2控制寄存器
sfr T2MOD   = 0xC9;				// 定时器2 模式控制				
sfr RCAP2L  = 0xCA;				// 定时器2重装/捕捉寄存器低字节
sfr RCAP2H  = 0xCB;				// 定时器2重装/捕捉寄存器高字节
sfr TL2     = 0xCC;				// 定时器2低字节
sfr TH2     = 0xCD;				// 定时器2高字节

sfr PSW     = 0xD0;				// 程序状态字
sfr ACC     = 0xE0;				// 累加器
sfr B       = 0xF0;				// B 寄存器

/*-------------------------------------------
	P0 通用I/O 寄存器位值 (地址:0x80)
-------------------------------------------*/
sbit P0_0 = 0x80;
sbit P0_1 = 0x81;
sbit P0_2 = 0x82;
sbit P0_3 = 0x83;
sbit P0_4 = 0x84;
sbit P0_5 = 0x85;
sbit P0_6 = 0x86;
sbit P0_7 = 0x87;

/*-------------------------------------------
	PCON 电源控制寄存器位值  (地址:0x87)
-------------------------------------------*/
#define IDL_    0x01	// 空闲标志位,置位进入空闲模式

#define STOP_   0x02	
#define PD_     0x02    // 低功耗标志位,置位进入低功耗模式

#define GF0_    0x04	// 通用标志位 0
#define GF1_    0x08	// 通用标志位 1
#define SMOD_   0x80	// 串行口通信波特率控制位,置位使波特率翻倍

/*-------------------------------------------
  	TCON  定时器控制位  (地址:0x88)
-------------------------------------------*/
sbit IT0  = 0x88;			// 外部中断0触发方式控制
sbit IE0  = 0x89;			// 外部中断0标志
sbit IT1  = 0x8A;			// 外部中断1触发方式控制
sbit IE1  = 0x8B;			// 外部中断1标志
sbit TR0  = 0x8C;			// 定时器0启动控制
sbit TF0  = 0x8D;			// 定时器0溢出标志
sbit TR1  = 0x8E;			// 定时器1启动控制
sbit TF1  = 0x8F;			// 定时器1溢出标志

/*-------------------------------------------
	TMOD 定时/计数控制寄存器位值 (地址:0x89)
-------------------------------------------*/
#define T0_M0_   0x01		// 模式选择位低位。
#define T0_M1_   0x02		// 模式选择位高位。
#define T0_CT_   0x04		// 如果C/T=1,定时器以计数方式工作,C/T=0 时,以定时方式工作。
#define T0_GATE_ 0x08		// 当GATE 置位时,定时器仅当TR=1 并且INT=1 时才工作,
							// 如果GATE=0,置位TR 定时器就开始工作。

#define T1_M0_   0x10
#define T1_M1_   0x20
#define T1_CT_   0x40
#define T1_GATE_ 0x80

#define T1_MASK_ 0xF0		// 用于对高4位的操作
#define T0_MASK_ 0x0F		// 用于对低4位的操作

/*-------------------------------------------
	P1 通用I/O 寄存器位	(地址:0x90)
-------------------------------------------*/
sbit P1_0 = 0x90;
sbit P1_1 = 0x91;		 
sbit P1_2 = 0x92;		 
sbit P1_3 = 0x93;
sbit P1_4 = 0x94;
sbit P1_5 = 0x95;
sbit P1_6 = 0x96;
sbit P1_7 = 0x97;
/*-------------------------------------------
 	P1  口复用功能  (地址:0x90)
-------------------------------------------*/
sbit T2   = 0x90;       	// 定时器2的外部计数输入
sbit T2EX = 0x91;       	// 定时器2的重装载/捕获控制口

/*-------------------------------------------
	SCON 串行口控制寄存器位	(地址:0x98)
-------------------------------------------*/
sbit RI   = 0x98;			// 接收中断标志
sbit TI   = 0x99;			// 发送中断标志
sbit RB8  = 0x9A;			// 接收到的第九位数据
sbit TB8  = 0x9B;			// 要被发送的第九位数据
sbit REN  = 0x9C;			// 接收使能
sbit SM2  = 0x9D;			// 多机通信控制
sbit SM1  = 0x9E;			// 串口模式位1
sbit SM0  = 0x9F;			// 串口模式位0

/*-------------------------------------------
	P2 通用I/O 寄存器位	(地址:0xA0)
-------------------------------------------*/
sbit P2_0 = 0xA0;
sbit P2_1 = 0xA1;
sbit P2_2 = 0xA2;
sbit P2_3 = 0xA3;
sbit P2_4 = 0xA4;
sbit P2_5 = 0xA5;
sbit P2_6 = 0xA6;
sbit P2_7 = 0xA7;

/*-------------------------------------------
  	IE   中断使能寄存器	(地址:0xA8)
-------------------------------------------*/
sbit EX0  = 0xA8;       // 外部中断0使能位 	 1=Enable 0=Disable
sbit ET0  = 0xA9;       // 定时器0中断使能位 1=Enable 0=Disable
sbit EX1  = 0xAA;       // 外部中断1使能位	 1=Enable 0=Disable
sbit ET1  = 0xAB;       // 定时器1中断使能位 1=Enable 0=Disable
sbit ES   = 0xAC;       // 串行口中断使能位  1=Enable 0=Disable
sbit ET2  = 0xAD;       // 定时器2中断使能位 1=Enable 0=Disable 

sbit EA   = 0xAF;       // 中断总控制位 1= Enable  0=Disable 

/*-------------------------------------------
	P3 通用I/O 寄存器位	(地址:0xB0) 
-------------------------------------------*/
sbit P3_0 = 0xB0;
sbit P3_1 = 0xB1;
sbit P3_2 = 0xB2;
sbit P3_3 = 0xB3;
sbit P3_4 = 0xB4;
sbit P3_5 = 0xB5;
sbit P3_6 = 0xB6;
sbit P3_7 = 0xB7;
/*-------------------------------------------
 	P3  口复用功能  (地址:0xB0)
-------------------------------------------*/
sbit RXD  = 0xB0;       // 串行口输入
sbit TXD  = 0xB1;       // 串行口输出
sbit INT0 = 0xB2;       // 外部中断0输入口
sbit INT1 = 0xB3;       // 外部中断1输入口
sbit T0   = 0xB4;       // 定时/计数器0外部输入信号
sbit T1   = 0xB5;       // 定时/计数器1外部输入信号
sbit WR   = 0xB6;       // 访问外部RAM时的写信号
sbit RD   = 0xB7;       // 访问外部RAM时的读信号

/*-------------------------------------------
	IP  中断优先级寄存器位 (地址:0xB8)
-------------------------------------------*/
sbit PX0  = 0xB8;		// 外部中断0优先级位
sbit PT0  = 0xB9;		// 定时器0中断优先级位
sbit PX1  = 0xBA;		// 外部中断1优先级位
sbit PT1  = 0xBB;		// 定时器1中断优先级位
sbit PS   = 0xBC;		// 串行口中断优先级位
sbit PT2  = 0xBD;		// 定时器2中断优先级位

/*-------------------------------------------
  	T2CON  定时器2控制寄存器位 (地址:0xC8)
-------------------------------------------*/
sbit CP_RL2= 0xC8;     // 捕捉/重装选择  0=Reload, 1=Capture
sbit C_T2 = 0xC9;      // 计数器/定时器选择位  0=Timer, 1=Counter
sbit TR2  = 0xCA;      // 定时器2运行控制位  0=Stop timer, 1=Start timer
sbit EXEN2= 0xCB;      // 定时器2外部事件使能
sbit TCLK = 0xCC;      // 发送时钟标志  0=串口时钟用Timer 1,1=用Timer 2
sbit RCLK = 0xCD;      // 接收时钟标志  0=串口时钟用Timer 1,1=用Timer 2
sbit EXF2 = 0xCE;      // 定时器2外部事件标志
sbit TF2  = 0xCF;      // 定时器2溢出标志

/*-------------------------------------------
	T2MOD 定时器2 模式控制寄存器位值 (地址:0xC9)		
-------------------------------------------*/
#define DCEN_   0x01    // 向下计数使能。该位与T2EX管脚相结合,控制
						// 定时器2 16位自动重装模式下的计数方向
#define T2OE_   0x02    // 定时器2输出使能。该位用于打开/关闭定时器2时钟输出功能

/*-------------------------------------------
	PSW   程序状态字寄存器位 (地址:0xD0)
-------------------------------------------*/
sbit P    = 0xD0;		// 奇、偶标志位
sbit F1   = 0xD1;		// 用户标志1
sbit OV   = 0xD2;		// 溢出标志
sbit RS0  = 0xD3;		// 寄存器区选择位0
sbit RS1  = 0xD4;		// 寄存器区选择位1
sbit F0   = 0xD5;		// 用户标志0
sbit AC   = 0xD6;		// 辅助进位标志
sbit CY   = 0xD7;		// 进位标志

/*-------------------------------------------
中断向量号		在代码(code)区的00 - 0x2D
中断地址 = (Number * 8) + 3
-------------------------------------------*/
#define IE0_VECTOR	0  		// 外部中断0中断向量号,中断向量地址 = 0x03
#define TF0_VECTOR	1  		// 定时器 0 中断向量号,中断向量地址 = 0x0B
#define IE1_VECTOR	2  		// 外部中断1中断向量号,中断向量地址 = 0x13
#define TF1_VECTOR	3  		// 定时器 1 中断向量号,中断向量地址 = 0x1B
#define SIO_VECTOR	4  		// 串口中断向量号,中断地址 = 0x23

#define TF2_VECTOR	5  		// 定时器 2 中断向量号,中断向量地址 = 0x2B
#define EX2_VECTOR	5  		// 外部中断1中断向量号,中断向量地址 = 0x2B

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -