<AT89X52.H>换成<reg52.h>

C51中为什么把头文件<AT89X52.H>换成<reg52.h>原先的错误就不见了呢
检举|2009-11-14 10:45jinfang199054 | 分类:操作系统/系统故障 | 浏览1039次
我有更好的答案


提问者采纳
2009-11-22 13:41

头文件不同所需要的语句也相应会有所区别~有些语句是<AT89X52.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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值