#ifndef __STC8F_H_ #define __STC8F_H_ ///////////////////////////////////////////////// //包含本头文件后,不用另外再包含"REG51.H" //内核特殊功能寄存器 sfr ACC = 0xe0; sfr B = 0xf0; sfr PSW = 0xd0; 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; sfr SP = 0x81; sfr DPL = 0x82; sfr DPH = 0x83; sfr TA = 0xae; sfr DPS = 0xe3; sfr DPL1 = 0xe4; sfr DPH1 = 0xe5; //I/O 口特殊功能寄存器 sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xa0; sfr P3 = 0xb0; sfr P4 = 0xc0; sfr P5 = 0xc8; sfr P6 = 0xe8; sfr P7 = 0xf8; sfr P0M0 = 0x94; sfr P0M1 = 0x93; sfr P1M0 = 0x92; sfr P1M1 = 0x91; sfr P2M0 = 0x96; sfr P2M1 = 0x95; sfr P3M0 = 0xb2; sfr P3M1 = 0xb1; sfr P4M0 = 0xb4; sfr P4M1 = 0xb3; sfr P5M0 = 0xca; sfr P5M1 = 0xc9; sfr P6M0 = 0xcc; sfr P6M1 = 0xcb; sfr P7M0 = 0xe2; sfr P7M1 = 0xe1; sbit P00 = P0^0; sbit P01 = P0^1; sbit P02 = P0^2; sbit P03 = P0^3; sbit P04 = P0^4; sbit P05 = P0^5; sbit P06 = P0^6; sbit P07 = P0^7; sbit P10 = P1^0; sbit P11 = P1^1; sbit P12 = P1^2; sbit P13 = P1^3; sbit P14 = P1^4; sbit P15 = P1^5; sbit P16 = P1^6; sbit P17 = P1^7; sbit P20 = P2^0; sbit P21 = P2^1; sbit P22 = P2^2; sbit P23 = P2^3; sbit P24 = P2^4; sbit P25 = P2^5; sbit P26 = P2^6; sbit P27 = P2^7; sbit P30 = P3^0; sbit P31 = P3^1; sbit P32 = P3^2; sbit P33 = P3^3; sbit P34 = P3^4; sbit P35 = P3^5; sbit P36 = P3^6; sbit P37 = P3^7; sbit P40 = P4^0; sbit P41 = P4^1; sbit P42 = P4^2; sbit P43 = P4^3; sbit P44 = P4^4; sbit P45 = P4^5; sbit P46 = P4^6; sbit P47 = P4^7; sbit P50 = P5^0; sbit P51 = P5^1; sbit P52 = P5^2; sbit P53 = P5^3; sbit P54 = P5^4; sbit P55 = P5^5; sbit P56 = P5^6; sbit P57 = P5^7; sbit P60 = P6^0; sbit P61 = P6^1; sbit P62 = P6^2; sbit P63 = P6^3; sbit P64 = P6^4; sbit P65 = P6^5; sbit P66 = P6^6; sbit P67 = P6^7; sbit P70 = P7^0; sbit P71 = P7^1; sbit P72 = P7^2; sbit P73 = P7^3; sbit P74 = P7^4; sbit P75 = P7^5; sbit P76 = P7^6; sbit P77 = P7^7; //如下特殊功能寄存器位于扩展RAM区域 //访问这些寄存器,需先将P_SW2的BIT7设置为1,才可正常读写 #define P0PU (*(unsigned char volatile xdata *)0xfe10) #define P1PU (*(unsigned char volatile xdata *)0xfe11) #define P2PU (*(unsigned char volatile xdata *)0xfe12) #define P3PU (*(unsigned char volatile xdata *)0xfe13) #define P4PU (*(unsigned char volatile xdata *)0xfe14) #define P5PU (*(unsigned char volatile xdata *)0xfe15) #define P6PU (*(unsigned char volatile xdata *)0xfe16) #define P7PU (*(unsigned char volatile xdata *)0xfe17) #define P0NCS (*(unsigned char volatile xdata *)0xfe18) #define P1NCS (*(unsigned char volatile xdata *)0xfe19) #define P2NCS (*(unsigned char volatile xdata *)0xfe1a) #define P3NCS (*(unsigned char volatile xdata *)0xfe1b) #define P4NCS (*(unsigned char volatile xdata *)0xfe1c) #define P5NCS (*(unsigned char volatile xdata *)0xfe1d) #define P6NCS (*(unsigned char volatile xdata *)0xfe1e) #define P7NCS (*(unsigned char volatile xdata *)0xfe1f) //系统管理特殊功能寄存器 sfr PCON = 0x87; #define SMOD 0x80 #define SMOD0 0x40 #define LVDF 0x20 #define POF 0x10 #define GF1 0x08 #define GF0 0x04 #define PD 0x02 #define IDL 0x01 sfr AUXR = 0x8e; #define T0x12 0x80 #define T1x12 0x40 #define UART_M0x6 0x20 #define T2R 0x10 #define T2_CT 0x08 #define T2x12 0x04 #define EXTRAM 0x02 #define S1ST2 0x01 sfr AUXR2 = 0x97; #define TXLNRX 0x10 sfr BUS_SPEED = 0xa1; sfr P_SW1 = 0xa2; sfr P_SW2 = 0xba; #define EAXFR 0x80 sfr VOCTRL = 0xbb; sfr RSTCFG = 0xff; //如下特殊功能寄存器位于扩展RAM区域 //访问这些寄存器,需先将P_SW2的BIT7设置为1,才可正常读写 #define CKSEL (*(unsigned char volatile xdata *)0xfe00) #define CLKDIV (*(unsigned char volatile xdata *)0xfe01) #define IRC24MCR (*(unsigned char volatile xdata *)0xfe02) #define XOSCCR (*(unsigned char volatile xdata *)0xfe03) #define IRC32KCR (*(unsigned char volatile xdata *)0xfe04) //中断特殊功能寄存器 sfr IE = 0xa8; sbit EA = IE^7; sbit ELVD = IE^6; sbit EADC = IE^5; sbit ES = IE^4; sbit ET1 = IE^3; sbit EX1 = IE^2; sbit ET0 = IE^1; sbit EX0 = IE^0; sfr IE2 = 0xaf; #define ET4 0x40 #define ET3 0x20 #define ES4 0x10 #define ES3 0x08 #define ET2 0x04 #define ESPI 0x02 #define ES2 0x01 sfr IP = 0xb8; sbit PPCA = IP^7; sbit PLVD = IP^6; sbit PADC = IP^5; sbit PS = IP^4; sbit PT1 = IP^3; sbit PX1 = IP^2; sbit PT0 = IP^1; sbit PX0 = IP^0; sfr IP2 = 0xb5; #define PI2C 0x40 #define PCMP 0x20 #define PX4 0x10 #define PPWMFD 0x08 #define PPWM 0x04 #define PSPI 0x02 #define PS2 0x01 sfr IPH = 0xb7; #define PPCAH 0x80 #define PLVDH 0x40 #define PADCH 0x20 #define PSH 0x10 #define PT1H 0x08 #define PX1H 0x04 #define PT0H 0x02 #define PX0H 0x01 sfr IP2H = 0xb6; #define PI2CH 0x40 #define PCMPH 0x20 #define PX4H 0x10 #define PPWMFDH 0x08 #define PPWMH 0x04 #define PSPIH 0x02 #define PS2H 0x01 sfr INTCLKO = 0x8f; #define EX4 0x40 #define EX3 0x20 #define EX2 0x10 #define T2CLKO 0x04 #define T1CLKO 0x02 #define T0CLKO 0x01 sfr AUXINTIF = 0xef; #define INT4IF 0x40 #define INT3IF 0x20 #define INT2IF 0x10 #define T4IF 0x04 #define T3IF 0x02 #define T2IF 0x01 //定时器特殊功能寄存器 sfr TCON = 0x88; sbit TF1 = TCON^7; sbit TR1 = TCON^6; sbit TF0 = TCON^5; sbit TR0 = TCON^4; sbit IE1 = TCON^3; sbit IT1 = TCON^2; sbit IE0 = TCON^1; sbit IT0 = TCON^0; sfr TMOD = 0x89; #define T1_GATE 0x80 #define T1_CT 0x40 #define T1_M1 0x20 #define T1_M0 0x10 #define T0_GATE 0x08 #define T0_CT 0x04 #define T0_M1 0x02 #define T0_M0 0x01 sfr TL0 = 0x8a; sfr TL1 = 0x8b; sfr TH0 = 0x8c; sfr TH1 = 0x8d; sfr T4T3M = 0xd1; #define T4R 0x80 #define T4_CT 0x40 #define T4x12 0x20 #define T4CLKO 0x10 #define T3R 0x08 #define T3_CT 0x04 #define T3x12 0x02 #define T3CLKO 0x01 sfr T4H = 0xd2; sfr T4L = 0xd3; sfr T3H = 0xd4; sfr T3L = 0xd5; sfr T2H = 0xd6; sfr T2L = 0xd7; sfr TH4 = 0xd2; sfr TL4 = 0xd3; sfr TH3 = 0xd4; sfr TL3 = 0xd5; sfr TH2 = 0xd6; sfr TL2 = 0xd7; sfr WKTCL = 0xaa; sfr WKTCH = 0xab; #define WKTEN 0x80 sfr WDT_CONTR = 0xc1; #define WDT_FLAG 0x80 #define EN_WDT 0x20 #define CLR_WDT 0x10 #define IDL_WDT 0x08 //串行口特殊功能寄存器 sfr SCON = 0x98; 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; sfr SBUF = 0x99; sfr S2CON = 0x9a; #define S2SM0 0x80 #define S2ST4 0x40 #define S2SM2 0x20 #define S2REN 0x10 #define S2TB8 0x08 #define S2RB8 0x04 #define S2TI 0x02 #define S2RI 0x01 sfr S2BUF = 0x9b; sfr S3CON = 0xac; #define S3SM0 0x80 #define S3ST4 0x40 #define S3SM2 0x20 #define S3REN 0x10 #define S3TB8 0x08 #define S3RB8 0x04 #define S3TI 0x02 #define S3RI 0x01 sfr S3BUF = 0xad; sfr S4CON = 0x84; #define S4SM0 0x80 #define S4ST4 0x40 #define S4SM2 0x20 #define S4REN 0x10 #define S4TB8 0x08 #define S4RB8 0x04 #define S4TI 0x02 #define S4RI 0x01 sfr S4BUF = 0x85; sfr SADDR = 0xa9; sfr SADEN = 0xb9; //ADC 特殊功能寄存器 sfr ADC_CONTR = 0xbc; #define ADC_POWER 0x80 #define ADC_START 0x40 #define ADC_FLAG 0x20 sfr ADC_RES = 0xbd; sfr ADC_RESL = 0xbe; sfr ADCCFG = 0xde; #define ADC_RESFMT 0x20 //SPI 特殊功能寄存器 sfr SPSTAT = 0xcd; #define SPIF 0x80 #define WCOL 0x40 sfr SPCTL = 0xce; #define SSIG 0x80 #define SPEN 0x40 #define DORD 0x20 #define MSTR 0x10 #define CPOL 0x08 #define CPHA 0x04 sfr SPDAT = 0xcf; //IAP/ISP 特殊功能寄存器 sfr IAP_DATA = 0xc2; sfr IAP_ADDRH = 0xc3; sfr IAP_ADDRL = 0xc4; sfr IAP_CMD = 0xc5; #define IAP_IDL 0x00 #define IAP_READ 0x01 #define IAP_WRITE 0x02 #define IAP_ERASE 0x03 sfr IAP_TRIG = 0xc6; sfr IAP_CONTR = 0xc7; #define IAPEN 0x80 #define SWBS 0x40 #define SWRST 0x20 #define CMD_FAIL 0x10 sfr ISP_DATA = 0xc2; sfr ISP_ADDRH = 0xc3; sfr ISP_ADDRL = 0xc4; sfr ISP_CMD = 0xc5; sfr ISP_TRIG = 0xc6; sfr ISP_CONTR = 0xc7; //比较器特殊功能寄存器 sfr CMPCR1 = 0xe6; #define CMPEN 0x80 #define CMPIF 0x40 #define PIE 0x20 #define NIE 0x10 #define PIS 0x08 #define NIS 0x04 #define CMPOE 0x02 #define CMPRES 0x01 sfr CMPCR2 = 0xe7; #define INVCMPO 0x80 #define DISFLT 0x40 //PCA/PWM 特殊功能寄存器 sfr CCON = 0xd8; sbit CF = CCON^7; sbit CR = CCON^6; sbit CCF3 = CCON^3; sbit CCF2 = CCON^2; sbit CCF1 = CCON^1; sbit CCF0 = CCON^0; sfr CMOD = 0xd9; #define CIDL 0x80 #define ECF 0x01 sfr CL = 0xe9; sfr CH = 0xf9; sfr CCAPM0 = 0xda; #define ECOM0 0x40 #define CCAPP0 0x20 #define CCAPN0 0x10 #define MAT0 0x08 #define TOG0 0x04 #define PWM0 0x02 #define ECCF0 0x01 sfr CCAPM1 = 0xdb; #define ECOM1 0x40 #define CCAPP1 0x20 #define CCAPN1 0x10 #define MAT1 0x08 #define TOG1 0x04 #define PWM1 0x02 #define ECCF1 0x01 sfr CCAPM2 = 0xdc; #define ECOM2 0x40 #define CCAPP2 0x20 #define CCAPN2 0x10 #define MAT2 0x08 #define TOG2 0x04 #define PWM2 0x02 #define ECCF2 0x01 sfr CCAPM3 = 0xdd; #define ECOM3 0x40 #define CCAPP3 0x20 #define CCAPN3 0x10 #define MAT3 0x08 #define TOG3 0x04 #define PWM3 0x02 #define ECCF3 0x01 sfr CCAP0L = 0xea; sfr CCAP1L = 0xeb; sfr CCAP2L = 0xec; sfr CCAP3L = 0xed; sfr CCAP0H = 0xfa; sfr CCAP1H = 0xfb; sfr CCAP2H = 0xfc; sfr CCAP3H = 0xfd; sfr PCA_PWM0 = 0xf2; sfr PCA_PWM1 = 0xf3; sfr PCA_PWM2 = 0xf4; sfr PCA_PWM3 = 0xf5; //增强型PWM波形发生器特殊功能寄存器 sfr PWMCFG = 0xf1; #define CBIF 0x80 #define ETADC 0x40 sfr PWMIF = 0xf6; #define C7IF 0x80 #define C6IF 0x40 #define C5IF 0x20 #define C4IF 0x10 #define C3IF 0x08 #define C2IF 0x04 #define C1IF 0x02 #define C0IF 0x01 sfr PWMFDCR = 0xf7; #define INVCMP 0x80 #define INVIO 0x40 #define ENFD 0x20 #define FLTFLIO 0x10 #define EFDI 0x08 #define FDCMP 0x04 #define FDIO 0x02 #define FDIF 0x01 sfr PWMCR = 0xfe; #define ENPWM 0x80 #define ECBI 0x40 //如下特殊功能寄存器位于扩展RAM区域 //访问这些寄存器,需先将P_SW2的BIT7设置为1,才可正常读写 #define PWMC (*(unsigned int volatile xdata *)0xfff0) #define PWMCH (*(unsigned char volatile xdata *)0xfff0) #define PWMCL (*(unsigned char volatile xdata *)0xfff1) #define PWMCKS (*(unsigned char volatile xdata *)0xfff2) #define TADCP (*(unsigned char volatile xdata *)0xfff3) #define TADCPH (*(unsigned char volatile xdata *)0xfff3) #define TADCPL (*(unsigned char volatile xdata *)0xfff4) #define PWM0T1 (*(unsigned int volatile xdata *)0xff00) #define PWM0T1H (*(unsigned char volatile xdata *)0xff00) #define PWM0T1L (*(unsigned char volatile xdata *)0xff01) #define PWM0T2 (*(unsigned int volatile xdata *)0xff02) #define PWM0T2H (*(unsigned char volatile xdata *)0xff02) #define PWM0T2L (*(unsigned char volatile xdata *)0xff03) #define PWM0CR (*(unsigned char volatile xdata *)0xff04) #define PWM0HLD (*(unsigned char volatile xdata *)0xff05) #define PWM1T1 (*(unsigned int volatile xdata *)0xff10) #define PWM1T1H (*(unsigned char volatile xdata *)0xff10) #define PWM1T1L (*(unsigned char volatile xdata *)0xff11) #define PWM1T2 (*(unsigned int volatile xdata *)0xff12) #define PWM1T2H (*(unsigned char volatile xdata *)0xff12) #define PWM1T2L (*(unsigned char volatile xdata *)0xff13) #define PWM1CR (*(unsigned char volatile xdata *)0xff14) #define PWM1HLD (*(unsigned char volatile xdata *)0xff15) #define PWM2T1 (*(unsigned int volatile xdata *)0xff20) #define PWM2T1H (*(unsigned char volatile xdata *)0xff20) #define PWM2T1L (*(unsigned char volatile xdata *)0xff21) #define PWM2T2 (*(unsigned int volatile xdata *)0xff22) #define PWM2T2H (*(unsigned char volatile xdata *)0xff22) #define PWM2T2L (*(unsigned char volatile xdata *)0xff23) #define PWM2CR (*(unsigned char volatile xdata *)0xff24) #define PWM2HLD (*(unsigned char volatile xdata *)0xff25) #define PWM3T1 (*(unsigned int volatile xdata *)0xff30) #define PWM3T1H (*(unsigned char volatile xdata *)0xff30) #define PWM3T1L (*(unsigned char volatile xdata *)0xff31) #define PWM3T2 (*(unsigned int volatile xdata *)0xff32) #define PWM3T2H (*(unsigned char volatile xdata *)0xff32) #define PWM3T2L (*(unsigned char volatile xdata *)0xff33) #define PWM3CR (*(unsigned char volatile xdata *)0xff34) #define PWM3HLD (*(unsigned char volatile xdata *)0xff35) #define PWM4T1 (*(unsigned int volatile xdata *)0xff40) #define PWM4T1H (*(unsigned char volatile xdata *)0xff40) #define PWM4T1L (*(unsigned char volatile xdata *)0xff41) #define PWM4T2 (*(unsigned int volatile xdata *)0xff42) #define PWM4T2H (*(unsigned char volatile xdata *)0xff42) #define PWM4T2L (*(unsigned char volatile xdata *)0xff43) #define PWM4CR (*(unsigned char volatile xdata *)0xff44) #define PWM4HLD (*(unsigned char volatile xdata *)0xff45) #define PWM5T1 (*(unsigned int volatile xdata *)0xff50) #define PWM5T1H (*(unsigned char volatile xdata *)0xff50) #define PWM5T1L (*(unsigned char volatile xdata *)0xff51) #define PWM5T2 (*(unsigned int volatile xdata *)0xff52) #define PWM5T2H (*(unsigned char volatile xdata *)0xff52) #define PWM5T2L (*(unsigned char volatile xdata *)0xff53) #define PWM5CR (*(unsigned char volatile xdata *)0xff54) #define PWM5HLD (*(unsigned char volatile xdata *)0xff55) #define PWM6T1 (*(unsigned int volatile xdata *)0xff60) #define PWM6T1H (*(unsigned char volatile xdata *)0xff60) #define PWM6T1L (*(unsigned char volatile xdata *)0xff61) #define PWM6T2 (*(unsigned int volatile xdata *)0xff62) #define PWM6T2H (*(unsigned char volatile xdata *)0xff62) #define PWM6T2L (*(unsigned char volatile xdata *)0xff63) #define PWM6CR (*(unsigned char volatile xdata *)0xff64) #define PWM6HLD (*(unsigned char volatile xdata *)0xff65) #define PWM7T1 (*(unsigned int volatile xdata *)0xff70) #define PWM7T1H (*(unsigned char volatile xdata *)0xff70) #define PWM7T1L (*(unsigned char volatile xdata *)0xff71) #define PWM7T2 (*(unsigned int volatile xdata *)0xff72) #define PWM7T2H (*(unsigned char volatile xdata *)0xff72) #define PWM7T2L (*(unsigned char volatile xdata *)0xff73) #define PWM7CR (*(unsigned char volatile xdata *)0xff74) #define PWM7HLD (*(unsigned char volatile xdata *)0xff75) //I2C特殊功能寄存器 //如下特殊功能寄存器位于扩展RAM区域 //访问这些寄存器,需先将P_SW2的BIT7设置为1,才可正常读写 #define I2CCFG (*(unsigned char volatile xdata *)0xfe80) #define ENI2C 0x80 #define MSSL 0x40 #define I2CMSCR (*(unsigned char volatile xdata *)0xfe81) #define EMSI 0x80 #define I2CMSST (*(unsigned char volatile xdata *)0xfe82) #define MSBUSY 0x80 #define MSIF 0x40 #define MSACKI 0x02 #define MSACKO 0x01 #define I2CSLCR (*(unsigned char volatile xdata *)0xfe83) #define ESTAI 0x40 #define ERXI 0x20 #define ETXI 0x10 #define ESTOI 0x08 #define SLRST 0x01 #define I2CSLST (*(unsigned char volatile xdata *)0xfe84) #define SLBUSY 0x80 #define STAIF 0x40 #define RXIF 0x20 #define TXIF 0x10 #define STOIF 0x08 #define TXING 0x04 #define SLACKI 0x02 #define SLACKO 0x01 #define I2CSLADR (*(unsigned char volatile xdata *)0xfe85) #define I2CTXD (*(unsigned char volatile xdata *)0xfe86) #define I2CRXD (*(unsigned char volatile xdata *)0xfe87) ///////////////////////////////////////////////// #endif