📄 reg51x.h
字号:
/*--------------------------------------------------------------------------
REG52.H
Header file for generic 80C52 and 80C32 microcontroller.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/
/*hxc last change time 2006.x.x x:x*/
/*hxc last check time 2006.4.14 16:46*/
#ifndef __REG51X_H__
#define __REG51X_H__
#define debug 1
#define w78e65 0
/* BYTE Registers */
sfr B = 0xF0;
sfr SP = 0x81;
sfr DPL = 0x82;
sfr DPH = 0x83;
sfr TL0 = 0x8A;
sfr TL1 = 0x8B;
sfr TH0 = 0x8C;
sfr TH1 = 0x8D;
sfr SBUF = 0x99;
/* 8052 Extensions */
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2 = 0xCC;
sfr TH2 = 0xCD;
sfr PSW = 0xD0;/* 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 P = PSW^0; //8052 only
sfr ACC = 0xE0;
sbit a0=ACC^0; //定义ACC的位,利用ACC操作速度最快
sbit a1=ACC^1;
sbit a2=ACC^2;
sbit a3=ACC^3;
sbit a4=ACC^4;
sbit a5=ACC^5;
sbit a6=ACC^6;
sbit a7=ACC^7;
sfr T2CON = 0xC8; /* T2CON */
sbit TF2 = T2CON^7; //TIME2 overflow flag
sbit EXF2 = T2CON^6; //TIME2 external overflow flag,EXEN2=1 T2EX PIN 负跳变引起captur/auto reload ,EXF2=1;
sbit RCLK = T2CON^5; //tirme2 '1'/time1 '0' receive clock in serial port
sbit TCLK = T2CON^4;//tirme2 '1'/time1 '0' Transmit clock in serial port
sbit EXEN2 = T2CON^3; //Timer 2 external enable.'0' ignore events atT2EX.'1'tirme2 work at capture/auto reload mode
sbit TR2 = T2CON^2; //TIME2 RUN CONNTROL
sbit C_T2 = T2CON^1; //timer '0' or count '1' mode
sbit CP_RL2 = T2CON^0; //'1':AND EXEN2=1 T2EX PIN 负跳变将计时值TH2->RCAP2H;TL2->RCAP2L,capture
//'0':AND EXEN2=1 T2EX PIN 负跳变or time2 overflow ,RCAP2H->TH2;RCAP2L->TL2 AUTO reload
#define TIME2TIMER 0X00 //TIME2 work at 16 bit auto reload mode,overflow ,RCAP2H->TH2;RCAP2L->TL2 ,only set TR2=1 RUN TIME2
#define TIME2COUNT 0X02 //TIME2 work at 16 bit count mode
sfr TCON = 0x88;/* TCON */
sbit TF1 = TCON^7; //TIME0 overflow flag
sbit TR1 = TCON^6; //TIME1 RUN CONNTROL
sbit TF0 = TCON^5; //TIME0 overflow flag
sbit TR0 = TCON^4; //TIME1 RUN CONNTROL
sbit IE1 = TCON^3; //EXT1 interput flag
sbit IT1 = TCON^2; //interput1 下降缘1或low电平0
sbit IE0 = TCON^1; //EXT0 interput flag
sbit IT0 = TCON^0; //interput0 下降缘1或low电平0
sfr TMOD = 0x89;
#define TIME0MODE0 0x00 //TMOD time
#define TIME0MODE1 0x01
#define TIME0MODE2 0x02
#define TIME0MODE3 0x03
#define TIME0COUNT 0x04 //计数方式
#define TIME0GATE 0x08 //起动time0要int0 pin为1
#define TIME1MODE0 0x00
#define TIME1MODE1 0x10
#define TIME1MODE2 0x20
#define TIME1MODE3 0x30
#define TIME1COUNT 0x40
#define TIME1GATE 0x80 //起动time1要int1 pin为1
sfr SCON = 0x98; //SCON uart control
sbit SM0 = SCON^7;
sbit SM1 = SCON^6;
sbit SM2 = SCON^5;
sbit REN = SCON^4;
sbit TB8 = SCON^3;
sbit RB8 = SCON^2;
sbit TI = SCON^1;
sbit RI = SCON^0;
#define UARTSM2 0X20 //mode0 sm2=0;mode1 sm2=1 receiver 有效停止位时,才置RI;
//mode2.3 SM2=1 only receiver addr,sm2=0 receiver data
#define UARTMODE0 0X00 //UART work at mode0 同步移位 固定fosc/12
#define UARTMODE1 0X40 //UART work at mode1 10异步 (2^SMOD)/32 * [(fosc/12)*(256-TH1)]
#define UARTMODE2 0X80 //UART work at mode2 11异步 fosc/64 or fosc/32(PCON.SMOD=1)
#define UARTMODE3 0XC0 //UART work at mode3 11异步 (2^SMOD)/32 * [(fosc/12)*(256-TH1)]
#define UARTREN 0X10 //REN=1 allow receiver REN=0 no allow receiver
#define UARTTB8 0X08 //transmission addr(TB8=1) or data(TB8=0) bit at mode2.3 or自定义位
#define UARTRB8 0X04 //receiver addr(RB8=1) or data(RB8=0) OR 自定义位 SM2=0 reseiver sotp bit
#define UARTTI 0X02 //transmission interrupt 标志
#define UARTRI 0X01 //reseiver interrupt 标志
sfr PCON = 0x87;
#define SMOD 0x80 //PCON POWER CONTROL
#define PD 0x02
#define IDL 0x01
sfr IE = 0xA8; /* IE */
sbit EA = IE^7;
sbit ET2 = IE^5; //time2 int enble 8052 only
sbit ES = IE^4;
sbit ET1 = IE^3;
sbit EX1 = IE^2;
sbit ET0 = IE^1;
sbit EX0 = IE^0;
#define INTERRUPT0 0x01 //IE interrpt IP 优先级
#define TIME0 0x02
#define INTERRUPT1 0x04
#define TIME1 0x08
#define SERIAL 0x10
#define TIME2 0X20
#define ENALL 0X80
sfr IP = 0xB8;/* IP */
sbit PT2 = IP^5;
sbit PS = IP^4;
sbit PT1 = IP^3;
sbit PX1 = IP^2;
sbit PT0 = IP^1;
sbit PX0 = IP^0;
sfr P3 = 0xB0; /* P3 */
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;
sbit P37 = P3^7;
sbit P36 = P3^6;
sbit P35 = P3^5;
sbit P34 = P3^4;
sbit P33 = P3^3;
sbit P32 = P3^2;
sbit P31 = P3^1;
sbit P30 = P3^0;
sfr P2 = 0xA0; //P2
sbit P27 = P2^7;
sbit P26 = P2^6;
sbit P25 = P2^5;
sbit P24 = P2^4;
sbit P23 = P2^3;
sbit P22 = P2^2;
sbit P21 = P2^1;
sbit P20 = P2^0;
sfr P1 = 0x90; //P1
sbit P17 = P1^7;
sbit P16 = P1^6;
sbit P15 = P1^5;
sbit P14 = P1^4;
sbit P13 = P1^3;
sbit P12 = P1^2;
sbit P11 = P1^1;
sbit P10 = P1^0;
/* P1 */
sbit T2EX = P1^1; // 8052 only
sbit T2 = P1^0; // 8052 only
sfr P0 = 0x80; //P0
sbit P07 = P0^7;
sbit P06 = P0^6;
sbit P05 = P0^5;
sbit P04 = P0^4;
sbit P03 = P0^3;
sbit P02 = P0^2;
sbit P01 = P0^1;
sbit P00 = P0^0;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -