⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stc89.h

📁 STC单片机全系列头文件
💻 H
📖 第 1 页 / 共 2 页
字号:
/*------------------------------------------------*/
/* --- 宏晶科技 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 + -