📄 stc89.h
字号:
/////////////////////////////////
sfr IP = 0xb8; //中断优先级寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 - - PT2 PS PT1 PX1 PT0 PX0
//初始值=xx00,0000 x x 0 0 0 0 0 0
sbit PT2 = IP^5; //定时器2中断优先级控制低位
sbit PS = IP^4; //串口中断优先级控制低位
sbit PT1 = IP^3; //定时器1中断优先级控制低位
sbit PX1 = IP^2; //外部中断1中断优先级控制低位
sbit PT0 = IP^1; //定时器0中断优先级控制低位
sbit PX0 = IP^0; //外部中断0中断优先级控制低位
/////////////////////////////////
sfr XICON = 0xe8; //辅助中断使能寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 PX3 EX3 IE3 IT3 PX2 EX2 IE2 IT2
//初始值=0000,0000 0 0 0 0 0 0 0 0
sbit PX3 = XICON^7; //外部中断3中断优先级控制低位
sbit EX3 = XICON^6; //使能外部中断3
sbit IE3 = XICON^5; //外部中断3的中断请求位,由硬件置1,可由软件清0或者在中断处理程序完成后由硬件自动清0
sbit IT3 = XICON^4; //外部中断3的触发类型,0:低电平触发外部中断 1:下降沿触发外部中断
sbit PX2 = XICON^3; //外部中断2中断优先级控制低位
sbit EX2 = XICON^2; //使能外部中断2
sbit IE2 = XICON^1; //外部中断2的中断请求位,由硬件置1,可由软件清0或者在中断处理程序完成后由硬件自动清0
sbit IT2 = XICON^0; //外部中断2的触发类型,0:低电平触发外部中断 1:下降沿触发外部中断
#define X0_INTNO 0 //外部中断0中断号,入口地址为0003H
#define T0_INTNO 1 //定时器0中断号,入口地址为000BH
#define X1_INTNO 2 //外部中断1中断号,入口地址为0013H
#define T1_INTNO 3 //定时器1中断号,入口地址为001BH
#define UART_INTNO 4 //串口中断号,入口地址为0023H
#define T2_INTNO 5 //定时器2中断号,入口地址为002BH
#define X2_INTNO 6 //外部中断2中断号,入口地址为0033H
#define X3_INTNO 7 //外部中断3中断号,入口地址为003BH
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sfr TCON = 0x88; //定时器0/1控制寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
//初始值=0000,0000 0 0 0 0 0 0 0 0
sbit TF1 = TCON^7; //定时器1溢出标志,由硬件置1,可由软件清0或者在中断处理程序完成后由硬件自动清0
sbit TR1 = TCON^6; //定时器1的启动控制位,1:启动定时器 0:停止定时器
sbit TF0 = TCON^5; //定时器0溢出标志,由硬件置1,可由软件清0或者在中断处理程序完成后由硬件自动清0
sbit TR0 = TCON^4; //定时器0的启动控制位,1:启动定时器 0:停止定时器
sbit IE1 = TCON^3; //外部中断1的中断请求位,由硬件置1,可由软件清0或者在中断处理程序完成后由硬件自动清0
sbit IT1 = TCON^2; //外部中断1的触发类型,0:低电平触发外部中断 1:下降沿触发外部中断
sbit IE0 = TCON^1; //外部中断0的中断请求位,由硬件置1,可由软件清0或者在中断处理程序完成后由硬件自动清0
sbit IT0 = TCON^0; //外部中断0的触发类型,0:低电平触发外部中断 1:下降沿触发外部中断
/////////////////////////////////
sfr TMOD = 0x89; //定时器0/1模式寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 GATE C/T# M1 M0 GATE C/T# M1 M0
//初始值=0000,0000 0 0 0 0 0 0 0 0
#define GATE1 0x80 //定时器1启动控制位,0:TR1为1时启动定时器1 1:TR1为1且INT1为高电平时才启动定时器1
#define C_T1 0x40 //定时器/计数器选择位,0:定时器(时钟源为内部时钟) 1:计数器(时钟源为T1引脚的外部时钟)
#define T1_M0 0x00 //定时器1操作模式0:13位定时器
#define T1_M1 0x10 //定时器1操作模式1:16位定时器
#define T1_M2 0x20 //定时器1操作模式2:8位自动重载定时器
#define T1_M3 0x30 //定时器1操作模式3:定时器1停止
#define GATE0 0x08 //定时器1启动控制位,0:TR0为1时启动定时器1 1:TR0为1且INT0为高电平时才启动定时器0
#define C_T0 0x04 //定时器/计数器选择位,0:定时器(时钟源为内部时钟) 1:计数器(时钟源为T0引脚的外部时钟)
#define T0_M0 0x00 //定时器0操作模式0:13位定时器
#define T0_M1 0x01 //定时器0操作模式1:16位定时器
#define T0_M2 0x02 //定时器0操作模式2:8位自动重载定时器
#define T0_M3 0x03 //定时器0操作模式3:TL0和TH0为两组独立8位定时器
/////////////////////////////////
sfr TL0 = 0x8a; //定时器0的低8位计数值 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr TL1 = 0x8b; //定时器1的低8位计数值 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr TH0 = 0x8c; //定时器0的高8位计数值 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr TH1 = 0x8d; //定时器1的高8位计数值 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr T2CON = 0xc8; //定时器2控制寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2# CP/RL#
//初始值=0000,0000 0 0 0 0 0 0 0 0
sbit TF2 = T2CON^7; //定时器2溢出标志,由硬件置1,必须由软件清0
sbit EXF2 = T2CON^6; //定时器2的外部标志,由硬件置1,必须由软件清0
sbit RCLK = T2CON^5; //接收时钟标志,0:使用定时器1作为串口接收发生器 1:使用定时器2作为串口接收发生器
sbit TCLK = T2CON^4; //发送时钟标志,0:使用定时器1作为串口发送发生器 1:使用定时器2作为串口发送发生器
sbit EXEN2 = T2CON^3; //定时器2的外部使能标志
sbit TR2 = T2CON^2; //启动定时期2
sbit C_T2 = T2CON^1; //定时器/计数器选择位,0:定时器(时钟源为内部时钟) 1:计数器(时钟源为T2引脚的外部时钟)
sbit CP_RL2 = T2CON^0; //捕获/重载标志
/////////////////////////////////
sfr T2MOD = 0xc9; //定时器0/1模式寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 - - - - - - T2OE DCEN
//初始值=xxxx,xx00 x x x x x x 0 0
#define T2OE 0x02 //定时器2输出使能,输出溢出率到T2脚
#define DCEN 0x01 //定时器2向下计数,0:向上计数 1:向下计数
/////////////////////////////////
sfr RCAP2L = 0xca; //定时器2重载/捕获低8位 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr RCAP2H = 0xcb; //定时器2重载/捕获高8位 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr TL2 = 0xcc; //定时器2的低8位计数值 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr TH2 = 0xcd; //定时器2的高8位计数值 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr SCON = 0x98; //串口控制寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 SM0/FE SM1 SM2 REN TB8 RB8 TI Ri
//初始值=0000,0000 0 0 0 0 0 0 0 0
sbit FE = SCON^7; //帧错误检测位,当串口模块在接收数据时没有检测到正确的停止位时,FE被硬件置1,需要由软件来清0(当SMOD0为1时,FE有效)
sbit SM0 = SCON^7; //串口模式设置位
sbit SM1 = SCON^6; //SM0/SM1=0/0:移位寄存器 0/1:8位可变波特率 1/0:9位固定波特率 1/1:9位可变波特率
sbit SM2 = SCON^5; //自动地址识别使能位
sbit REN = SCON^4; //使能串口接收模块
sbit TB8 = SCON^3; //发送的第9位数据
sbit RB8 = SCON^2; //接收的第9位数据
sbit TI = SCON^1; //发送完成中断标志
sbit RI = SCON^0; //接收完成中断标志
/////////////////////////////////
sfr SBUF = 0x99; //串口接收/发送数据 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=xxxx,xxxx x x x x x x x x
/////////////////////////////////
sfr SADDR = 0xa9; //串口设备从地址寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr SADEN = 0xb9; //串口设备从地址屏蔽位 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sfr ISP_DATA = 0xe2; //ISP数据寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=1111,1111 1 1 1 1 1 1 1 1
/////////////////////////////////
sfr ISP_ADDRH = 0xe3; //ISP地址高位寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr ISP_ADDRL = 0xe4; //ISP地址低位寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr ISP_CMD = 0xe5; //ISP命令寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=xxxx,xx00 x x x x x 0 0 0
#define ISP_IDLE 0x00 //ISP待机命令
#define ISP_READ 0x01 //ISP读字节数据命令
#define ISP_PROGRAM 0x02 //ISP字节编程命令
#define ISP_ERASE 0x03 //ISP扇区擦除命令(每扇区512字节))
/////////////////////////////////
sfr ISP_TRIG = 0xe6; //ISP命令触发寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=xxxx,xxxx x x x x x x x x
#define ISP_TRIG0 0x46 //ISP功能触发命令1
#define ISP_TRIG1 0xb9 //ISP功能触发命令2
/////////////////////////////////
sfr ISP_CONTR = 0xe7; //ISP控制寄存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 ISPEN SWBS SWRST - - WT2 WT1 WT0
//初始值=000x,x000 0 0 0 x x 0 0 0
#define ISPEN 0x80 //ISP使能开关
#define SWBS 0x40 //软启动选择,0:从用户AP启动 1:从ISP启动
#define SWRST 0x20 //触发软件复位
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -