📄 stc89c54rd.h
字号:
/**********************************************************************
Date: 2007 09 21
************************************************************************/
/************************************************************************/
#ifndef T89C51_H
#define T89C51_H
/************************************************************************/
/* ................................... 寄存器定义 ............................................ */
sfr P0 = 0x80; /* 漏极开路双向I/O口;地址/数据复用.复位值:11111111b */
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;
/* ............................................................................................ */
sfr SP = 0x81; /* 堆栈指针寄存器.复位值:00000111b */
sfr DPL = 0x82; /* DPTR,DPTR1通过AUXR1切换 */
sfr DPH = 0x83;
/* ............................................................................................ */
sfr PCON = 0x87; /* 电源控制.复位值:00x10000b */
#define SMOD 0x80 /* 1:使波特率加倍(模式1,2,3) */
#define SMOD0 0x40 /* 1:SCON.7(SCON1.7)表示帧检测使能; 0:标准8052功能 */
#define PCON_REV5 0x20 /* 保留 */
#define POF 0x10 /* Power-off 标记 */
#define GF1 0x08 /* 用户标志位 */
#define GF0 0x04 /* 用户标志位 */
#define PD 0x02 /* 1:关机模式 */
#define IDL 0x01 /* 1:空闲模式.串口,定时器,中断模块继续工作 */
/* ............................................................................................ */
sfr TCON = 0x88; /* 时钟控制.复位值:00000000b */
sbit TF1 = TCON^7; /* timer1溢出标志,进入中断服务程序后自动清零.可软件置复位 */
sbit TR1 = TCON^6; /* 1:timer1开始计时/计数; 0:timer1停止计时/计数 */
sbit TF0 = TCON^5; /* timer0溢出标志,进入中断服务程序后自动清零.可软件置复位 */
sbit TR0 = TCON^4; /* 1:timer0开始计时/计数; 0:timer0停止计时/计数 */
sbit IE1 = TCON^3; /* 外部中断1,边沿触发时进入中断服务程序硬件清零 */
sbit IT1 = TCON^2; /* 外部中断1类型. 1:下降沿触发; 0:低电平触发 */
sbit IE0 = TCON^1; /* 外部中断0,边沿触发时进入中断服务程序硬件清零 */
sbit IT0 = TCON^0; /* 外部中断0类型. 1:下降沿触发; 0:低电平触发 */
/* ............................................................................................ */
sfr TMOD = 0x89; /* 计数器模式控制.复位值:00000000b */
#define GATE1 0x80 /* 门控制1. 1:INT1引脚为高 和 TR1置位使能TIMER1; 0:只需TR1置位 */
#define CT1 0x40 /* 定时器1,计数器1选择. 1:计数T1引脚上的脉冲; 0:定时器 */
#define T1M1 0x20 /* 模式控制位. 00:13位模式; 01:无预置的16位模式 */
#define T1M0 0x10 /* 10:自动从TH1加载的8位模式; 11:停止计数器 */
#define GATE0 0x08 /* 门控制0. 1:INT0 和 TR0同时置位使能TIMER0; 0:只需TR0置位 */
#define CT0 0x04 /* 定时器0,计数器0选择. 1:计数T0引脚上的脉冲; 0:定时器 */
#define T0M1 0x02 /* 模式控制位. 00:13位模式; 01:无预置的16位模式 */
#define T0M0 0x01 /* 10:自动从TH0加载的8位模式; 11:TL0,TH0分别是一个8位定时器/计数器. */
/* ............................................................................................ */
sfr TL0 = 0x8a; /* timer0低八位.复位值:00000000b */
sfr TL1 = 0x8b; /* timer1低八位.复位值:00000000b */
sfr TH0 = 0x8c; /* timer0高八位.复位值:00000000b */
sfr TH1 = 0x8d; /* timer1高八位.复位值:00000000b */
/* ............................................................................................ */
sfr AUXR = 0x8e; /* 辅助寄存器.复位值:xx0x1000b */
#define AUXR_REV7 0x80 /* 保留 */
#define AUXR_REV6 0x40 /* 保留 */
#define AUXR_REV5 0x20 /* 保留 */
#define AUXR_REV4 0x10 /* 保留 */
#define AUXR_REV3 0x08 /* 保留 */
#define AUXR_REV2 0x04 /* 保留 */
#define EXTRAM 0x02 /* XRAM读写方式(0~0XFF)
0:允许访问内部扩展RAM
1:禁止访问内部扩展RAM */
#define ALEOFF 0x01 /* ALE操作模式.
0:允许ALE信号输出
1:禁止ALE信号输出 */
/* ............................................................................................ */
sfr P1 = 0x90; /* 通用I/O,第二功能口.复位值:11111111b */
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 P1_1 = P1^1; /* T2EX,定时器/计数器2 重载/捕捉触发 */
sbit P1_0 = P1^0; /* T2,计数器2输入口 */
/* ............................................................................................ */
sfr SCON = 0x98; /* 串口0控制.复位值:00000000b */
sbit FE = SCON^7; /* PCON.SMOD0为1时此位为帧错误位. 1:表示有帧错误,需软件清零 */
sbit SM0 = SCON^7; /* 00:8位同步模式,波特率1/12或1/6 Tclk; 01:10位异步模式,波特率可变 */
sbit SM1 = SCON^6; /* 10:11位异步模式,波特率1/32或1/64Tclk; 11:11位异步模式,波特率可变 */
sbit SM2 = SCON^5; /* 在模式2,3,置1表示多机通信; 在模式0应该置零 */
sbit REN = SCON^4; /* 1:接收使能; 0:禁止接收 */
sbit TB8 = SCON^3; /* 多机通信时发送的第9位 */
sbit RB8 = SCON^2; /* 多机通信时收到的第9位.
在模式1如果SM2为0,则RB8就是接收到的停止位 */
sbit TI = SCON^1; /* 发送完成,由软件清零 */
sbit RI = SCON^0; /* 接收了一字节数据,由软件清零 */
/* ............................................................................................ */
sfr SBUF = 0x99; /* 串口0接收发送缓冲.复位值:xxxxxxxxb */
/* ............................................................................................ */
sfr P2 = 0xa0; /* 内部上拉的双向I/O口;高8位地址.复位值:11111111b */
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;
/* ............................................................................................ */
sfr AUXR1 = 0xa2; /* 辅助寄存器1.复位值:xxxx00x0b */
#define AUXR1_REV7 0x80 /* 保留 */
#define AUXR1_REV6 0x40 /* 保留 */
#define AUXR1_REV5 0x20 /* 保留 */
#define AUXR1_REV4 0x10 /* 保留 */
#define GF2 0x08 /* 用户标志 */
#define AUXR1_REV2 0x04 /* 必须为0 */
#define AUXR1_REV1 0x02 /* 保留 */
#define DPS 0x01 /* 0:选择DPTR0 1:选择DPTR1 */
/* ............................................................................................ */
sfr IE = 0xa8; /* 中断使能寄存器.复位值:00000000b */
sbit EA = IE^7; /* 中断总开关 */
sbit EC = IE^6; /* PCA中断使能 */
sbit ET2 = IE^5; /* time2中断使能 */
sbit ES = IE^4; /* 串口0中断使能 */
sbit ET1 = IE^3; /* time1中断使能 */
sbit EX1 = IE^2; /* 外部中断1使能 */
sbit ET0 = IE^1; /* time0中断使能 */
sbit EX0 = IE^0; /* 外部中断0使能 */
/* ............................................................................................ */
sfr SADDR = 0xa9; /* 串口0的广播地址.复位值:00000000b */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -