📄 stc89.h
字号:
/*------------------------------------------------*/
/* --- 宏晶科技 STCMCU ---------------------------*/
/* --- Mobile: (86)13922805190 -------------------*/
/* --- Fax: 86-755-82944243 ----------------------*/
/* --- Tel: 86-755-82948412 ----------------------*/
/* --- Web: www.STCMCU.com -----------------------*/
/* 适用于: STC89C5xRC STC89LE5xRC --------------*/
/* ------- STC89C5xRD+ STC89LE5xRD+ --------------*/
/*------------------------------------------------*/
#ifndef __STC89_H__
#define __STC89_H__
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sfr PSW = 0xd0; //程序状态字 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 CY AC F0 RS1 RS0 OV F1 P
//初始值=0000,0000 0 0 0 0 0 0 0 0
sbit CY = PSW^7; //进位标志
sbit AC = PSW^6; //辅助进位标志
sbit F0 = PSW^5; //用户标志
sbit RS1 = PSW^4; //寄存器组选择位1
sbit RS0 = PSW^3; //寄存器组选择位0
sbit OV = PSW^2; //溢出标志
sbit P = PSW^0; //ACC的偶校验位
/////////////////////////////////
sfr ACC = 0xe0; //累加器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
sbit ACC7 = ACC^7; //累加器第7位
sbit ACC6 = ACC^6; //累加器第6位
sbit ACC5 = ACC^5; //累加器第5位
sbit ACC4 = ACC^4; //累加器第4位
sbit ACC3 = ACC^3; //累加器第3位
sbit ACC2 = ACC^2; //累加器第2位
sbit ACC1 = ACC^1; //累加器第1位
sbit ACC0 = ACC^0; //累加器第0位
/////////////////////////////////
sfr B = 0xf0; //B寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr SP = 0x81; //堆栈指针 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0111 0 0 0 0 0 1 1 1
/////////////////////////////////
sfr DPL = 0x82; //数据指针低字节 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
sfr DPH = 0x83; //数据指针高字节 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sfr PCON = 0x87; //电源控制寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 SMOD SMOD0 - POF GF1 GF0 PD IDL
//初始值=00x1,0000 0 0 x 1 0 0 0 0
#define SMOD 0x80 //串口波特率倍速位,置1可使波特率快1倍
#define SMOD0 0x40 //FE/SM0选择位,0:SCON.7为SM0 1:SCON.7为FE
#define POF 0x10 //上电复位标志位,上电时由硬件置1,需由软件清0
#define GF1 0x08 //通用标志位1
#define GF0 0x04 //通用标志位0
#define PD 0x02 //掉电控制位,写1可以使MCU进入PowerDown模式
#define IDL 0x01 //空闲控制位,写1可以使MCU进入Idle模式
/////////////////////////////////
sfr WDT_CONTR = 0xe1; //看门狗定时器控制器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 - - EN_WDT CLR_WDT IDL_WDT PS2 PS1 PS0
//初始值=xx00,0000 x x 0 0 0 0 0 0
#define EN_WDT 0x20 //软件使能看门狗,打开后不能用软件的方式关闭
#define CLR_WDT 0x10 //清看门狗定时器
#define IDLE_WDT 0x08 //IDLE模式下,看门狗定时器是否继续计时
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sfr AUXR = 0x8e; //辅助寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 - - - - - - EXTRAM S1BRS
//初始值=xxxx,xx00 x x x x x x 0 0
#define EXTRAM 0x02 //内部扩展RAM禁能位,0:内部扩展RAM有效 1:禁用内部扩展RAM
#define ALEOFF 0x01 //禁止ALE信号输出,0:使能ALE信号输出 1:关闭ALE信号输出
/////////////////////////////////
sfr AUXR1 = 0xa2; //辅助寄存器1 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 - - - - GF2 - - DPS
//初始值=xxxx,0xx0 x x x x 0 x x 0
#define GF2 0x08 //通用标志位2
#define DPS 0x01 //DPTR0/DPTR1选择位,0:DPTR0 1:DPTR1
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sfr P0 = 0x80; //I/O端口0 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
//初始值=1111,1111 1 1 1 1 1 1 1 1
sbit P07 = P0^7; //I/O口P0.7
sbit P06 = P0^6; //I/O口P0.6
sbit P05 = P0^5; //I/O口P0.5
sbit P04 = P0^4; //I/O口P0.4
sbit P03 = P0^3; //I/O口P0.3
sbit P02 = P0^2; //I/O口P0.2
sbit P01 = P0^1; //I/O口P0.1
sbit P00 = P0^0; //I/O口P0.0
/////////////////////////////////
sfr P1 = 0x90; //I/O端口0 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
//初始值=1111,1111 1 1 1 1 1 1 1 1
sbit P17 = P1^7; //I/O口P1.7
sbit P16 = P1^6; //I/O口P1.6
sbit P15 = P1^5; //I/O口P1.5
sbit P14 = P1^4; //I/O口P1.4
sbit P13 = P1^3; //I/O口P1.3
sbit P12 = P1^2; //I/O口P1.2
sbit P11 = P1^1; //I/O口P1.1
sbit P10 = P1^0; //I/O口P1.0
sbit T2 = P1^0; //定时器2的外部信号输入口
sbit T2CLKO = P1^0; //定时器2定的时钟溢出脉冲输出脚
sbit T2EX = P1^1; //定时器2的中断控制源
/////////////////////////////////
sfr P2 = 0xa0; //I/O端口2 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
//初始值=1111,1111 1 1 1 1 1 1 1 1
sbit P27 = P2^7; //I/O口P2.7
sbit P26 = P2^6; //I/O口P2.6
sbit P25 = P2^5; //I/O口P2.5
sbit P24 = P2^4; //I/O口P2.4
sbit P23 = P2^3; //I/O口P2.3
sbit P22 = P2^2; //I/O口P2.2
sbit P21 = P2^1; //I/O口P2.1
sbit P20 = P2^0; //I/O口P2.0
/////////////////////////////////
sfr P3 = 0xb0; //I/O端口3 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0
//初始值=1111,1111 1 1 1 1 1 1 1 1
sbit P37 = P3^7; //I/O口P3.7
sbit P36 = P3^6; //I/O口P3.6
sbit P35 = P3^5; //I/O口P3.5
sbit P34 = P3^4; //I/O口P3.4
sbit P33 = P3^3; //I/O口P3.3
sbit P32 = P3^2; //I/O口P3.2
sbit P31 = P3^1; //I/O口P3.1
sbit P30 = P3^0; //I/O口P3.0
sbit RXD = P3^0; //串口1的数据接收口
sbit TXD = P3^1; //串口1的数据发送口
sbit INT0 = P3^2; //外部中断0的信号输入口
sbit INT1 = P3^3; //外部中断1的信号输出口
sbit T0 = P3^4; //定时器0的外部信号输入口
sbit T1 = P3^5; //定时器1的外部信号输入口
sbit WR = P3^6; //外部数据存储器的写信号
sbit RD = P3^7; //外部数据存储器的读信号
/////////////////////////////////
sfr P4 = 0xc0; //I/O端口4 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 - P4.6 P4.5 P4.4 P4.3 P4.2 P4.1 P4.0
//初始值=xxxx,1111 x x x x 1 1 1 1
sbit P43 = P4^3; //I/O口P4.3
sbit P42 = P4^2; //I/O口P4.2
sbit P41 = P4^1; //I/O口P4.1
sbit P40 = P4^0; //I/O口P4.0
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sfr IE = 0xa8; //中断使能寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 EA - ET2 ES ET1 EX1 ET0 EX0
//初始值=0x00,0000 0 x 0 0 0 0 0 0
sbit EA = IE^7; //总中断开关
sbit ET2 = IE^5; //定时器2中断使能位
sbit ES = IE^4; //串口中断使能位
sbit ET1 = IE^3; //定时器1中断使能位
sbit EX1 = IE^2; //外部中断1中断使能位
sbit ET0 = IE^1; //定时器0中断使能位
sbit EX0 = IE^0; //外部中断0中断使能位
/////////////////////////////////
sfr IPH = 0xb7; //中断优先级寄存器高位 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 PX3H PX2H PT2H PSH PT1H PX1H PT0H PX0H
//初始值=0000,0000 0 0 0 0 0 0 0 0
#define PX3H 0x80 //外部中断3中断优先级控制高位
#define PX2H 0x40 //外部中断2中断优先级控制高位
#define PT2H 0x20 //定时器2中断优先级控制高位
#define PSH 0x10 //串口中断优先级控制高位
#define PT1H 0x08 //定时器1中断优先级控制高位
#define PX1H 0x04 //外部中断1中断优先级控制高位
#define PT0H 0x02 //定时器0中断优先级控制高位
#define PX0H 0x01 //外部中断0中断优先级控制高位
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -