📄 me.h
字号:
#ifndef __ME51_H__
#define __ME51_H__
#define uchar unsigned char
#define uint unsigned int
/* BYTE Register */
sfr P0 = 0x80; //并口P0
sfr P1 = 0x90; //并口P1
sfr P2 = 0xA0; //并口P2
sfr P3 = 0xB0; //并口P3
sfr PSW = 0xD0; //程序状态字组
sfr ACC = 0xE0;
sfr B = 0xF0;
sfr SP = 0x81;
sfr DPL = 0x82;
sfr DPH = 0x83;
sfr PCON = 0x87;
//电源控制寄存器 不可位寻址
//PCON.7=SMOD 双倍波特率位。由定时器1产生波特率,
//且串口工作于模式1,2,3时,SMOD=1则波特率提高一倍
//PCON.3=GF1 由用户决定
//PCON.2=GF0 由用户决定
//PCON.1=PD 掉电方式位 置PD=1时,激活进入掉电工作方式
//PCON.0=IDL 空闲方式位 置IDL=1时,激活进入空闲工作方式 只有CHMOS可以
sfr TCON = 0x88; //定时器、计数器控制寄存器
sfr TMOD = 0x89; //定时器、计数器方式控制寄存器
//TMOD.7=GATE TRx=1且GATE=1时只有INTx为高电平时才启动定时器/计数器x(硬件控制)
// GATE=0 TRx=1时直接启动定时器/计数器x(软件控制)
//TMOD.6=C/T 选择定时方式或计数方式 0时定时方式,1时为计数方式
//TMOD.5=M1 00 方式0 13位定时器 01方式1 16位定时器/计数器
//TMOD.4=M0 10 方式2 8位自动重载定时、计数器 11方式3 16位定时器/计数器
//TMOD.3=GATE
//TMOD.2=C/T
//TMOD.1=M1
//TMOD.0=M0
sfr TL0 = 0x8A;
sfr TL1 = 0x8B;
sfr TH0 = 0x8C;
sfr TH1 = 0x8D;
sfr IE = 0xA8; //中断触发控制寄存器 不能位寻址
sfr IP = 0xB8;
//中断优先级寄存器 中断具有两级优先级,置1为高优先级 置0为低优先级
//查询次序为 高IE0 TF0 IE1 TF1 RI、TI TF2、EXF2低
sfr SCON = 0x98; //串行端口控制寄存器
sfr SBUF = 0x99;
/* BIT Register */
/* PSW */ //程序状态字组
sbit CY = 0xD7; //进位标志 只读
sbit AC = 0xD6; //辅助进位标志 只读
sbit F0 = 0xD5; //一般用途 由用户决定
sbit RS1 = 0xD4; //寄存器组选择位 00 - 00H~07H 01 - 08H~0fH 10 - 10H~17H 11 - 18H~1FH
sbit RS0 = 0xD3;
sbit OV = 0xD2; //溢出标志 只读
sbit P = 0xD0; //同位标志 只读 指出累加器内1的个数为奇数个
/* TCON */ //定时器、计数器寄存器
sbit TF1 = 0x8F; //定时器1溢出标志位 由硬件置位 响应中断后由硬件清除
sbit TR1 = 0x8E; //定时器1运行控制位 由软件置位/清除 以启动/停止计数/定时器
sbit TF0 = 0x8D; //定时器0溢出标志位 由硬件置位 响应中断后由硬件清除
sbit TR0 = 0x8C; //定时器0运行控制位 由软件置位/清除 以启动/停止计数/定时器
sbit IE1 = 0x8B; //INT1的中断标志位 当检测到INT1时 由硬件置位,响应中断后由硬件清除
sbit IT1 = 0x8A; //INT1的触发方式控制位 置1时为下降沿触发 清0时为低电平触发
sbit IE0 = 0x89; //INT0的中断标志位 当检测到INT0时 由硬件置位,响应中断后由硬件清除
sbit IT0 = 0x88; //INT0的触发方式控制位 置1时为下降沿触发 清0时为低电平触发
/* IE */ //中断触发控制寄存器 不能位寻址
sbit EA = 0xAF; //中断允许、禁止位 EA=1允许中断 EA=0禁止所有中断
sbit ET2 = 0xAC; //定时器T2中断允许位(C52)1允许
sbit ES = 0xAC; //串行口中断允许位
sbit ET1 = 0xAB; //定时器、计数器T1溢出中断允许位
sbit EX1 = 0xAA; //外部中断1中断允许位
sbit ET0 = 0xA9; //定时器、计数器T0溢出中断允许位
sbit EX0 = 0xA8; //外部中断0中断允许位
/* IP */
sbit PT2 = 0xBD; //定义定时器2的中断优先级(仅C52有)
sbit PS = 0xBC; //定义串行口中断优先级
sbit PT1 = 0xBB; //定义定时器1的中断优先级
sbit PX1 = 0xBA; //定义外部中断1的中断优先级
sbit PT0 = 0xB9; //定义定时器0的中断优先级
sbit PX0 = 0xB8; //定义外部中断0的中断优先级
/* P3 */
sbit RD = 0xB7;
sbit WR = 0xB6;
sbit T1 = 0xB5;
sbit T0 = 0xB4;
sbit INT1 = 0xB3;
sbit INT0 = 0xB2;
sbit TXD = 0xB1;
sbit RXD = 0xB0;
/* SCON */ //串行端口控制寄存器
sbit SM0 = 0x9F;
sbit SM1 = 0x9E;
//串行端口模式选择
// 模式 说明 波特率
//00 0 移位寄存器方式 fosc/12
//01 1 8位UART方式 可变T1溢出率/n
//10 2 9位UART方式 fosc/64,fosc/32
//11 3 9位UART方式 可变T1溢出率/n
sbit SM2 = 0x9D;
sbit REN = 0x9C; //串行接收允许位 1允许接收 0禁止接收
sbit TB8 = 0x9B; //模式2、3时TB8为传送的第9个数据位
sbit RB8 = 0x9A; //模式2、3时TB8为接收的第9个数据位
sbit TI = 0x99; //发送中断标志 由硬件置位 软件清除
sbit RI = 0x98; //接收中断标志 由硬件置位 软件清除
/* P0 */
sbit P00=P0^0;
sbit P01=P0^1;
sbit P02=P0^2;
sbit P03=P0^3;
sbit P04=P0^4;
sbit P05=P0^5;
sbit P06=P0^6;
sbit P07=P0^7;
/* P1 */
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
/* P2 */
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;
sbit P24=P2^4;
sbit P25=P2^5;
sbit P26=P2^6;
sbit P27=P2^7;
/* P3 */
sbit P30=P3^0;
sbit P31=P3^1;
sbit P32=P3^2;
sbit P33=P3^3;
sbit P34=P3^4;
sbit P35=P3^5;
sbit P36=P3^6;
sbit P37=P3^7;
/* user define */
/*
struct datestr
{
uchar tm_hyear; //1900`2000h
uchar tm_lyear; //1900`2000h
uchar tm_mon; //01`12h
uchar tm_day; //01`31h
};
*/
struct tmstr
{
unsigned char tm_hyear; //20h
unsigned char tm_lyear; //00`99h
unsigned char tm_mon; //01`12h
unsigned char tm_day; //01`31h
unsigned char tm_hour; //00`23h
unsigned char tm_min; //00`59h
unsigned char tm_sec; //00`59h
unsigned char tm_hyear1; //1900`2000h
unsigned char tm_lyear1; //1900`2000h
unsigned char tm_mon1; //01`12h
unsigned char tm_day1; //01`31h
unsigned char tm_hyear2; //1900`2000h
unsigned char tm_lyear2; //1900`2000h
unsigned char tm_mon2; //01`12h
unsigned char tm_day2; //01`31h
unsigned char tm_week; //星期
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -