📄 89c51.h
字号:
/*-------------------------------------------------------------------------
89X5X_H
Header file for 89CXX controller
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc^
All rights reserved^
--------------------------------------------------------------------------*/
#ifndef __89x5X_H__
#define __89x5X_H__
// 8051 core
sfr ACC = 0xE0;//累加器A (可位寻址)
sfr B = 0xF0;//寄存器B (可位寻址)
sfr DPL = 0x82;//数据指针低位 (不可位寻址)
sfr DPH = 0x83;//数据指针高位 (不可位寻址)
sfr SP = 0x81;//堆栈指针 (不可位寻址)
sfr SBUF = 0x99;//串行数据缓冲器 (不可位寻址)
sfr TL0 = 0x8A;//T0低字节 (不可位寻址)
sfr TL1 = 0x8B;//T1低字节 (不可位寻址)
sfr TH0 = 0x8C;//T0高字节 (不可位寻址)
sfr TH1 = 0x8D;//T1高字节 (不可位寻址)
sfr PSW = 0xD0;//状态 (标志) 寄存器 (可位寻址)
/************************************************************************
BIT7 CY (进位标志位)
BIT6 AC ( 辅助进位标志位,当进行加、减运算时当有低4位向高4位进位或
借位时,AC置位,否则被清零。AC辅助进位位也常用于十进制调整)
BTT5 F0 (用户标志位0,供用户设置的标志位)
BIT4~BIT3 RS1~RS0 (寄存器组选择位)
BIT2 OV (溢出标志位)
BIT1 F1 (用户标志位1,供用户设置的标志位)
BIT0 P (奇偶校验位)
*************************************************************************/
sfr SCON = 0x98;//串口 (控制及标志) 寄存器 (可位寻址)
/************************************************************************
BIT7~BIT6 SM1~SM0 (串口的工作方式选择:00B 为同步8位工作方式0
01B 为定波特绿
10B 为
11B 为)
BTT5 SM2 (多机通信控制位,仅在工作方式2和3有效)
BIT4 REN (允许接收控制位)
BIT3 TB8 (发送数据位8,多机通信中,0代表当前发送内容是数据,1代表地址)
BIT2 RB8 (接收数据位8,存放接收到的第9位数据)
BIT1 TI (发送中断标志位,1有效,需软件清0)
BIT0 RI (发送中断标志位,1有效,需软件清0)
*************************************************************************/
sfr IE = 0xA8;//中断使能 (控制) 寄存器 (可位寻址)
/************************************************************************
BIT7 EA (全局中断使能控制位,1有效)
BIT6 ---
BIT5 ET2 (定时器2中断使能控制位,1有效)
BIT4 ES (串口中断使能控制位,1有效)
BIT3 ET1 (定时计数器1中断使能控制位,1有效)
BIT2 EX1 (外部中断1中断使能控制位,1有效)
BIT1 ET0 (定时计数器0中断使能控制位,1有效)
BIT0 EX0 (外部中断0中断使能控制位,1有效)
*************************************************************************/
sfr IP = 0xB8;//中断优先级 (控制) 寄存器 (可位寻址)
/************************************************************************
BIT7 ---
BIT6 ---
BIT5 PT2 (为1时T2中断设置为高优先级)
BIT4 PS (为1时串口中断设置为高优先级)
BIT3 PT1 (为1时T1中断设置为高优先级)
BIT2 PX1 (为1时外部中断1设置为高优先级)
BIT1 PT0 (为1时T0中断设置为高优先级)
BIT0 PX0 (为1时外部中断0设置为高优先级)
*************************************************************************/
sfr TCON = 0x88;//T1,T0及INT1,INT0 (控制及标志) 寄存器 (可位寻址)
/************************************************************************
BIT7 TF1 (定时计数器1中断标志位,1有效,硬件自动清0)
BIT6 TR1 (定时计数器1启动控制位,1有效)
BIT5 TF0 (定时计数器0中断标志位,1有效,硬件自动清0)
BIT4 TR0 (定时计数器0启动控制位,1有效)
BIT3 IE1 (外部中断1中断标志位,1有效,硬件自动清0)
BIT2 IT1 (外部中断1引起中断的方式: 0为低电平触发,1为下降沿触发)
BIT1 IE0 (外部中断0中断标志位,1有效,硬件自动清0)
BIT0 IT0 (外部中断0引起中断的方式: 0为低电平触发,1为下降沿触发)
*************************************************************************/
sfr TMOD = 0x89;//T1,T0 (控制及标志) 寄存器 (不可位寻址)
/************************************************************************
BIT7 GATE1 (T1启动是否与"/INT1"引脚相关)
BIT6 C/T1 (0时T1为定时,1时TI为计数)
BIT5~BIT4 T1M1~T1M0 (T1的工作模式)
BIT3 GATE1 (T0启动是否与"/INT0"引脚相关)
BIT2 C/T1 (0时T0为定时,1时T0为计数)
BIT1~BIT0 T0M1~T0M0 (T0的工作模式)
*************************************************************************/
sfr PCON = 0x87;//电源 (控制) 寄存器 (不可位寻址)
/************************************************************************
BIT7 SMOD (为串行口波特率倍率控制位,用于串行通信)
//=====以下仅STC89系列和AT89S5X系列有效
BIT6 SMOD0
BIT5 ---
BIT4 POF (上电复位标志位: 1则表明该复位为上电复位,可由软件清0
0则表明该复位为外部手动复位或看门狗复位)
BIT3~BIT2 GF1~GF0 (通用标志位,描述中断是来自正常运行还是来自空
闲方式,用户可通过指令设定它们的状态)
BIT1 PD (为1时,进入掉电模式,外部时钟停振,CPU,定时器,
串口全部停止工作,仅由外部中断唤醒)
BIT0 IDL (为1时,进入空闲模式,CPU不工作,可欲任何一个中断唤醒)
*************************************************************************/
// Ports
sfr P0 = 0x80;//端口0(可位寻址)
sfr P1 = 0x90;//端口1(可位寻址)
sfr P2 = 0xA0;//端口2(可位寻址)
sfr P3 = 0xB0;//端口3(可位寻址)
// Timer2
sfr T2CON = 0xC8;//定时器2的 (控制标志) 寄存器 (可位寻址)
/************************************************************************
BIT7 TF2 (定时计数器2中断标志位,1有效,必须由软件清0,
当该定时器作为波特率时不置该标志位)
BIT6 EXF2 (定时计数器2外部中断标志位,1有效,必须软件清0,
当EXEN2为1且T2EX引脚负跳变产生捕获或重装时引
起该中断标志位置1,在递增/递减模式即T2MOD中的
DCEN = 1时及,EXF2为1不会引起中断)
BIT5 RCLK (为1时定时计数器2溢出脉冲作为串口接收波特率)
BIT4 TCLK (为1时定时计数器2溢出脉冲作为串口发送波特率)
BIT3 EXEN2 (定时计数器2外部中断使能控制位,
当该位为1且RCLK和TCLK同时为0时有效)
BIT2 TR2 (定时计数器2启动控制位,1有效)
BIT1 C/T2 (定时计数器2工作方式选择控制位: 0时为内部定时器
1时为外部事件计数器)
BIT0 CP/RL2 (捕获还是重装选择控制位:仅RCLK和TCLK同时为0时有效,
为0时且EXEN2=0,定时计数器2的溢出和T2EX引脚的负跳变
都能使TH2和TL2重装;为1时且EXEN2=1,T2EX引脚负跳变产生
捕获,TH2和TL2清0)
*************************************************************************/
sfr T2MOD = 0xC9;//定时计数器2模式控制寄存器 (不可位寻址)
/************************************************************************
BIT7 --- 0
BIT6 --- 0
BIT5 --- 0
BIT4 --- 0
BIT3 --- 0
BIT2 --- 0
BIT1 T2OE (定时计数器2中断T2输出使能控制位,1有效)
BIT0 PX0 (向下计数使能位,为1时定时计数器2倒计数)
*************************************************************************/
sfr RCAP2H = 0xCB;//定时计数器2再装入缓冲区高字节 (不可位寻址)
sfr RCAP2L = 0xCA;//定时计数器2再装入缓冲区低字节 (不可位寻址)
sfr TH2 = 0xCD;//定时计数器2高字节 (不可位寻址)
sfr TL2 = 0xCC;//定时计数器2低字节 (不可位寻址)
// BIT Registers
// Port0
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;
// Port1
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 T2_EX = P1^1;
sbit T2 = P1^0;
// Port2
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;
// Port3
sbit RD = P3^7;
sbit WR = P3^6;
sbit T1 = P3^5;
sbit T0 = P3^4;
sbit INT1 = P3^3;
sbit INT0 = P3^2;
sbit TXD = P3^1;
sbit RXD = P3^0;
// PSW
sbit CY = PSW^7;
sbit AC = PSW^6;
sbit F0 = PSW^5;
sbit RS1 = PSW^4;
sbit RS0 = PSW^3;
sbit OV = PSW^2;
sbit F1 = PSW^1;
sbit P = PSW^0;
// SCON
sbit SM0 = SCON^7;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -