////////////////////////////////////////////////////////////////////////// /// COPYRIGHT NOTICE /// Copyright (c) 2022, 传控科技 /// All rights reserved. /// /// @file __STC_ONLY_H_ /// @brief macro define 和cpu相关,STC独有的 使用stc系列单片机是使用 /// ///(本文件实现的功能的详述) /// /// @version 1.0 CCsens technology /// @author CC /// @date 20211226 // ////////////////////////////////////////////////////////////////////////// #ifndef __STC_ONLY_H_ #define __STC_ONLY_H_ #include #define ET3 0x20 #define T3IF 0x02 ///#define ES2 0x01 ///#define ES3 0x08 #define S2TI 0x02 #define S2RI 0x01 #define S3TI 0x02 #define S3RI 0x01 #define ET4 0x40 ///#define I2CTXD (*(unsigned char volatile xdata *)0xfE86)//423@ST8.PDF ///#define I2CRXD (*(unsigned char volatile xdata *)0xfE87)//423@ST8.PDF ///------------------------------------- #define gRccUs01_H (*(unsigned char volatile data *)0xd2) #define gRccUs01_L (*(unsigned char volatile data *)0xd3) #define gRccUs01 (*(unsigned short volatile data *)0xd2)//226@ST8.PDF T4H定时器4的高字节 D2H T4H定时器4的低字节 D3H #define gRccUs02 (*(unsigned short volatile data *)0xEA)//351@ST8.PDF CCAP0l CCAP1L EAH EBH #define gRccUs03 (*(unsigned short volatile data *)0xEC)//351@ST8.PDF CCAP0l CCAP1L EAH EBH //#define gRccUs03 s_task_GC032A.n #define gRccUs04 (*(unsigned short volatile data *)0xFA)///351@ST8.PDF #define gRccUs05 (*(unsigned short volatile data *)0xFC)///351@ST8.PD CCAP2H ///////////////////////////////////////////////// #ifdef docasdfasdf 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 IE2 AFH EUSB ET4 ET3 ES4 ES3 ET2 ESPI ES2 EUSB∶USB中断允许位。 0∶禁止 USB中断1∶允许 USB中断 ET4∶定时/计数器T4的溢出中断允许位。 0∶禁止 T4中断1∶允许T4中断 ET3∶定时/计数器 T3的溢出中断允许位。 0∶禁止 T3中断1∶允许T3中断 ES4∶串行口4中断允许位。 0∶禁止串行口4中断1∶允许串行口 4中断ES3∶串行口3中断允许位。 0∶禁止串行口3中断1∶允许串行口3中断 ET2∶定时/计数器 T2的溢出中断允许位。 0∶禁止T2中断1∶允许T3中断ESPI∶SPI中断允许位。 0∶禁止 SPI中断1∶允许 SPI中断 ES2∶串行口 2中断允许位。 0∶禁止串行口2中断1∶允许串行口2中断 #endif #define ES4 BITN4 #define ES3 BITN3 #define ES2 BITN0 /* P3 */ sbit RD = 0xB7; sbit WR = 0xB6; sbit T1 = 0xB5; sbit T0 = 0xB4; sbit INT1 = 0xB3; sbit INT0 = 0xB2; sbit TXD = 0xB1; sbit RXD = 0xB0; ///sfr AUXINTIF = 0xef; #define T2IF 0x01 #define INT4IF BITN6 #define INT3IF BITN5 #define INT2IF BITN4 //#define T4IF BITN2 //#define T3IF BITN1 //#define T2IF BITN0 /// >>>>> add by cc #include "../clib/bit.h" #define D_stdIO_P0_ALL() P0M1=0;P0M0=0; #define D_HighI_P0_ALL() P0M1=0;P0M0=0XFF; #define D_HighR_P0_ALL() P0M1=0XFF;P0M0=0; #define D_OpenD_P0_ALL() P0M1=0XFF;P0M0=0XFF; #define D_stdIO_P1_ALL() P1M1=0;P1M0=0; #define D_HighI_P1_ALL() P1M1=0;P1M0=0XFF; #define D_HighR_P1_ALL() P1M1=0XFF;P1M0=0; #define D_OpenD_P1_ALL() P1M1=0XFF;P1M0=0XFF; #define D_stdIO_P0(BITNx) BITN_0(P0M1,BITNx);BITN_0(P0M0,BITNx); //////00 准双向口 灌电流20mA 拉电流270-150uS #define D_HighI_P0(BITNx) BITN_0(P0M1,BITNx);BITN_1(P0M0,BITNx); //////01 推挽输出 20mA 加限流 #define D_HighR_P0(BITNx) BITN_1(P0M1,BITNx);BITN_0(P0M0,BITNx); /////////10 高阻 #define D_OpenD_P0(BITNx) BITN_1(P0M1,BITNx);BITN_1(P0M0,BITNx); /////11 开漏 open-Drain 内部上拉电阻断开 开漏模式既可以度外部状态也可以对外输出高低电平 #define D_stdIO_P1(BITNx) BITN_0(P1M1,BITNx);BITN_0(P1M0,BITNx); //////00 准双向口 灌电流20mA 拉电流270-150uS #define D_HighI_P1(BITNx) BITN_0(P1M1,BITNx);BITN_1(P1M0,BITNx); //////01 推挽输出 20mA 加限流 #define D_HighR_P1(BITNx) BITN_1(P1M1,BITNx);BITN_0(P1M0,BITNx); /////////10 高阻 #define D_OpenD_P1(BITNx) BITN_1(P1M1,BITNx);BITN_1(P1M0,BITNx); /////11 开漏 open-Drain 内部上拉电阻断开 开漏模式既可以度外部状态也可以对外输出高低电平 #define D_stdIO_P2(BITNx) BITN_0(P2M1,BITNx);BITN_0(P2M0,BITNx); //////00 准双向口 灌电流20mA 拉电流270-150uS #define D_HighI_P2(BITNx) BITN_0(P2M1,BITNx);BITN_1(P2M0,BITNx); //////01 推挽输出 20mA 加限流 #define D_HighR_P2(BITNx) BITN_1(P2M1,BITNx);BITN_0(P2M0,BITNx); /////////10 高阻 #define D_OpenD_P2(BITNx) BITN_1(P2M1,BITNx);BITN_1(P2M0,BITNx); /////11 开漏 open-Drain 内部上拉电阻断开 开漏模式既可以度外部状态也可以对外输出高低电平 #define D_stdIO_P3(BITNx) BITN_0(P3M1,BITNx);BITN_0(P3M0,BITNx); //////00 准双向口 灌电流20mA 拉电流270-150uS #define D_HighI_P3(BITNx) BITN_0(P3M1,BITNx);BITN_1(P3M0,BITNx); //////01 推挽输出 20mA 加限流 #define D_HighR_P3(BITNx) BITN_1(P3M1,BITNx);BITN_0(P3M0,BITNx); /////////10 高阻 #define D_OpenD_P3(BITNx) BITN_1(P3M1,BITNx);BITN_1(P3M0,BITNx); /////11 开漏 open-Drain 内部上拉电阻断开 开漏模式既可以度外部状态也可以对外输出高低电平 #define D_stdIO_P4(BITNx) BITN_0(P4M1,BITNx);BITN_0(P4M0,BITNx); //////00 准双向口 灌电流20mA 拉电流270-150uS #define D_HighI_P4(BITNx) BITN_0(P4M1,BITNx);BITN_1(P4M0,BITNx); //////01 推挽输出 20mA 加限流 #define D_HighR_P4(BITNx) BITN_1(P4M1,BITNx);BITN_0(P4M0,BITNx); /////////10 高阻 #define D_OpenD_P4(BITNx) BITN_1(P4M1,BITNx);BITN_1(P4M0,BITNx); /////11 开漏 open-Drain 内部上拉电阻断开 开漏模式既可以度外部状态也可以对外输出高低电平 #define D_stdIO_P5(BITNx) BITN_0(P5M1,BITNx);BITN_0(P5M0,BITNx); //////00 准双向口 灌电流20mA 拉电流270-150uS #define D_HighI_P5(BITNx) BITN_0(P5M1,BITNx);BITN_1(P5M0,BITNx); //////01 推挽输出 20mA 加限流 #define D_HighR_P5(BITNx) BITN_1(P5M1,BITNx);BITN_0(P5M0,BITNx); /////////10 高阻 #define D_OpenD_P5(BITNx) BITN_1(P5M1,BITNx);BITN_1(P5M0,BITNx); /////11 开漏 open-Drain 内部上拉电阻断开 开漏模式既可以度外部状态也可以对外输出高低电平 #define D_stdIO_P6(BITNx) BITN_0(P6M1,BITNx);BITN_0(P6M0,BITNx); //////00 准双向口 灌电流20mA 拉电流270-150uS #define D_HighI_P6(BITNx) BITN_0(P6M1,BITNx);BITN_1(P6M0,BITNx); //////01 推挽输出 20mA 加限流 #define D_HighR_P6(BITNx) BITN_1(P6M1,BITNx);BITN_0(P6M0,BITNx); /////////10 高阻 #define D_OpenD_P6(BITNx) BITN_1(P6M1,BITNx);BITN_1(P6M0,BITNx); /////11 开漏 open-Drain 内部上拉电阻断开 开漏模式既可以度外部状态也可以对外输出高低电平 #define D_stdIO_P7(BITNx) BITN_0(P7M1,BITNx);BITN_0(P7M0,BITNx); //////00 准双向口 灌电流20mA 拉电流270-150uS #define D_HighI_P7(BITNx) BITN_0(P7M1,BITNx);BITN_1(P7M0,BITNx); //////01 推挽输出 20mA 加限流 #define D_HighR_P7(BITNx) BITN_1(P7M1,BITNx);BITN_0(P7M0,BITNx); /////////10 高阻 #define D_OpenD_P7(BITNx) BITN_1(P7M1,BITNx);BITN_1(P7M0,BITNx); /////11 开漏 open-Drain 内部上拉电阻断开 开漏模式既可以度外部状态也可以对外输出高低电平 /*** #define P0_conf_in(n) BITN_1(P0M1,n);BITN_0(P0M0,n); #define P1_conf_in(n) BITN_1(P1M1,n);BITN_0(P1M0,n); #define P2_conf_in(n) BITN_1(P2M1,n);BITN_0(P2M0,n); #define P2_conf_port(n) BITN_0(P2M1,n);BITN_0(P2M0,n); #define P3_conf_in(n) BITN_1(P3M1,n);BITN_0(P3M0,n); #define P3_conf_port(n) BITN_0(P3M1,n);BITN_0(P3M0,n); #define P4_conf_in(n) BITN_1(P4M1,n);BITN_0(P4M0,n); #define P5_conf_in(n) BITN_1(P5M1,n);BITN_0(P5M0,n); ***/ #define NOP() _nop_() #define L0_INT4_OPEN() BITN_1(INT_CLKO, INT_EX4) #define L0_INT4_CLOSE() BITN_0(INT_CLKO, INT_EX4) #define L0_INT4_AT() BITN_G(INT_CLKO, INT_EX4) #define L0_INT4_CLEAR() BITN_0(AUXINTIF, INT4IF) #define L0_INT3_CLEAR() BITN_0(AUXINTIF, INT3IF) #define L0_INT2_CLEAR() BITN_0(AUXINTIF, INT2IF) ////// #define L0_INT3_OPEN() BITN_1(INT_CLKO, INT_EX3); #define L0_INT3_CLOSE() BITN_0(INT_CLKO, INT_EX3); #define L0_INT2_OPEN() BITN_1(INT_CLKO, INT_EX2); #define L0_INT2_CLOSE() BITN_0(INT_CLKO, INT_EX2); #define L0_INT1_OPEN() EX1 = 1; #define L0_INT1_CLOSE() EX1 = 0; #define L0_INT0_OPEN() EX0 = 1; #define L0_INT0_CLOSE() EX0 = 0; #if 0 #define L0_TIMER1_start() TR1 = 1; #define L0_TIMER1_end() TR1 = 0; #define L0_TIMER1_isr_OPEN() ET1 = 1; #define L0_TIMER1_isr_CLOSE() ET1 = 0; #else #define L0_TIMER1_start() ET1 = 1; #define L0_TIMER1_end() ET1 = 0; #define L0_TIMER1_isr_OPEN() TR1 = 1; #define L0_TIMER1_isr_CLOSE() TR1 = 0; #endif /// fixme 颠倒定义会让c51锁死#define _nop_() NOP() ///#define L0_INT3_OPEN() BITN_1(INT_CLKO,INT_EX3); //使能INT3中断 ///#define L0_INT3_CLOSE() BITN_0(INT_CLKO,INT_EX3); #endif //__STC_ONLY_H_