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

来源:互联网 发布:汪小帆 复杂网络 编辑:程序博客网 时间:2024/04/26 04:01
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_VECTOR0  // 外部中断0中断向量号,中断向量地址 = 0x03 #define TF0_VECTOR1  // 定时器 0 中断向量号,中断向量地址 = 0x0B #define IE1_VECTOR2  // 外部中断1中断向量号,中断向量地址 = 0x13 #define TF1_VECTOR3  // 定时器 1 中断向量号,中断向量地址 = 0x1B #define SIO_VECTOR4  // 串口中断向量号,中断地址 = 0x23  #define TF2_VECTOR5  // 定时器 2 中断向量号,中断向量地址 = 0x2B #define EX2_VECTOR5  // 外部中断1中断向量号,中断向量地址 = 0x2B  #endif


原创粉丝点击