REG51.H
Header file for generic 80C51 and 80C31 microcontroller.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
-------------------------------------------------------------------*/
/*******************************************************************
条件编译
格式:
#ifndef X
#define X
Y
#endif
说明:如果定义了宏X,则执行#endif后的,否则执行#define X,
定义宏并编译后面的程序段Y,直到#endif。
作用:可防止重复编译头文件
********************************************************************/
#ifndef __REG51_H__ //宏定义
#define __REG51_H__ //宏定义
/* BYTE Register */
/********************************************************************
特殊功能寄存器声明
格式:sfr 名称 = 特殊功能寄存器地址
********************************************************************/
sfr P0 = 0x80;//P0口寄存器
sfr P1 = 0x90;//P1口寄存器
sfr P2 = 0xA0;//P2口寄存器
sfr P3 = 0xB0;//P3口寄存器
sfr PSW = 0xD0;//程序状态字
sfr ACC = 0xE0;//累加器A,主要用于加减
sfr B = 0xF0;//寄存器B,主要用于乘除
sfr SP = 0x81;//堆栈指针
sfr DPL = 0x82;//数据指针DPTR的低八位
sfr DPH = 0x83;//数据指针DPTR的高八位
sfr PCON = 0x87;//电源管理寄存器
sfr TCON = 0x88;//定时/计数器控制
sfr TMOD = 0x;//定时/计数器工作方式控制
sfr TL0 = 0x8A;//定时器0低8位的初值
sfr TL1 = 0x8B;//定时器1低8位的初值
sfr TH0 = 0x8C;//定时器0高8位的初值
sfr TH1 = 0x8D;//定时器1高8位的初值
sfr IE = 0xA8;//中断允许控制
sfr IP = 0xB8;//中断优先级控制
sfr SCON = 0x98;//串行口控制
sfr SBUF = 0x99;//串行数据缓冲
/* BIT Register */
/* PSW */
/*******************************************************************
特殊功能位声明
*******************************************************************/
sbit CY = 0xD7;//进位标志
sbit AC = 0xD6;//辅助进位标志
sbit F0 = 0xD5;//通用标志位,由用户自定义
sbit RS1 = 0xD4;//工作寄存器选择位,和RS0一同
sbit RS0 = 0xD3;//工作寄存器选择位
sbit OV = 0xD2;//溢出标志位
sbit P = 0xD0;//奇偶校验
/* TCON */
/******************************************************************
定时器/计数器控制寄存器位声明
格式:sbit 名称 = 位地址
******************************************************************/
sbit TF1 = 0x8F;//时钟溢出中断1
sbit TR1 = 0x8E;//时钟1开关
sbit TF0 = 0x8D;//时钟溢出中断1
sbit TR0 = 0x8C;//时钟0开关
sbit IE1 = 0x8B;//外部中断1请求标志位
sbit IT1 = 0x8A;//外部中断1触发控制位
sbit IE0 = 0x;//外部中断0请求标志位
sbit IT0
= 0x88;//外部中断0触发控制位
/* IE */
/*****************************************************************
中断允许控制寄存器位声明
格式 sbit 名称 = 位地址
******************************************************************/
sbit EA = 0xAF; //中断开放控制位
sbit ES = 0xAC; //串行中断开放控制位
sbit ET1 = 0xAB; //定时器1中断控制位
sbit EX1 = 0xAA; //外部中断1开放控制位
sbit ET0 = 0xA9; //定时器0中断控制位
sbit EX0 = 0xA8; //外部中断0开放控制位
/* IP */
/*****************************************************************
中断优先级控制寄存器位声明
格式 sbit 名称 = 位地址
*****************************************************************/
sbit PS = 0xBC; //串行 优先级控制位
sbit PT1 = 0xBB; //定时/计数器优先级控制位
sbit PX1 = 0xBA; //外部中断 优先级控制位
sbit PT0 = 0xB9; //定时/计数器优先级控制位
sbit PX0 = 0xB8; //外部中断 优先级控制位
/* P3 */
/****************************************************************
P3口位声明
格式 sbit 名称 = 位地址
****************************************************************/
sbit RD = 0xB7; //读
sbit WR = 0xB6; //写
sbit T1 = 0xB5; //定时器1
sbit T0 = 0xB4; //定时器0
sbit INT1 = 0xB3; //外部中断1
sbit INT0 = 0xB2; //外部中断0
sbit TXD = 0xB1; //串口发送
sbit RXD = 0xB0; //串口接受
/* SCON */
/****************************************************************
串行口控制寄存器位声明
格式:sbit 名称 = 位地址
****************************************************************/
sbit SM0 = 0x9F; //串行口工作方式控制位
sbit SM1 = 0x9E; //串行口工作方式控制位
sbit SM2 = 0x9D; //多机通信控制位
sbit REN = 0x9C; //允许接受位
sbit TB8 = 0x9B; //发送接受数据位
sbit RB8 = 0x9A; //接受数据位
sbit TI = 0x99; //串口中断发送标志
sbit RI = 0x98; //串口中断接受标志
#endif //结束条件编译下载本文