C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 1 C51 COMPILER V9.60.7.0, COMPILATION OF MODULE LT89XX OBJECT MODULE PLACED IN .\Objects\lt89xx.obj COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Src\lt89xx.c OMF2 OPTIMIZE(8,SPEED) BROWSE INCDIR(.\Src;.\Task;.\Task\cpu_p -ort\S92F8003A;.\Task\cfg;.\Task\pt_thread;.\SC92F8003_Lib\Inc) DEBUG CODE LISTINCLUDE SYMBOLS PRINT(.\Listings\lt89xx.ls -t) PREPRINT(.\Listings\lt89xx.i) OBJECT(.\Objects\lt89xx.obj) line level source 1 #include "LT89xx.h" 1 =1 #ifndef _LT89XX_H_ 2 =1 #define _LT89XX_H_ 3 =1 4 =1 #include 1 =2 #ifndef _STD_INT_H_ 2 =2 #define _STD_INT_H_ 3 =2 typedef signed long int32_t; 4 =2 typedef unsigned long uint32_t; 5 =2 typedef signed char int8_t; 6 =2 typedef unsigned char uint8_t; 7 =2 typedef signed int int16_t; 8 =2 typedef unsigned int uint16_t; 9 =2 #endif 5 =1 6 =1 7 =1 void InitLT89xx(void); 8 =1 9 =1 uint16_t LT_ReadReg2(uint8_t reg); 10 =1 void LT_Readreg(uint8_t reg,uint8_t *RegH,uint8_t *RegL ); 11 =1 void LT_WriteReg(uint8_t reg, uint8_t RegH, uint8_t RegL); 12 =1 void LT_WriteReg2(uint8_t reg, uint16_t regValue); 13 =1 14 =1 uint8_t LT_ReadBuf(uint8_t reg, uint8_t *pBuf); 15 =1 void LT_WriteBuf(uint8_t reg, uint8_t *pBuf, uint8_t len); 16 =1 17 =1 18 =1 void LT8920_Sleep(void); 19 =1 uint8_t LT_GetPKT(void); 20 =1 #endif 21 =1 2 #include "LT89xx_cfg.h" 1 =1 #ifndef _LT89XX_CFG_H_ 2 =1 #define _LT89XX_CFG_H_ 3 =1 4 =1 #include "stdint.h" 1 =2 #ifndef _STD_INT_H_ =2 #define _STD_INT_H_ =2 typedef signed long int32_t; =2 typedef unsigned long uint32_t; =2 typedef signed char int8_t; =2 typedef unsigned char uint8_t; =2 typedef signed int int16_t; =2 typedef unsigned int uint16_t; =2 #endif 5 =1 #include "al_helper.h" 1 =2 /* 2 =2 * al_helper.h 3 =2 * 4 =2 * Created on: 2023-4-20 5 =2 * Author: xukaiming 6 =2 */ 7 =2 C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 2 8 =2 #ifndef _AL_HELPER_H_ 9 =2 #define _AL_HELPER_H_ 10 =2 11 =2 #include "stdint.h" 1 =3 #ifndef _STD_INT_H_ =3 #define _STD_INT_H_ =3 typedef signed long int32_t; =3 typedef unsigned long uint32_t; =3 typedef signed char int8_t; =3 typedef unsigned char uint8_t; =3 typedef signed int int16_t; =3 typedef unsigned int uint16_t; =3 #endif 12 =2 13 =2 #ifdef __cplusplus =2 extern "C" { =2 #endif 16 =2 17 =2 //#define AL_STATIC static 18 =2 #define AL_STATIC 19 =2 #define AL_INLINE inline 20 =2 21 =2 #define TASK_WITH_PT 1 22 =2 #define TASK_WITH_NAME 0 23 =2 24 =2 #define XDATA xdata 25 =2 #define IDATA idata 26 =2 #define CONST code 27 =2 //#define CONST xdata 28 =2 29 =2 30 =2 #ifndef UNUSED 31 =2 #define UNUSED(x) (void)(x) 32 =2 #endif 33 =2 34 =2 enum 35 =2 { 36 =2 false = 0, 37 =2 true =!false 38 =2 }; 39 =2 40 =2 #ifdef __cplusplus =2 } =2 #endif 43 =2 44 =2 #endif 45 =2 6 =1 #include "LT89xx_def.h" 1 =2 #ifndef _LT89XX_DEF_H_ 2 =2 #define _LT89XX_DEF_H_ 3 =2 #include "stdint.h" 1 =3 #ifndef _STD_INT_H_ =3 #define _STD_INT_H_ =3 typedef signed long int32_t; =3 typedef unsigned long uint32_t; =3 typedef signed char int8_t; =3 typedef unsigned char uint8_t; =3 typedef signed int int16_t; =3 typedef unsigned int uint16_t; =3 #endif 4 =2 5 =2 C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 3 6 =2 7 =2 //************************************* 8 =2 //变量与函数声明部分 不建议修改 9 =2 #define LT89xx_6dBm 0x4800 10 =2 #define LT89xx_2dBm 0X1840 11 =2 #define LT89xx_1_7dBm 0X18C0 12 =2 #define LT89xx_1dBm 0X1940 13 =2 #define LT89xx_n0_3dBm 0X19C0 14 =2 #define LT89xx_n1_4dBm 0X1A40 15 =2 #define LT89xx_n2_2dBm 0X1AC0 16 =2 #define LT89xx_n3dBm 0X1B40 17 =2 #define LT89xx_n4dBm 0X1BC0 18 =2 #define LT89xx_n6_5dBm 0X1C40 19 =2 #define LT89xx_n7_3dBm 0X1CC0 20 =2 #define LT89xx_n8_2dBm 0X1D40 21 =2 #define LT89xx_n9_5dBm 0X1DC0 22 =2 #define LT89xx_n10_7dBm 0X1E40 23 =2 #define LT89xx_n12_2dBm 0X1EC0 24 =2 #define LT89xx_n14_2dBm 0X1F40 25 =2 #define LT89xx_n17dBm 0X1FC0 26 =2 27 =2 28 =2 #define REG07_W_R_EN 0x07 29 =2 30 =2 #define REG36_SYNC_WORD_15_00 0x24 31 =2 #define REG37_SYNC_WORD_31_16 0x25 32 =2 #define REG38_SYNC_WORD_47_32 0x26 33 =2 #define REG39_SYNC_WORD_63_48 0x27 34 =2 35 =2 #define REG52_W_R_PTR 0x34 36 =2 37 =2 #define REG50_TXRX_FIFO 0x32 38 =2 39 =2 40 =2 typedef struct 41 =2 { 42 =2 uint8_t RegAddr; 43 =2 uint16_t RegValue; 44 =2 }LT89XX_CFG; 45 =2 46 =2 typedef struct 47 =2 { 48 =2 uint16_t Sync_Word_15_00; 49 =2 uint16_t Sync_Word_63_48; 50 =2 }Sync_Word; 51 =2 52 =2 typedef struct 53 =2 { 54 =2 Sync_Word SyncWord; 55 =2 uint16_t Freq; 56 =2 }LT89XX_Sync_Word_Channel; 57 =2 58 =2 59 =2 #endif 7 =1 8 =1 #define PKT_READ_REG 0 //PKT readtype 0= use hardware 1=read register 9 =1 #define EN_REG_FEED 0 // 10 =1 11 =1 #define GPIO_PKT GPIO1 12 =1 #define PIN_PKT GPIO_PIN_6 13 =1 14 =1 #define GPIO_RST_RF GPIO2 C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 4 15 =1 #define PIN_RST_RF GPIO_PIN_3 16 =1 17 =1 #define RF_POWER LT89xx_6dBm 18 =1 19 =1 20 =1 #define REG_PLL_STATE 0x03 21 =1 #define REG_RSSI 0x06 22 =1 #define REG_EN_OSC 0x0A 23 =1 24 =1 25 =1 #define REG_INIT_SIZE 27 26 =1 27 =1 28 =1 extern CONST LT89XX_CFG LT89xx_cfg[REG_INIT_SIZE]; 29 =1 extern IDATA LT89XX_CFG LT89xx_cfg_default[REG_INIT_SIZE]; 30 =1 extern IDATA uint8_t id[REG_INIT_SIZE]; 31 =1 32 =1 33 =1 #endif 3 4 #include "spi.h" 1 =1 #ifndef _SPI_H_ 2 =1 #define _SPI_H_ 3 =1 unsigned char spiReadWrite(unsigned char Byte); 4 =1 void InitSPI(void); 5 =1 6 =1 void CS_HIGH(void); 7 =1 void CS_LOW(void); 8 =1 #endif 9 =1 5 #include "pt_timer.h" 1 =1 #ifndef _PT_TIMER_H_ 2 =1 #define _PT_TIMER_H_ 3 =1 #include "pt.h" 1 =2 2 =2 #ifndef __PT_H__ 3 =2 #define __PT_H__ 4 =2 5 =2 #include "lc.h" 1 =3 #ifndef __LC_H__ 2 =3 #define __LC_H__ 3 =3 4 =3 5 =3 #ifdef LC_INCLUDE =3 #include LC_INCLUDE =3 #else 8 =3 #include "lc-switch.h" 1 =4 2 =4 3 =4 #ifndef __LC_SWITCH_H__ 4 =4 #define __LC_SWITCH_H__ 5 =4 6 =4 typedef unsigned short lc_t; 7 =4 8 =4 #define LC_INIT(s) s = 0; 9 =4 10 =4 #define LC_RESUME(s) switch(s) { case 0: 11 =4 12 =4 #define LC_SET(s) s = __LINE__; case __LINE__: 13 =4 14 =4 #define LC_END(s) } 15 =4 C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 5 16 =4 #endif /* __LC_SWITCH_H__ */ 17 =4 18 =4 /** @} */ 9 =3 #endif 10 =3 11 =3 #endif 6 =2 7 =2 struct pt { 8 =2 lc_t lc; 9 =2 }; 10 =2 11 =2 12 =2 #ifndef UNUSED_PARAM 13 =2 #define UNUSED_PARAM(v) (void)(v) 14 =2 #endif 15 =2 16 =2 #define PT_WAITING 0 //等待 17 =2 #define PT_YIELDED 1 //锁死线程 18 =2 #define PT_EXITED 2 //退出 19 =2 #define PT_ENDED 3 //结束 20 =2 21 =2 22 =2 #define PT_BIND(pt1) {static idata struct pt pt_hide ;pt1 = &pt_hide;} 23 =2 24 =2 25 =2 #define PT_INIT(pt) LC_INIT((pt)->lc) 26 =2 #define PT_THREAD(name_args) int8_t name_args 27 =2 #define PT_BEGIN(pt) { int8_t PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc) 28 =2 #define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \ 29 =2 UNUSED_PARAM(PT_YIELD_FLAG );\ 30 =2 PT_INIT(pt); return PT_ENDED; } 31 =2 32 =2 33 =2 //等待条件成立,如果不成立,继续等待 34 =2 #define PT_WAIT_UNTIL(pt, condition) \ 35 =2 do { \ 36 =2 LC_SET((pt)->lc); \ 37 =2 if(!(condition)) { \ 38 =2 return PT_WAITING; \ 39 =2 } \ 40 =2 } while(0) 41 =2 42 =2 //一直等待,直到条件不成立 43 =2 #define PT_WAIT_WHILE(pt, cond) PT_WAIT_UNTIL((pt), !(cond)) 44 =2 //等待子线程退出 45 =2 #define PT_WAIT_THREAD(pt, thread) PT_WAIT_WHILE((pt), PT_SCHEDULE(thread)) 46 =2 47 =2 //启动子线程,等待子线程退出,如果不退出,在此阻塞 48 =2 #define PT_SPAWN(pt, child, thread) \ 49 =2 do { \ 50 =2 PT_INIT((child)); \ 51 =2 PT_WAIT_THREAD((pt), (thread)); \ 52 =2 } while(0) 53 =2 54 =2 //重新启动线程,从头开始 55 =2 #define PT_RESTART(pt) \ 56 =2 do { \ 57 =2 PT_INIT(pt); \ 58 =2 return PT_WAITING; \ 59 =2 } while(0) 60 =2 61 =2 //退出线程 C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 6 62 =2 #define PT_EXIT(pt) \ 63 =2 do { \ 64 =2 PT_INIT(pt); \ 65 =2 return PT_EXITED; \ 66 =2 } while(0) 67 =2 //子线程是否退出 68 =2 #define PT_SCHEDULE(f) ((f) < PT_EXITED) 69 =2 70 =2 //锁死任务 71 =2 #define PT_YIELD(pt) \ 72 =2 do { \ 73 =2 PT_YIELD_FLAG = 0; \ 74 =2 LC_SET((pt)->lc); \ 75 =2 if(PT_YIELD_FLAG == 0) { \ 76 =2 return PT_YIELDED; \ 77 =2 } \ 78 =2 } while(0) 79 =2 80 =2 //锁死任务直到符合条件 81 =2 #define PT_YIELD_UNTIL(pt, cond) \ 82 =2 do { \ 83 =2 PT_YIELD_FLAG = 0; \ 84 =2 LC_SET((pt)->lc); \ 85 =2 if((PT_YIELD_FLAG == 0) || !(cond)) { \ 86 =2 return PT_YIELDED; \ 87 =2 } \ 88 =2 } while(0) 89 =2 90 =2 91 =2 #endif /* __PT_H__ */ 4 =1 5 =1 6 =1 struct timer { 7 =1 unsigned long start; //记录启动时的tick值 8 =1 unsigned long interval; //要定时的tick数 9 =1 }; 10 =1 11 =1 void timer_set(struct timer *t, unsigned long interval); 12 =1 unsigned char timer_expired(struct timer *t); 13 =1 void delay_ms(unsigned long t_ms); 14 =1 void Delay10us(void); 15 =1 void delay_us(unsigned int t); 16 =1 #endif 6 #include 1 =1 #ifndef _HAL_H_ 2 =1 #define _HAL_H_ 3 =1 #include "sc92f8003.h" 1 =2 #ifndef _SC92F8003_H 2 =2 #define _SC92F8003_H 3 =2 4 =2 #include "SC92F8003_C.h" 1 =3 /*-------------------------------------------------------------------------- 2 =3 SC92F8003_C.H 3 =3 4 =3 C Header file for SC92F8003 microcontroller. 5 =3 Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd. 6 =3 All rights reserved. 7 =3 深圳市赛元微电子有限公司 8 =3 版本号: V1.0 9 =3 日期: 2018.05.02 10 =3 --------------------------------------------------------------------------*/ 11 =3 #ifndef _SC92F8003_H_ C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 7 12 =3 #define _SC92F8003_H_ 13 =3 14 =3 /* ------------------- 字节寄存器-------------------- */ 15 =3 ///*CPU*/ 16 =3 sfr ACC = 0xE0; //累加器A 17 =3 sfr B = 0xF0; //通用寄存器B 18 =3 sfr PSW = 0xD0; //程序状态字 19 =3 sfr DPH = 0x83; //数据指针高8位 20 =3 sfr DPL = 0x82; //数据指针低8位 21 =3 sfr SP = 0x81; //堆栈指针 22 =3 23 =3 24 =3 /*system*/ 25 =3 sfr PCON = 0x87; //电源管理控制寄存器 26 =3 27 =3 /*interrupt*/ 28 =3 sfr IP1 = 0XB9; //中断优先级控制寄存器1 29 =3 sfr IP = 0xB8; //中断优先权控制寄存器 30 =3 sfr IE = 0xA8; //中断控制寄存器 31 =3 sfr IE1 = 0XA9; //中断控制寄存器1 32 =3 33 =3 /*PORT*/ 34 =3 sfr P2PH = 0xA2; //P2口模式控制寄存器 35 =3 sfr P2CON = 0xA1; //P2口模式控制寄存器 36 =3 sfr P2 = 0xA0; //P2口数据寄存器 37 =3 sfr P1PH = 0x92; //P1口模式控制寄存器 38 =3 sfr P1CON = 0x91; //P1口模式控制寄存器 39 =3 sfr P1 = 0x90; //P1口数据寄存器 40 =3 sfr P0PH = 0x9B; //P0口模式控制寄存器 41 =3 sfr P0CON = 0x9A; //P0口模式控制寄存器 42 =3 sfr P0 = 0x80; //P0口数据寄存器 43 =3 44 =3 /*TIMER*/ 45 =3 sfr TMCON = 0x8E; //定时器频率控制寄存器 46 =3 sfr TH1 = 0x8D; //定时器1高8位 47 =3 sfr TH0 = 0x8C; //定时器0高8位 48 =3 sfr TL1 = 0x8B; //定时器1低8位 49 =3 sfr TL0 = 0x8A; //定时器0低8位 50 =3 sfr TMOD = 0x89; //定时器工作模式寄存器 51 =3 sfr TCON = 0x88; //定时器控制寄存器 52 =3 sfr T2CON = 0xC8; //定时器2控制寄存器 53 =3 sfr T2MOD = 0xC9; //定时器2工作模式寄存器 54 =3 sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位 55 =3 sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位 56 =3 sfr TL2 = 0xCC; //定时器2低8位 57 =3 sfr TH2 = 0xCD; //定时器2高8位 58 =3 59 =3 60 =3 /*ADC*/ 61 =3 sfr ADCCFG1 = 0xAA; //ADC功能配置寄存器0 62 =3 sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器1 63 =3 sfr ADCCON = 0XAD; //ADC控制寄存器 64 =3 sfr ADCVL = 0xAE; //ADC 结果寄存器 65 =3 sfr ADCVH = 0xAF; //ADC 结果寄存器 66 =3 67 =3 /*PWM*/ 68 =3 sfr PWMCFG = 0xD1; //PWM设置寄存器 69 =3 sfr PWMCON0 = 0xD2; //PWM控制寄存器 70 =3 sfr PWMPRD = 0xD3; //PWM周期设置寄存器 71 =3 sfr PWMDTYA = 0xD4; //PWM占空比设置寄存器A 72 =3 sfr PWMDTY0 = 0xD5; //PWM0设置寄存器 73 =3 sfr PWMDTY1 = 0xD6; //PWM1设置寄存器 C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 8 74 =3 sfr PWMDTY2 = 0xD7; //PWM2设置寄存器 75 =3 sfr PWMCON1 = 0xDA; //PWM控制寄存器 76 =3 sfr PWMDTYB = 0xDB; //PWM占空比设置寄存器B 77 =3 sfr PWMDTY3 = 0xDC; //PWM3设置寄存器 78 =3 sfr PWMDTY4 = 0xDD; //PWM4设置寄存器 79 =3 sfr PWMDTY5 = 0xDE; //PWM5设置寄存器 80 =3 sfr PWMDTY6 = 0xDF; //PWM6设置寄存器 81 =3 82 =3 83 =3 // 84 =3 ///*WatchDog*/ 85 =3 sfr BTMCON = 0XCE; //低频定时器控制寄存器 86 =3 sfr WDTCON = 0xCF; //WDT控制寄存器 87 =3 88 =3 89 =3 sfr OTCON = 0X8F; //输出控制寄存器 90 =3 91 =3 /*INT*/ 92 =3 sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器 93 =3 sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器 94 =3 sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器 95 =3 sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器 96 =3 sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器 97 =3 sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器 98 =3 99 =3 /*IAP */ 100 =3 sfr IAPCTL = 0xF6; //IAP控制寄存器 101 =3 sfr IAPDAT = 0xF5; //IAP数据寄存器 102 =3 sfr IAPADE = 0xF4; //IAP扩展地址寄存器 103 =3 sfr IAPADH = 0xF3; //IAP写入地址高位寄存器 104 =3 sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器 105 =3 sfr IAPKEY = 0xF1; //IAP保护寄存器 106 =3 107 =3 /*uart0*/ 108 =3 sfr SCON = 0X98; //uart控制寄存器 109 =3 sfr SBUF = 0X99; //uart0数据寄存器 110 =3 111 =3 /*三合一*/ 112 =3 sfr SSCON0 = 0X9D; //SSI控制寄存器0 113 =3 sfr SSCON1 = 0X9E; //SSI控制寄存器1 114 =3 sfr SSCON2 = 0X95; //SSI控制寄存器2 115 =3 sfr SSDAT = 0X9F; //SSI数据寄存器 116 =3 117 =3 sfr OPINX = 0XFE; 118 =3 sfr OPREG = 0XFF; 119 =3 120 =3 /*Check Sum*/ 121 =3 sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位 122 =3 sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位 123 =3 124 =3 sfr OPERCON = 0xEF; //运算控制寄存器 125 =3 126 =3 ///* ------------------- 位寄存器-------------------- */ 127 =3 /*PSW*/ 128 =3 sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借 -时 1:加法运算最高位有进位,或者减法运算最高位有借位时 129 =3 sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位 -,或减法运算在bit3位有借位时 130 =3 sbit F0 = PSW^5; //用户标志位 131 =3 sbit RS1 = PSW^4; //工作寄存器组选择位 132 =3 sbit RS0 = PSW^3; //工作寄存器组选择位 133 =3 sbit OV = PSW^2; //溢出标志位 C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 9 134 =3 sbit F1 = PSW^1; //F1标志 135 =3 sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数 -奇数 136 =3 137 =3 /*T2CON*/ 138 =3 sbit TF2 = T2CON^7; 139 =3 sbit EXF2 = T2CON^6; 140 =3 sbit RCLK = T2CON^5; 141 =3 sbit TCLK = T2CON^4; 142 =3 sbit EXEN2 = T2CON^3; 143 =3 sbit TR2 = T2CON^2; 144 =3 sbit T2 = T2CON^1; 145 =3 sbit CP = T2CON^0; 146 =3 147 =3 148 =3 /*IP*/ 149 =3 sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 AD -C的中断优先权是 “高” 150 =3 sbit IPT2 = IP^5; //PWM中断优先控制位 0:设定 PWM的中断优先权是 “低” 1:设定 PW -M 的中断优先权是 “高” 151 =3 sbit IPUART = IP^4; //SIF中断优先控制位 0:设定 SIF的中断优先权是 “低” 1:设定 SI -F的中断优先权是 “高” 152 =3 sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设 - Timer 1的中断优先权是 “高” 153 =3 sbit IPINT1 = IP^2; //32K Base Timer中断优先控制位 0:设定 32K的中断优先权是 “低” - 1:设定 32K的中断优先权是 “高” 154 =3 sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设 - Timer 0的中断优先权是 “高” 155 =3 sbit IPINT0 = IP^0; 156 =3 157 =3 /*IE*/ 158 =3 sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断 159 =3 sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断 160 =3 sbit ET2 = IE^5; //PWM中断使能控制 0:关闭PWM中断 1:打开PWM中断 161 =3 sbit EUART = IE^4; //UART中断使能控制 0:关闭SIF中断 1:打开SIF中断 162 =3 sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断 163 =3 sbit EINT1 = IE^2; //32K Base Timer中断使能控制 0:关闭32K中断 1:打开32K中断 164 =3 sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断 165 =3 sbit EINT0 = IE^0; //TouchKey的中断使能控制 0:关闭TouchKey中断 1:打开TouchKey中断 166 =3 167 =3 /*TCON*/ 168 =3 sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1 -为“1”,申请中断,CPU响应时,硬件清“0”。 169 =3 sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数 170 =3 sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0 -为“1”,申请中断,CPU响应时,硬件清“0”。 171 =3 sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数 172 =3 173 =3 /*SCON*/ 174 =3 sbit SM0 = SCON^7; 175 =3 sbit SM1 = SCON^6; 176 =3 sbit SM2 = SCON^5; 177 =3 sbit REN = SCON^4; 178 =3 sbit TB8 = SCON^3; 179 =3 sbit RB8 = SCON^2; 180 =3 sbit TI = SCON^1; 181 =3 sbit RI = SCON^0; 182 =3 183 =3 /* P0 */ 184 =3 sbit P01 = P0^1; 185 =3 sbit P00 = P0^0; 186 =3 C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 10 187 =3 /* P1 */ 188 =3 sbit P17 = P1^7; 189 =3 sbit P16 = P1^6; 190 =3 sbit P15 = P1^5; 191 =3 sbit P14 = P1^4; 192 =3 sbit P13 = P1^3; 193 =3 sbit P12 = P1^2; 194 =3 sbit P11 = P1^1; 195 =3 sbit P10 = P1^0; 196 =3 197 =3 /* P2 */ 198 =3 sbit P27 = P2^7; 199 =3 sbit P26 = P2^6; 200 =3 sbit P25 = P2^5; 201 =3 sbit P24 = P2^4; 202 =3 sbit P23 = P2^3; 203 =3 sbit P22 = P2^2; 204 =3 sbit P21 = P2^1; 205 =3 sbit P20 = P2^0; 206 =3 207 =3 #endif 5 =2 #include "stdint.h" 1 =3 #ifndef _STD_INT_H_ =3 #define _STD_INT_H_ =3 typedef signed long int32_t; =3 typedef unsigned long uint32_t; =3 typedef signed char int8_t; =3 typedef unsigned char uint8_t; =3 typedef signed int int16_t; =3 typedef unsigned int uint16_t; =3 #endif 6 =2 7 =2 #define enableInterrupts() EA=1 /** 开启总中断 **/ 8 =2 #define disableInterrupts() EA=0 /** 关闭总中断 **/ 9 =2 10 =2 #define __I volatile const /*!< defines 'read only' permissions */ 11 =2 #define __O volatile /*!< defines 'write only' permissions */ 12 =2 #define __IO volatile /*!< defines 'read / write' permissions */ 13 =2 /* 14 =2 //!< Signed integer types 15 =2 typedef signed char int8_t; 16 =2 typedef signed short int16_t; 17 =2 typedef signed long int32_t; 18 =2 19 =2 //!< Unsigned integer types 20 =2 typedef unsigned char uint8_t; 21 =2 typedef unsigned short uint16_t; 22 =2 typedef unsigned long uint32_t; 23 =2 24 =2 typedef int32_t s32; 25 =2 typedef int16_t s16; 26 =2 typedef int8_t s8; 27 =2 28 =2 typedef uint32_t u32; 29 =2 typedef uint16_t u16; 30 =2 typedef uint8_t u8; 31 =2 */ 32 =2 33 =2 34 =2 typedef enum {FALSE = 0, TRUE = !FALSE} bool; 35 =2 36 =2 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus; C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 11 37 =2 38 =2 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; 39 =2 40 =2 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; 41 =2 42 =2 typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; 43 =2 44 =2 #endif 4 =1 #include "sc92f8003_adc.h" 1 =2 //************************************************************ 2 =2 // Copyright (c) 深圳市赛元微电子有限公司 3 =2 // 文件名称 : sc92f8003_adc.h 4 =2 // 作者 : 5 =2 // 模块功能 : ADC固件库函数头文件 6 =2 // 局部函数列表: 7 =2 // 最后更正日期: 2018/9/4 8 =2 // 版本 : V1.0 9 =2 // 说明 : 10 =2 //************************************************************* 11 =2 12 =2 #ifndef _SC92F8003_ADC_H_ 13 =2 #define _SC92F8003_ADC_H_ 14 =2 15 =2 #include "sc92f8003.h" 1 =3 #ifndef _SC92F8003_H =3 #define _SC92F8003_H =3 =3 #include "SC92F8003_C.h" =3 #include "stdint.h" =3 =3 #define enableInterrupts() EA=1 /** 开启总中断 **/ =3 #define disableInterrupts() EA=0 /** 关闭总中断 **/ =3 =3 #define __I volatile const /*!< defines 'read only' permissions */ =3 #define __O volatile /*!< defines 'write only' permissions */ =3 #define __IO volatile /*!< defines 'read / write' permissions */ =3 /* =3 //!< Signed integer types =3 typedef signed char int8_t; =3 typedef signed short int16_t; =3 typedef signed long int32_t; =3 =3 //!< Unsigned integer types =3 typedef unsigned char uint8_t; =3 typedef unsigned short uint16_t; =3 typedef unsigned long uint32_t; =3 =3 typedef int32_t s32; =3 typedef int16_t s16; =3 typedef int8_t s8; =3 =3 typedef uint32_t u32; =3 typedef uint16_t u16; =3 typedef uint8_t u8; =3 */ =3 =3 =3 typedef enum {FALSE = 0, TRUE = !FALSE} bool; =3 =3 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus; =3 =3 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 12 =3 =3 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; =3 =3 typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; =3 =3 #endif 16 =2 17 =2 typedef enum { 18 =2 ADC_PRESSEL_FHRC_D32 = (uint8_t)0x00, //预分频 fADC = fHRC/32 19 =2 ADC_PRESSEL_FHRC_D24 = (uint8_t)0x01, //预分频 fADC = fHRC/24 20 =2 ADC_PRESSEL_FHRC_D16 = (uint8_t)0x02, //预分频 fADC = fHRC/16 21 =2 ADC_PRESSEL_FHRC_D12 = (uint8_t)0x03, //预分频 fADC = fHRC/12 22 =2 ADC_PRESSEL_FHRC_D8 = (uint8_t)0x04, //预分频 fADC = fHRC/8 23 =2 ADC_PRESSEL_FHRC_D6 = (uint8_t)0x05, //预分频 fADC = fHRC/6 24 =2 ADC_PRESSEL_FHRC_D4 = (uint8_t)0x06, //预分频 fADC = fHRC/4 25 =2 ADC_PRESSEL_FHRC_D3 = (uint8_t)0x07 //预分频 fADC = fHRC/3 26 =2 } ADC_PresSel_TypeDef; 27 =2 28 =2 typedef enum { 29 =2 ADC_Cycle_6Cycle = (uint8_t)0x00, //ADC采样时间为6个ADC采样时钟周期 30 =2 ADC_Cycle_36Cycle = (uint8_t)0x08 //ADC采样时间为36个ADC采样时钟周期 31 =2 } ADC_Cycle_TypeDef; 32 =2 33 =2 typedef enum { 34 =2 ADC_CHANNEL_0 = (uint8_t)0x00, //选择AIN0做AD输入口 35 =2 ADC_CHANNEL_1 = (uint8_t)0x01, //选择AIN1做AD输入口 36 =2 ADC_CHANNEL_2 = (uint8_t)0x02, //选择AIN2做AD输入口 37 =2 ADC_CHANNEL_3 = (uint8_t)0x03, //选择AIN3做AD输入口 38 =2 ADC_CHANNEL_4 = (uint8_t)0x04, //选择AIN4做AD输入口 39 =2 ADC_CHANNEL_5 = (uint8_t)0x05, //选择AIN5做AD输入口 40 =2 ADC_CHANNEL_6 = (uint8_t)0x06, //选择AIN6做AD输入口 41 =2 ADC_CHANNEL_VDD_D4 = (uint8_t)0x1f //选择内部1/4VDD做AD输入口 42 =2 } ADC_Channel_TypeDef; 43 =2 44 =2 void ADC_DeInit(void); 45 =2 void ADC_Init(ADC_PresSel_TypeDef ADC_PrescalerSelection, ADC_Cycle_TypeDef ADC_Cycle); 46 =2 void ADC_ChannelConfig(ADC_Channel_TypeDef ADC_Channel, FunctionalState NewState); 47 =2 void ADC_Cmd(FunctionalState NewState); 48 =2 void ADC_StartConversion(void); 49 =2 uint16_t ADC_GetConversionValue(void); 50 =2 void ADC_ITConfig(FunctionalState NewState, PriorityStatus Priority); 51 =2 FlagStatus ADC_GetFlagStatus(void); 52 =2 void ADC_ClearFlag(void); 53 =2 54 =2 #endif 55 =2 56 =2 /******************* (C) COPYRIGHT 2018 SinOne Microelectronics *****END OF FILE****/ 5 =1 #include "sc92f8003_btm.h" 1 =2 //************************************************************ 2 =2 // Copyright (c) 深圳市赛元微电子有限公司 3 =2 // 文件名称 : sc92f8003_btm.h 4 =2 // 作者 : 5 =2 // 模块功能 : BTM固件库函数头文件 6 =2 // 局部函数列表: 7 =2 // 最后更正日期: 2018/9/4 8 =2 // 版本 : V1.0 9 =2 // 说明 : 10 =2 //************************************************************* 11 =2 12 =2 #ifndef _SC92F8003_BTM_H_ 13 =2 #define _SC92F8003_BTM_H_ 14 =2 C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 13 15 =2 #include "sc92f8003.h" 1 =3 #ifndef _SC92F8003_H =3 #define _SC92F8003_H =3 =3 #include "SC92F8003_C.h" =3 #include "stdint.h" =3 =3 #define enableInterrupts() EA=1 /** 开启总中断 **/ =3 #define disableInterrupts() EA=0 /** 关闭总中断 **/ =3 =3 #define __I volatile const /*!< defines 'read only' permissions */ =3 #define __O volatile /*!< defines 'write only' permissions */ =3 #define __IO volatile /*!< defines 'read / write' permissions */ =3 /* =3 //!< Signed integer types =3 typedef signed char int8_t; =3 typedef signed short int16_t; =3 typedef signed long int32_t; =3 =3 //!< Unsigned integer types =3 typedef unsigned char uint8_t; =3 typedef unsigned short uint16_t; =3 typedef unsigned long uint32_t; =3 =3 typedef int32_t s32; =3 typedef int16_t s16; =3 typedef int8_t s8; =3 =3 typedef uint32_t u32; =3 typedef uint16_t u16; =3 typedef uint8_t u8; =3 */ =3 =3 =3 typedef enum {FALSE = 0, TRUE = !FALSE} bool; =3 =3 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus; =3 =3 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; =3 =3 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; =3 =3 typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; =3 =3 #endif 16 =2 17 =2 typedef enum { 18 =2 BTM_TIMEBASE_15_625MS = (uint8_t)0x00, //BTM每15.625MS产生一次中断 19 =2 BTM_TIMEBASE_31_25MS = (uint8_t)0x01, //BTM每31.25MS产生一次中断 20 =2 BTM_TIMEBASE_62_5MS = (uint8_t)0x02, //BTM每62.5MS产生一次中断 21 =2 BTM_TIMEBASE_125MS = (uint8_t)0x03, //BTM每125MS产生一次中断 22 =2 BTM_TIMEBASE_250MS = (uint8_t)0x04, //BTM每0.25S产生一次中断 23 =2 BTM_TIMEBASE_500MS = (uint8_t)0x05, //BTM每0.5S产生一次中断 24 =2 BTM_TIMEBASE_1S = (uint8_t)0x06, //BTM每1S产生一次中断 25 =2 BTM_TIMEBASE_2S = (uint8_t)0x07, //BTM每2S产生一次中断 26 =2 BTM_TIMEBASE_4S = (uint8_t)0x08 //BTM每4S产生一次中断 27 =2 } BTM_Timebase_TypeDef; 28 =2 29 =2 void BTM_DeInit(void); 30 =2 void BTM_Init(BTM_Timebase_TypeDef BTM_Timebase); 31 =2 void BTM_Cmd(FunctionalState NewState); 32 =2 void BTM_ITConfig(FunctionalState NewState, PriorityStatus Priority); C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 14 33 =2 FlagStatus BTM_GetFlagStatus(void); 34 =2 void BTM_ClearFlag(void); 35 =2 36 =2 #endif 37 =2 38 =2 /******************* (C) COPYRIGHT 2018 SinOne Microelectronics *****END OF FILE****/ 6 =1 #include "SC92F8003_C.h" 1 =2 /*-------------------------------------------------------------------------- 2 =2 SC92F8003_C.H 3 =2 4 =2 C Header file for SC92F8003 microcontroller. 5 =2 Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd. 6 =2 All rights reserved. 7 =2 深圳市赛元微电子有限公司 8 =2 版本号: V1.0 9 =2 日期: 2018.05.02 10 =2 --------------------------------------------------------------------------*/ 11 =2 #ifndef _SC92F8003_H_ =2 #define _SC92F8003_H_ =2 =2 /* ------------------- 字节寄存器-------------------- */ =2 ///*CPU*/ =2 sfr ACC = 0xE0; //累加器A =2 sfr B = 0xF0; //通用寄存器B =2 sfr PSW = 0xD0; //程序状态字 =2 sfr DPH = 0x83; //数据指针高8位 =2 sfr DPL = 0x82; //数据指针低8位 =2 sfr SP = 0x81; //堆栈指针 =2 =2 =2 /*system*/ =2 sfr PCON = 0x87; //电源管理控制寄存器 =2 =2 /*interrupt*/ =2 sfr IP1 = 0XB9; //中断优先级控制寄存器1 =2 sfr IP = 0xB8; //中断优先权控制寄存器 =2 sfr IE = 0xA8; //中断控制寄存器 =2 sfr IE1 = 0XA9; //中断控制寄存器1 =2 =2 /*PORT*/ =2 sfr P2PH = 0xA2; //P2口模式控制寄存器 =2 sfr P2CON = 0xA1; //P2口模式控制寄存器 =2 sfr P2 = 0xA0; //P2口数据寄存器 =2 sfr P1PH = 0x92; //P1口模式控制寄存器 =2 sfr P1CON = 0x91; //P1口模式控制寄存器 =2 sfr P1 = 0x90; //P1口数据寄存器 =2 sfr P0PH = 0x9B; //P0口模式控制寄存器 =2 sfr P0CON = 0x9A; //P0口模式控制寄存器 =2 sfr P0 = 0x80; //P0口数据寄存器 =2 =2 /*TIMER*/ =2 sfr TMCON = 0x8E; //定时器频率控制寄存器 =2 sfr TH1 = 0x8D; //定时器1高8位 =2 sfr TH0 = 0x8C; //定时器0高8位 =2 sfr TL1 = 0x8B; //定时器1低8位 =2 sfr TL0 = 0x8A; //定时器0低8位 =2 sfr TMOD = 0x89; //定时器工作模式寄存器 =2 sfr TCON = 0x88; //定时器控制寄存器 =2 sfr T2CON = 0xC8; //定时器2控制寄存器 =2 sfr T2MOD = 0xC9; //定时器2工作模式寄存器 =2 sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位 =2 sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位 C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 15 =2 sfr TL2 = 0xCC; //定时器2低8位 =2 sfr TH2 = 0xCD; //定时器2高8位 =2 =2 =2 /*ADC*/ =2 sfr ADCCFG1 = 0xAA; //ADC功能配置寄存器0 =2 sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器1 =2 sfr ADCCON = 0XAD; //ADC控制寄存器 =2 sfr ADCVL = 0xAE; //ADC 结果寄存器 =2 sfr ADCVH = 0xAF; //ADC 结果寄存器 =2 =2 /*PWM*/ =2 sfr PWMCFG = 0xD1; //PWM设置寄存器 =2 sfr PWMCON0 = 0xD2; //PWM控制寄存器 =2 sfr PWMPRD = 0xD3; //PWM周期设置寄存器 =2 sfr PWMDTYA = 0xD4; //PWM占空比设置寄存器A =2 sfr PWMDTY0 = 0xD5; //PWM0设置寄存器 =2 sfr PWMDTY1 = 0xD6; //PWM1设置寄存器 =2 sfr PWMDTY2 = 0xD7; //PWM2设置寄存器 =2 sfr PWMCON1 = 0xDA; //PWM控制寄存器 =2 sfr PWMDTYB = 0xDB; //PWM占空比设置寄存器B =2 sfr PWMDTY3 = 0xDC; //PWM3设置寄存器 =2 sfr PWMDTY4 = 0xDD; //PWM4设置寄存器 =2 sfr PWMDTY5 = 0xDE; //PWM5设置寄存器 =2 sfr PWMDTY6 = 0xDF; //PWM6设置寄存器 =2 =2 =2 // =2 ///*WatchDog*/ =2 sfr BTMCON = 0XCE; //低频定时器控制寄存器 =2 sfr WDTCON = 0xCF; //WDT控制寄存器 =2 =2 =2 sfr OTCON = 0X8F; //输出控制寄存器 =2 =2 /*INT*/ =2 sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器 =2 sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器 =2 sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器 =2 sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器 =2 sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器 =2 sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器 =2 =2 /*IAP */ =2 sfr IAPCTL = 0xF6; //IAP控制寄存器 =2 sfr IAPDAT = 0xF5; //IAP数据寄存器 =2 sfr IAPADE = 0xF4; //IAP扩展地址寄存器 =2 sfr IAPADH = 0xF3; //IAP写入地址高位寄存器 =2 sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器 =2 sfr IAPKEY = 0xF1; //IAP保护寄存器 =2 =2 /*uart0*/ =2 sfr SCON = 0X98; //uart控制寄存器 =2 sfr SBUF = 0X99; //uart0数据寄存器 =2 =2 /*三合一*/ =2 sfr SSCON0 = 0X9D; //SSI控制寄存器0 =2 sfr SSCON1 = 0X9E; //SSI控制寄存器1 =2 sfr SSCON2 = 0X95; //SSI控制寄存器2 =2 sfr SSDAT = 0X9F; //SSI数据寄存器 =2 =2 sfr OPINX = 0XFE; C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 16 =2 sfr OPREG = 0XFF; =2 =2 /*Check Sum*/ =2 sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位 =2 sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位 =2 =2 sfr OPERCON = 0xEF; //运算控制寄存器 =2 =2 ///* ------------------- 位寄存器-------------------- */ =2 /*PSW*/ =2 sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借 -时 1:加法运算最高位有进位,或者减法运算最高位有借位时 =2 sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位 -,或减法运算在bit3位有借位时 =2 sbit F0 = PSW^5; //用户标志位 =2 sbit RS1 = PSW^4; //工作寄存器组选择位 =2 sbit RS0 = PSW^3; //工作寄存器组选择位 =2 sbit OV = PSW^2; //溢出标志位 =2 sbit F1 = PSW^1; //F1标志 =2 sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数 -奇数 =2 =2 /*T2CON*/ =2 sbit TF2 = T2CON^7; =2 sbit EXF2 = T2CON^6; =2 sbit RCLK = T2CON^5; =2 sbit TCLK = T2CON^4; =2 sbit EXEN2 = T2CON^3; =2 sbit TR2 = T2CON^2; =2 sbit T2 = T2CON^1; =2 sbit CP = T2CON^0; =2 =2 =2 /*IP*/ =2 sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 AD -C的中断优先权是 “高” =2 sbit IPT2 = IP^5; //PWM中断优先控制位 0:设定 PWM的中断优先权是 “低” 1:设定 PW -M 的中断优先权是 “高” =2 sbit IPUART = IP^4; //SIF中断优先控制位 0:设定 SIF的中断优先权是 “低” 1:设定 SI -F的中断优先权是 “高” =2 sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设 - Timer 1的中断优先权是 “高” =2 sbit IPINT1 = IP^2; //32K Base Timer中断优先控制位 0:设定 32K的中断优先权是 “低” - 1:设定 32K的中断优先权是 “高” =2 sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设 - Timer 0的中断优先权是 “高” =2 sbit IPINT0 = IP^0; =2 =2 /*IE*/ =2 sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断 =2 sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断 =2 sbit ET2 = IE^5; //PWM中断使能控制 0:关闭PWM中断 1:打开PWM中断 =2 sbit EUART = IE^4; //UART中断使能控制 0:关闭SIF中断 1:打开SIF中断 =2 sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断 =2 sbit EINT1 = IE^2; //32K Base Timer中断使能控制 0:关闭32K中断 1:打开32K中断 =2 sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断 =2 sbit EINT0 = IE^0; //TouchKey的中断使能控制 0:关闭TouchKey中断 1:打开TouchKey中断 =2 =2 /*TCON*/ =2 sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1 -为“1”,申请中断,CPU响应时,硬件清“0”。 =2 sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数 C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 17 =2 sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0 -为“1”,申请中断,CPU响应时,硬件清“0”。 =2 sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数 =2 =2 /*SCON*/ =2 sbit SM0 = SCON^7; =2 sbit SM1 = SCON^6; =2 sbit SM2 = SCON^5; =2 sbit REN = SCON^4; =2 sbit TB8 = SCON^3; =2 sbit RB8 = SCON^2; =2 sbit TI = SCON^1; =2 sbit RI = SCON^0; =2 =2 /* P0 */ =2 sbit P01 = P0^1; =2 sbit P00 = P0^0; =2 =2 /* P1 */ =2 sbit P17 = P1^7; =2 sbit P16 = P1^6; =2 sbit P15 = P1^5; =2 sbit P14 = P1^4; =2 sbit P13 = P1^3; =2 sbit P12 = P1^2; =2 sbit P11 = P1^1; =2 sbit P10 = P1^0; =2 =2 /* P2 */ =2 sbit P27 = P2^7; =2 sbit P26 = P2^6; =2 sbit P25 = P2^5; =2 sbit P24 = P2^4; =2 sbit P23 = P2^3; =2 sbit P22 = P2^2; =2 sbit P21 = P2^1; =2 sbit P20 = P2^0; =2 =2 #endif 7 =1 #include "sc92f8003_chksum.h" 1 =2 //************************************************************ 2 =2 // Copyright (c) 深圳市赛元微电子有限公司 3 =2 // 文件名称 : sc92f8003_chksum.h 4 =2 // 作者 : 5 =2 // 模块功能 : CHKSUM固件库函数头文件 6 =2 // 局部函数列表: 7 =2 // 最后更正日期: 2018/9/4 8 =2 // 版本 : V1.0 9 =2 // 说明 : 10 =2 //************************************************************* 11 =2 12 =2 #ifndef __SC92F8003_CHKSUM_H 13 =2 #define __SC92F8003_CHKSUM_H 14 =2 15 =2 #include "sc92f8003.h" 1 =3 #ifndef _SC92F8003_H =3 #define _SC92F8003_H =3 =3 #include "SC92F8003_C.h" =3 #include "stdint.h" =3 =3 #define enableInterrupts() EA=1 /** 开启总中断 **/ C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 18 =3 #define disableInterrupts() EA=0 /** 关闭总中断 **/ =3 =3 #define __I volatile const /*!< defines 'read only' permissions */ =3 #define __O volatile /*!< defines 'write only' permissions */ =3 #define __IO volatile /*!< defines 'read / write' permissions */ =3 /* =3 //!< Signed integer types =3 typedef signed char int8_t; =3 typedef signed short int16_t; =3 typedef signed long int32_t; =3 =3 //!< Unsigned integer types =3 typedef unsigned char uint8_t; =3 typedef unsigned short uint16_t; =3 typedef unsigned long uint32_t; =3 =3 typedef int32_t s32; =3 typedef int16_t s16; =3 typedef int8_t s8; =3 =3 typedef uint32_t u32; =3 typedef uint16_t u16; =3 typedef uint8_t u8; =3 */ =3 =3 =3 typedef enum {FALSE = 0, TRUE = !FALSE} bool; =3 =3 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus; =3 =3 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; =3 =3 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; =3 =3 typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; =3 =3 #endif 16 =2 17 =2 void CHKSUM_DeInit(void); 18 =2 void CHKSUM_StartOperation(void); 19 =2 uint16_t CHKSUM_GetCheckValue(void); 20 =2 21 =2 #endif 22 =2 23 =2 /******************* (C) COPYRIGHT 2018 SinOne Microelectronics *****END OF FILE****/ 8 =1 #include "sc92f8003_exti.h" 1 =2 //************************************************************ 2 =2 // Copyright (c) 深圳市赛元微电子有限公司 3 =2 // 文件名称 : sc92f8003_exti.h 4 =2 // 作者 : 5 =2 // 模块功能 : EXTI固件库函数头文件 6 =2 // 局部函数列表: 7 =2 // 最后更正日期: 2018/9/4 8 =2 // 版本 : V1.0 9 =2 // 说明 : 10 =2 //************************************************************* 11 =2 12 =2 #ifndef _SC92F8003_EXTI_H_ 13 =2 #define _SC92F8003_EXTI_H_ 14 =2 15 =2 #include "sc92f8003.h" 1 =3 #ifndef _SC92F8003_H C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 19 =3 #define _SC92F8003_H =3 =3 #include "SC92F8003_C.h" =3 #include "stdint.h" =3 =3 #define enableInterrupts() EA=1 /** 开启总中断 **/ =3 #define disableInterrupts() EA=0 /** 关闭总中断 **/ =3 =3 #define __I volatile const /*!< defines 'read only' permissions */ =3 #define __O volatile /*!< defines 'write only' permissions */ =3 #define __IO volatile /*!< defines 'read / write' permissions */ =3 /* =3 //!< Signed integer types =3 typedef signed char int8_t; =3 typedef signed short int16_t; =3 typedef signed long int32_t; =3 =3 //!< Unsigned integer types =3 typedef unsigned char uint8_t; =3 typedef unsigned short uint16_t; =3 typedef unsigned long uint32_t; =3 =3 typedef int32_t s32; =3 typedef int16_t s16; =3 typedef int8_t s8; =3 =3 typedef uint32_t u32; =3 typedef uint16_t u16; =3 typedef uint8_t u8; =3 */ =3 =3 =3 typedef enum {FALSE = 0, TRUE = !FALSE} bool; =3 =3 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus; =3 =3 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; =3 =3 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; =3 =3 typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; =3 =3 #endif 16 =2 17 =2 typedef enum { 18 =2 EXTI_TRIGGER_RISE_ONLY = (uint8_t)0x01, //EXTI触发方式为上升沿 19 =2 EXTI_TRIGGER_FALL_ONLY = (uint8_t)0x02, //EXTI触发方式为下降沿 20 =2 EXTI_TRIGGER_RISE_FALL = (uint8_t)0x03, //EXTI触发方式为上升沿与下降沿 21 =2 EXTI_TRIGGER_DISABLE = (uint8_t)0x04 //关闭外部中断触发 22 =2 } EXTI_TriggerMode_Typedef; 23 =2 24 =2 typedef enum { 25 =2 INT0 = (uint8_t)0x00, //外部中断0 26 =2 INT1 = (uint8_t)0x01, //外部中断1 27 =2 INT2 = (uint8_t)0x02 //外部中断2 28 =2 } EXTIx_Typedef; 29 =2 30 =2 typedef enum { 31 =2 INT00 = (uint8_t)0x01, //将P00设置为INT0脚 32 =2 INT01 = (uint8_t)0x02 //将P01设置为INT0脚 33 =2 } EXTI0x_Typedef; 34 =2 C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 20 35 =2 typedef enum { 36 =2 INT10 = (uint8_t)0x01, //将P10设置为INT1脚 37 =2 INT11 = (uint8_t)0x02, //将P11设置为INT1脚 38 =2 INT12 = (uint8_t)0x04, //将P12设置为INT1脚 39 =2 INT13 = (uint8_t)0x08, //将P13设置为INT1脚 40 =2 INT14 = (uint8_t)0x10, //将P14设置为INT1脚 41 =2 INT15 = (uint8_t)0x20, //将P15设置为INT1脚 42 =2 INT16 = (uint8_t)0x40 //将P16设置为INT1脚 43 =2 } EXTI1x_Typedef; 44 =2 45 =2 typedef enum { 46 =2 INT21 = (uint8_t)0x02, //将P21设置为INT2脚 47 =2 INT22 = (uint8_t)0x04, //将P22设置为INT2脚 48 =2 INT23 = (uint8_t)0x08, //将P23设置为INT2脚 49 =2 INT24 = (uint8_t)0x10, //将P24设置为INT2脚 50 =2 INT25 = (uint8_t)0x20, //将P25设置为INT2脚 51 =2 INT26 = (uint8_t)0x40, //将P26设置为INT2脚 52 =2 INT27 = (uint8_t)0x80 //将P27设置为INT2脚 53 =2 } EXTI2x_Typedef; 54 =2 55 =2 void EXTI_DeInit(EXTIx_Typedef INTx); 56 =2 void EXTI_SetExtInt0xTriggerMode(uint8_t INT0x,EXTI_TriggerMode_Typedef TriggerMode); 57 =2 void EXTI_SetExtInt1xTriggerMode(uint8_t INT1x,EXTI_TriggerMode_Typedef TriggerMode); 58 =2 void EXTI_SetExtInt2xTriggerMode(uint8_t INT2x,EXTI_TriggerMode_Typedef TriggerMode); 59 =2 void EXTI_ITConfig(EXTIx_Typedef INTx,FunctionalState NewState,PriorityStatus Priority); 60 =2 61 =2 #endif 62 =2 63 =2 /******************* (C) COPYRIGHT 2018 SinOne Microelectronics *****END OF FILE****/ 9 =1 #include "sc92f8003_gpio.h" 1 =2 //************************************************************ 2 =2 // Copyright (c) 深圳市赛元微电子有限公司 3 =2 // 文件名称 : sc92f8003_gpio.h 4 =2 // 作者 : 5 =2 // 模块功能 : GPIO固件库函数头文件 6 =2 // 局部函数列表: 7 =2 // 最后更正日期: 2018/9/4 8 =2 // 版本 : V1.0 9 =2 // 说明 : 10 =2 //************************************************************* 11 =2 #ifndef _SC92F8003_GPIO_H_ 12 =2 #define _SC92F8003_GPIO_H_ 13 =2 14 =2 #include "sc92f8003.h" 1 =3 #ifndef _SC92F8003_H =3 #define _SC92F8003_H =3 =3 #include "SC92F8003_C.h" =3 #include "stdint.h" =3 =3 #define enableInterrupts() EA=1 /** 开启总中断 **/ =3 #define disableInterrupts() EA=0 /** 关闭总中断 **/ =3 =3 #define __I volatile const /*!< defines 'read only' permissions */ =3 #define __O volatile /*!< defines 'write only' permissions */ =3 #define __IO volatile /*!< defines 'read / write' permissions */ =3 /* =3 //!< Signed integer types =3 typedef signed char int8_t; =3 typedef signed short int16_t; =3 typedef signed long int32_t; =3 C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 21 =3 //!< Unsigned integer types =3 typedef unsigned char uint8_t; =3 typedef unsigned short uint16_t; =3 typedef unsigned long uint32_t; =3 =3 typedef int32_t s32; =3 typedef int16_t s16; =3 typedef int8_t s8; =3 =3 typedef uint32_t u32; =3 typedef uint16_t u16; =3 typedef uint8_t u8; =3 */ =3 =3 =3 typedef enum {FALSE = 0, TRUE = !FALSE} bool; =3 =3 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus; =3 =3 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; =3 =3 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; =3 =3 typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; =3 =3 #endif 15 =2 16 =2 typedef enum { 17 =2 GPIO0 = (uint8_t)0x00, //GPIO0 18 =2 GPIO1 = (uint8_t)0x01, //GPIO1 19 =2 GPIO2 = (uint8_t)0x02, //GPIO2 20 =2 }GPIO_TypeDef; 21 =2 22 =2 typedef enum { 23 =2 GPIO_MODE_IN_HI = (uint8_t)0x00, //高阻输入模式 24 =2 GPIO_MODE_IN_PU = (uint8_t)0x01, //带上拉的输入模式 25 =2 GPIO_MODE_OUT_PP = (uint8_t)0x02 //强推挽输出模式 26 =2 }GPIO_Mode_TypeDef; 27 =2 28 =2 typedef enum { 29 =2 GPIO_PIN_0 = ((uint8_t)0x01), //IO管脚Px0 30 =2 GPIO_PIN_1 = ((uint8_t)0x02), //IO管脚Px1 31 =2 GPIO_PIN_2 = ((uint8_t)0x04), //IO管脚Px2 32 =2 GPIO_PIN_3 = ((uint8_t)0x08), //IO管脚Px3 33 =2 GPIO_PIN_4 = ((uint8_t)0x10), //IO管脚Px4 34 =2 GPIO_PIN_5 = ((uint8_t)0x20), //IO管脚Px5 35 =2 GPIO_PIN_6 = ((uint8_t)0x40), //IO管脚Px6 36 =2 GPIO_PIN_7 = ((uint8_t)0x80), //IO管脚Px7 37 =2 GPIO_PIN_LNIB = ((uint8_t)0x0F), //IO管脚Px0~3 38 =2 GPIO_PIN_HNIB = ((uint8_t)0xF0), //IO管脚Px4~7 39 =2 GPIO_PIN_ALL = ((uint8_t)0xFF) //IO管脚Px0~7 40 =2 }GPIO_Pin_TypeDef; 41 =2 42 =2 void GPIO_DeInit(void); 43 =2 void GPIO_Init(GPIO_TypeDef GPIOx, uint8_t PortPins, GPIO_Mode_TypeDef GPIO_Mode); 44 =2 void GPIO_Write(GPIO_TypeDef GPIOx, uint8_t PortVal); 45 =2 void GPIO_WriteHigh(GPIO_TypeDef GPIOx, uint8_t PortPins); 46 =2 void GPIO_WriteLow(GPIO_TypeDef GPIOx, uint8_t PortPins); 47 =2 uint8_t GPIO_ReadPort(GPIO_TypeDef GPIOx); 48 =2 BitStatus GPIO_ReadPin(GPIO_TypeDef GPIOx, GPIO_Pin_TypeDef PortPins); 49 =2 50 =2 #endif C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 22 51 =2 52 =2 /******************* (C) COPYRIGHT 2018 SinOne Microelectronics *****END OF FILE****/ 10 =1 #include "sc92f8003_iap.h" 1 =2 //************************************************************ 2 =2 // Copyright (c) 深圳市赛元微电子有限公司 3 =2 // 文件名称 : sc92f8003_iap.h 4 =2 // 作者 : 5 =2 // 模块功能 : IAP固件库函数头文件 6 =2 // 局部函数列表: 7 =2 // 最后更正日期: 2018/9/4 8 =2 // 版本 : V1.0 9 =2 // 说明 : 10 =2 //************************************************************* 11 =2 12 =2 #ifndef _SC92F8003_IAP_H_ 13 =2 #define _SC92F8003_IAP_H_ 14 =2 15 =2 #include "sc92f8003.h" 1 =3 #ifndef _SC92F8003_H =3 #define _SC92F8003_H =3 =3 #include "SC92F8003_C.h" =3 #include "stdint.h" =3 =3 #define enableInterrupts() EA=1 /** 开启总中断 **/ =3 #define disableInterrupts() EA=0 /** 关闭总中断 **/ =3 =3 #define __I volatile const /*!< defines 'read only' permissions */ =3 #define __O volatile /*!< defines 'write only' permissions */ =3 #define __IO volatile /*!< defines 'read / write' permissions */ =3 /* =3 //!< Signed integer types =3 typedef signed char int8_t; =3 typedef signed short int16_t; =3 typedef signed long int32_t; =3 =3 //!< Unsigned integer types =3 typedef unsigned char uint8_t; =3 typedef unsigned short uint16_t; =3 typedef unsigned long uint32_t; =3 =3 typedef int32_t s32; =3 typedef int16_t s16; =3 typedef int8_t s8; =3 =3 typedef uint32_t u32; =3 typedef uint16_t u16; =3 typedef uint8_t u8; =3 */ =3 =3 =3 typedef enum {FALSE = 0, TRUE = !FALSE} bool; =3 =3 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus; =3 =3 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; =3 =3 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; =3 =3 typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; =3 =3 #endif C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 23 16 =2 17 =2 typedef enum { 18 =2 IAP_MEMTYPE_ROM = (uint8_t)0x00, //IAP操作区域为ROM 19 =2 IAP_MEMTYPE_IFB = (uint8_t)0x01, //IAP操作区域为IFB 20 =2 IAP_MEMTYPE_EEPROM = (uint8_t)0x02 //IAP操作区域为EEPROM 21 =2 } IAP_MemType_TypeDef; 22 =2 23 =2 typedef enum { 24 =2 IAP_HOLDTIME_6000US = (uint8_t)0x00, //设定CPU Hold Time为6MS 25 =2 IAP_HOLDTIME_3000US = (uint8_t)0x04, //设定CPU Hold Time为3MS 26 =2 IAP_HOLDTIME_1500US = (uint8_t)0x08 //设定CPU Hold Time为1.5MS 27 =2 } IAP_HoldTime_TypeDef; 28 =2 29 =2 void IAP_DeInit(void); 30 =2 void IAP_SetHoldTime(IAP_HoldTime_TypeDef IAP_HoldTime); 31 =2 void IAP_ProgramByte(uint16_t Address,uint8_t Data,IAP_MemType_TypeDef IAP_MemType,uint8_t WriteTimeLimit) -; 32 =2 uint8_t IAP_ReadByte(uint16_t Address,IAP_MemType_TypeDef IAP_MemType); 33 =2 34 =2 #endif 35 =2 36 =2 /******************* (C) COPYRIGHT 2018 SinOne Microelectronics *****END OF FILE****/ 11 =1 #include "sc92f8003_option.h" 1 =2 //************************************************************ 2 =2 // Copyright (c) 深圳市赛元微电子有限公司 3 =2 // 文件名称 : sc92f8003_option.h 4 =2 // 作者 : 5 =2 // 模块功能 : Customer Option寄存器配置头文件 6 =2 // 局部函数列表: 7 =2 // 最后更正日期: 2018/9/4 8 =2 // 版本 : V1.0 9 =2 // 说明 : 10 =2 //************************************************************* 11 =2 12 =2 #ifndef _SC92F8003_OPTION_H_ 13 =2 #define _SC92F8003_OPTION_H_ 14 =2 15 =2 #include "sc92f8003.h" 1 =3 #ifndef _SC92F8003_H =3 #define _SC92F8003_H =3 =3 #include "SC92F8003_C.h" =3 #include "stdint.h" =3 =3 #define enableInterrupts() EA=1 /** 开启总中断 **/ =3 #define disableInterrupts() EA=0 /** 关闭总中断 **/ =3 =3 #define __I volatile const /*!< defines 'read only' permissions */ =3 #define __O volatile /*!< defines 'write only' permissions */ =3 #define __IO volatile /*!< defines 'read / write' permissions */ =3 /* =3 //!< Signed integer types =3 typedef signed char int8_t; =3 typedef signed short int16_t; =3 typedef signed long int32_t; =3 =3 //!< Unsigned integer types =3 typedef unsigned char uint8_t; =3 typedef unsigned short uint16_t; =3 typedef unsigned long uint32_t; =3 =3 typedef int32_t s32; C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 24 =3 typedef int16_t s16; =3 typedef int8_t s8; =3 =3 typedef uint32_t u32; =3 typedef uint16_t u16; =3 typedef uint8_t u8; =3 */ =3 =3 =3 typedef enum {FALSE = 0, TRUE = !FALSE} bool; =3 =3 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus; =3 =3 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; =3 =3 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; =3 =3 typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; =3 =3 #endif 16 =2 17 =2 typedef enum { 18 =2 SYSCLK_PRESSEL_FOSC_D1 = (uint8_t)0x00, //预分频 Fsys = Fosc/1 19 =2 SYSCLK_PRESSEL_FOSC_D2 = (uint8_t)0x10, //预分频 Fsys = Fosc/2 20 =2 SYSCLK_PRESSEL_FOSC_D4 = (uint8_t)0x20, //预分频 Fsys = Fosc/4 21 =2 SYSCLK_PRESSEL_FOSC_D12 = (uint8_t)0x30 //预分频 Fsys = Fosc/12 22 =2 } SYSCLK_PresSel_TypeDef; 23 =2 24 =2 typedef enum { 25 =2 LVR_INVALID = (uint8_t)0x04, //LVR无效 26 =2 LVR_2_3V = (uint8_t)0x00, //LVR 2.3V复位 27 =2 LVR_2_9V = (uint8_t)0x01, //LVR 2.9V复位 28 =2 LVR_3_7V = (uint8_t)0x02, //LVR 3.7V复位 29 =2 LVR_4_3V = (uint8_t)0x03 //LVR 4.3V复位 30 =2 } LVR_Config_TypeDef; 31 =2 32 =2 typedef enum { 33 =2 IAP_OPERATERANGE_ONLY_EEPROM = (uint8_t)0x00, //只允许EEPROM进行IAP操作 34 =2 IAP_OPERATERANGE__LAST_0_5K_CODEREGION = (uint8_t)0x04, //允许ROM最后0.5k和EEPROM进行IAP操作 35 =2 IAP_OPERATERANGE__LAST_1K_CODEREGION = (uint8_t)0x08, //允许ROM最后1k和EEPROM进行IAP操作 36 =2 IAP_OPERATERANGE__ALL_CODEREGION = (uint8_t)0x0c //允许ROM和EEPROM所有区域进行IAP操作 37 =2 } IAP_OperateRange_TypeDef; 38 =2 39 =2 typedef enum { 40 =2 XTIPLL_HIGHER_THAN_12M = (uint8_t)0x40, //外接晶振振荡频率大于等于12M 41 =2 XTIPLL_UNDER_12M = (uint8_t)0x00 //外接晶振振荡频率小于12M 42 =2 } XTIPLL_Range_TypeDef; 43 =2 44 =2 typedef enum { 45 =2 ADC_VREF_VDD = 0x00, //选择VDD做ADC参考电压 46 =2 ADC_VREF_2_4V = 0x80 //选择内部2.4V做ADC参考电压 47 =2 } ADC_Vref_TypeDef; 48 =2 49 =2 void OPTION_WDT_Cmd(FunctionalState NewState); 50 =2 void OPTION_XTIPLL_Cmd(FunctionalState NewState); 51 =2 void OPTION_XTIPLL_SetRange(XTIPLL_Range_TypeDef XTIPLL_Range); 52 =2 void OPTION_SYSCLK_Init(SYSCLK_PresSel_TypeDef SYSCLK_PresSel); 53 =2 void OPTION_RST_PIN_Cmd(FunctionalState NewState); 54 =2 void OPTION_LVR_Init(LVR_Config_TypeDef LVR_Config); 55 =2 void OPTION_ADC_VrefConfig(ADC_Vref_TypeDef ADC_Vref); 56 =2 void OPTION_IAP_SetOperateRange(IAP_OperateRange_TypeDef IAP_OperateRange); 57 =2 C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 25 58 =2 #endif 12 =1 #include "sc92f8003_pwm.h" 1 =2 //************************************************************ 2 =2 // Copyright (c) 深圳市赛元微电子有限公司 3 =2 // 文件名称 : sc92f8003_pwm.h 4 =2 // 作者 : 5 =2 // 模块功能 : PWM固件库函数头文件 6 =2 // 局部函数列表: 7 =2 // 最后更正日期: 2018/9/4 8 =2 // 版本 : V1.0 9 =2 // 说明 : 10 =2 //************************************************************* 11 =2 12 =2 #ifndef _SC92F8003_PWM_H_ 13 =2 #define _SC92F8003_PWM_H_ 14 =2 15 =2 #include "sc92f8003.h" 1 =3 #ifndef _SC92F8003_H =3 #define _SC92F8003_H =3 =3 #include "SC92F8003_C.h" =3 #include "stdint.h" =3 =3 #define enableInterrupts() EA=1 /** 开启总中断 **/ =3 #define disableInterrupts() EA=0 /** 关闭总中断 **/ =3 =3 #define __I volatile const /*!< defines 'read only' permissions */ =3 #define __O volatile /*!< defines 'write only' permissions */ =3 #define __IO volatile /*!< defines 'read / write' permissions */ =3 /* =3 //!< Signed integer types =3 typedef signed char int8_t; =3 typedef signed short int16_t; =3 typedef signed long int32_t; =3 =3 //!< Unsigned integer types =3 typedef unsigned char uint8_t; =3 typedef unsigned short uint16_t; =3 typedef unsigned long uint32_t; =3 =3 typedef int32_t s32; =3 typedef int16_t s16; =3 typedef int8_t s8; =3 =3 typedef uint32_t u32; =3 typedef uint16_t u16; =3 typedef uint8_t u8; =3 */ =3 =3 =3 typedef enum {FALSE = 0, TRUE = !FALSE} bool; =3 =3 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus; =3 =3 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; =3 =3 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; =3 =3 typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; =3 =3 #endif 16 =2 C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 26 17 =2 typedef enum { 18 =2 PWM_PRESSEL_FOSC_D1 = (uint8_t)0x00, //PWM预分频为Fosc/1 19 =2 PWM_PRESSEL_FOSC_D2 = (uint8_t)0x10, //PWM预分频为Fosc/2 20 =2 PWM_PRESSEL_FOSC_D8 = (uint8_t)0x20, //PWM预分频为Fosc/8 21 =2 PWM_PRESSEL_FOSC_D32 = (uint8_t)0x30 //PWM预分频为Fosc/32 22 =2 } PWM_PresSel_TypeDef; 23 =2 24 =2 typedef enum { 25 =2 PWM0 = (uint8_t)0x01, //PWM输出通道选择:PWM0 26 =2 PWM1 = (uint8_t)0x02, //PWM输出通道选择:PWM1 27 =2 PWM2 = (uint8_t)0x04, //PWM输出通道选择:PWM2 28 =2 PWM3 = (uint8_t)0x08, //PWM输出通道选择:PWM3 29 =2 PWM4 = (uint8_t)0x10, //PWM输出通道选择:PWM4 30 =2 PWM5 = (uint8_t)0x20, //PWM输出通道选择:PWM5 31 =2 PWM6 = (uint8_t)0x40 //PWM输出通道选择:PWM6 32 =2 } PWM_OutputPin_TypeDef; 33 =2 34 =2 typedef enum { 35 =2 PWM0PWM3 = (uint8_t)0x00, //PWM互补模式通道选择:PWM0、PWM3 36 =2 PWM1PWM4 = (uint8_t)0x01, //PWM互补模式通道选择:PWM1、PWM4 37 =2 PWM2PWM5 = (uint8_t)0x02 //PWM互补模式通道选择:PWM2、PWM5 38 =2 } PWM_ComplementaryOutputPin_TypeDef; 39 =2 40 =2 typedef enum { 41 =2 PWM_OUTPUTSTATE_DISABLE = ((uint8_t)0x00), //该PIN脚作为GPIO 42 =2 PWM_OUTPUTSTATE_ENABLE = ((uint8_t)0x01) //该PIN脚作为PWM 43 =2 } PWM_OutputState_TypeDef; 44 =2 45 =2 typedef enum { 46 =2 PWM_POLARITY_NON_INVERT = ((uint8_t)0x00), //PWM输出不反向 47 =2 PWM_POLARITY_INVERT = ((uint8_t)0x01) //PWM输出反向 48 =2 } PWM_Polarity_TypeDef; 49 =2 50 =2 void PWM_DeInit(void); 51 =2 void PWM_Init(PWM_PresSel_TypeDef PWM_PresSel,uint16_t PWM_Period); 52 =2 void PWM_OutputStateConfig(uint8_t PWM_OutputPin,PWM_OutputState_TypeDef PWM_OutputState); 53 =2 void PWM_PolarityConfig(uint8_t PWM_OutputPin,PWM_Polarity_TypeDef PWM_Polarity); 54 =2 void PWM_IndependentModeConfig(PWM_OutputPin_TypeDef PWM_OutputPin, uint16_t PWM_DutyCycle); 55 =2 void PWM_ComplementaryModeConfig(PWM_ComplementaryOutputPin_TypeDef PWM_ComplementaryOutputPin,uint16_t PW -M_DutyCycle); 56 =2 void PWM_DeadTimeConfig(uint8_t PWM012_RisingDeadTime,uint8_t PWM345_fallingDeadTime); 57 =2 void PWM_Cmd(FunctionalState NewState); 58 =2 void PWM_ITConfig(FunctionalState NewState, PriorityStatus Priority); 59 =2 FlagStatus PWM_GetFlagStatus(void); 60 =2 void PWM_ClearFlag(void); 61 =2 62 =2 #endif 63 =2 64 =2 /******************* (C) COPYRIGHT 2018 SinOne Microelectronics *****END OF FILE****/ 13 =1 #include "sc92f8003_pwr.h" 1 =2 //************************************************************ 2 =2 // Copyright (c) 深圳市赛元微电子有限公司 3 =2 // 文件名称 : sc92f8003_pwr.h 4 =2 // 作者 : 5 =2 // 模块功能 : PWR固件库函数头文件 6 =2 // 局部函数列表: 7 =2 // 最后更正日期: 2018/9/4 8 =2 // 版本 : V1.0 9 =2 // 说明 : 10 =2 //************************************************************* 11 =2 12 =2 #ifndef _SC92F8003_PWR_H_ C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 27 13 =2 #define _SC92F8003_PWR_H_ 14 =2 15 =2 #include "sc92f8003.h" 1 =3 #ifndef _SC92F8003_H =3 #define _SC92F8003_H =3 =3 #include "SC92F8003_C.h" =3 #include "stdint.h" =3 =3 #define enableInterrupts() EA=1 /** 开启总中断 **/ =3 #define disableInterrupts() EA=0 /** 关闭总中断 **/ =3 =3 #define __I volatile const /*!< defines 'read only' permissions */ =3 #define __O volatile /*!< defines 'write only' permissions */ =3 #define __IO volatile /*!< defines 'read / write' permissions */ =3 /* =3 //!< Signed integer types =3 typedef signed char int8_t; =3 typedef signed short int16_t; =3 typedef signed long int32_t; =3 =3 //!< Unsigned integer types =3 typedef unsigned char uint8_t; =3 typedef unsigned short uint16_t; =3 typedef unsigned long uint32_t; =3 =3 typedef int32_t s32; =3 typedef int16_t s16; =3 typedef int8_t s8; =3 =3 typedef uint32_t u32; =3 typedef uint16_t u16; =3 typedef uint8_t u8; =3 */ =3 =3 =3 typedef enum {FALSE = 0, TRUE = !FALSE} bool; =3 =3 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus; =3 =3 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; =3 =3 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; =3 =3 typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; =3 =3 #endif 16 =2 #include 1 =3 /*-------------------------------------------------------------------------- 2 =3 INTRINS.H 3 =3 4 =3 Intrinsic functions for C51. 5 =3 Copyright (c) 1988-2010 Keil Elektronik GmbH and ARM Germany GmbH 6 =3 All rights reserved. 7 =3 --------------------------------------------------------------------------*/ 8 =3 9 =3 #ifndef __INTRINS_H__ 10 =3 #define __INTRINS_H__ 11 =3 12 =3 #pragma SAVE 13 =3 14 =3 #if defined (__CX2__) C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 28 =3 #pragma FUNCTIONS(STATIC) =3 /* intrinsic functions are reentrant, but need static attribute */ =3 #endif 18 =3 19 =3 extern void _nop_ (void); 20 =3 extern bit _testbit_ (bit); 21 =3 extern unsigned char _cror_ (unsigned char, unsigned char); 22 =3 extern unsigned int _iror_ (unsigned int, unsigned char); 23 =3 extern unsigned long _lror_ (unsigned long, unsigned char); 24 =3 extern unsigned char _crol_ (unsigned char, unsigned char); 25 =3 extern unsigned int _irol_ (unsigned int, unsigned char); 26 =3 extern unsigned long _lrol_ (unsigned long, unsigned char); 27 =3 extern unsigned char _chkfloat_(float); 28 =3 #if defined (__CX2__) =3 extern int abs (int); =3 extern void _illop_ (void); =3 #endif 32 =3 #if !defined (__CX2__) 33 =3 extern void _push_ (unsigned char _sfr); 34 =3 extern void _pop_ (unsigned char _sfr); 35 =3 #endif 36 =3 37 =3 #pragma RESTORE 38 =3 39 =3 #endif 40 =3 17 =2 18 =2 void PWR_DeInit(void); 19 =2 void PWR_EnterSTOPMode(void); 20 =2 void PWR_EnterIDLEMode(void); 21 =2 22 =2 #endif 23 =2 24 =2 /******************* (C) COPYRIGHT 2018 SinOne Microelectronics *****END OF FILE****/ 14 =1 #include "sc92f8003_ssi.h" 1 =2 //************************************************************ 2 =2 // Copyright (c) 深圳市赛元微电子有限公司 3 =2 // 文件名称 : sc92f8003_ssi.h 4 =2 // 作者 : 5 =2 // 模块功能 : SSI固件库函数头文件 6 =2 // 局部函数列表: 7 =2 // 最后更正日期: 2018/9/4 8 =2 // 版本 : V1.0 9 =2 // 说明 : 10 =2 //************************************************************* 11 =2 12 =2 #ifndef __SC92F8003_SSI_H 13 =2 #define __SC92F8003_SSI_H 14 =2 15 =2 #include "sc92f8003.h" 1 =3 #ifndef _SC92F8003_H =3 #define _SC92F8003_H =3 =3 #include "SC92F8003_C.h" =3 #include "stdint.h" =3 =3 #define enableInterrupts() EA=1 /** 开启总中断 **/ =3 #define disableInterrupts() EA=0 /** 关闭总中断 **/ =3 =3 #define __I volatile const /*!< defines 'read only' permissions */ =3 #define __O volatile /*!< defines 'write only' permissions */ =3 #define __IO volatile /*!< defines 'read / write' permissions */ C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 29 =3 /* =3 //!< Signed integer types =3 typedef signed char int8_t; =3 typedef signed short int16_t; =3 typedef signed long int32_t; =3 =3 //!< Unsigned integer types =3 typedef unsigned char uint8_t; =3 typedef unsigned short uint16_t; =3 typedef unsigned long uint32_t; =3 =3 typedef int32_t s32; =3 typedef int16_t s16; =3 typedef int8_t s8; =3 =3 typedef uint32_t u32; =3 typedef uint16_t u16; =3 typedef uint8_t u8; =3 */ =3 =3 =3 typedef enum {FALSE = 0, TRUE = !FALSE} bool; =3 =3 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus; =3 =3 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; =3 =3 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; =3 =3 typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; =3 =3 #endif 16 =2 17 =2 typedef enum { 18 =2 SSI_PinSelection_P10P27P26 = (uint8_t)0x00, //SSI共用引脚为P10,P27,P26 19 =2 SSI_PinSelection_P21P22P23 = (uint8_t)0x20 //SSI共用引脚为P21,P22,P23 20 =2 } SSI_PinSelection_TypeDef; 21 =2 22 =2 typedef enum { 23 =2 SPI_FIRSTBIT_MSB = (uint8_t)0x00, //MSB优先发送 24 =2 SPI_FIRSTBIT_LSB = (uint8_t)0x04 //LSB优先发送 25 =2 } SPI_FirstBit_TypeDef; 26 =2 27 =2 typedef enum { 28 =2 SPI_BAUDRATEPRESCALER_4 = (uint8_t)0x00, //SPI时钟速率为Fsys/4 29 =2 SPI_BAUDRATEPRESCALER_8 = (uint8_t)0x01, //SPI时钟速率为Fsys/8 30 =2 SPI_BAUDRATEPRESCALER_16 = (uint8_t)0x02, //SPI时钟速率为Fsys/16 31 =2 SPI_BAUDRATEPRESCALER_32 = (uint8_t)0x03, //SPI时钟速率为Fsys/32 32 =2 SPI_BAUDRATEPRESCALER_64 = (uint8_t)0x04, //SPI时钟速率为Fsys/64 33 =2 SPI_BAUDRATEPRESCALER_128 = (uint8_t)0x05, //SPI时钟速率为Fsys/128 34 =2 SPI_BAUDRATEPRESCALER_256 = (uint8_t)0x06, //SPI时钟速率为Fsys/256 35 =2 SPI_BAUDRATEPRESCALER_512 = (uint8_t)0x07 //SPI时钟速率为Fsys/512 36 =2 } SPI_BaudRatePrescaler_TypeDef; 37 =2 38 =2 typedef enum { 39 =2 SPI_MODE_MASTER = (uint8_t)0x20, //SPI为主设备 40 =2 SPI_MODE_SLAVE = (uint8_t)0x00 //SPI为从设备 41 =2 } SPI_Mode_TypeDef; 42 =2 43 =2 typedef enum { 44 =2 SPI_CLOCKPOLARITY_LOW = (uint8_t)0x00, //SCK在空闲状态下为低电平 45 =2 SPI_CLOCKPOLARITY_HIGH = (uint8_t)0x10 //SCK在空闲状态下为高电平 C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 30 46 =2 } SPI_ClockPolarity_TypeDef; 47 =2 48 =2 typedef enum { 49 =2 SPI_CLOCKPHASE_1EDGE = (uint8_t)0x00, //SCK的第一沿采集数据 50 =2 SPI_CLOCKPHASE_2EDGE = (uint8_t)0x08 //SCK的第二沿采集数据 51 =2 } SPI_ClockPhase_TypeDef; 52 =2 53 =2 typedef enum { 54 =2 SPI_TXE_DISINT = (uint8_t)0x00, //TXE为0时不允许发送中断 55 =2 SPI_TXE_ENINT = (uint8_t)0x01 //TXE为1时允许发送中断 56 =2 } SPI_TXE_INT_TypeDef; 57 =2 58 =2 59 =2 typedef enum { 60 =2 UART1_Mode_10B = 0X00, //UART1设置为10位模式 61 =2 UART1_Mode_11B = 0X80 //UART1设置为11位模式 62 =2 } UART1_Mode_TypeDef; 63 =2 64 =2 typedef enum { 65 =2 UART1_RX_ENABLE = 0X10, //UART1允许接收 66 =2 UART1_RX_DISABLE = 0X00 //UART1禁止接收 67 =2 } UART1_RX_TypeDef; 68 =2 69 =2 typedef enum { 70 =2 SPI_FLAG_SPIF = (uint8_t)0x80, //SPI数据传送标志位SPIF 71 =2 SPI_FLAG_WCOL = (uint8_t)0x40, //SPI写入冲突标志位WCOL 72 =2 SPI_FLAG_TXE = (uint8_t)0x08, //SPI发送缓存器空标志TXE 73 =2 TWI_FLAG_TWIF = (uint8_t)0x40, //TWI中断标志位TWIF 74 =2 TWI_FLAG_GCA = (uint8_t)0x10, //TWI通用地址响应标志位GCA 75 =2 UART1_FLAG_TI = (uint8_t)0x02, //UART1发送中断标志位TI 76 =2 UART1_FLAG_RI = (uint8_t)0x01 //UART1接收中断标志位RI 77 =2 } SSI_Flag_TypeDef; 78 =2 79 =2 void SSI_DeInit(void); 80 =2 void SSI_PinSelection(SSI_PinSelection_TypeDef PinSeletion); 81 =2 void SSI_SPI_Init(SPI_FirstBit_TypeDef FirstBit,SPI_BaudRatePrescaler_TypeDef BaudRatePrescaler,SPI_Mode_T -ypeDef Mode,SPI_ClockPolarity_TypeDef ClockPolarity,SPI_ClockPhase_TypeDef ClockPhase,SPI_TXE_INT_TypeDef SPI_TXE_INT); 82 =2 void SSI_SPI_Cmd(FunctionalState NewState); 83 =2 void SSI_SPI_SendData(uint8_t Data); 84 =2 uint8_t SSI_SPI_ReceiveData(void); 85 =2 void SSI_TWI_Init(uint8_t TWI_Address); 86 =2 void SSI_TWI_AcknowledgeConfig(FunctionalState NewState); 87 =2 void SSI_TWI_GeneralCallCmd(FunctionalState NewState); 88 =2 void SSI_TWI_Cmd(FunctionalState NewState); 89 =2 void SSI_TWI_SendData(uint8_t Data); 90 =2 uint8_t SSI_TWI_ReceiveData(void); 91 =2 void SSI_UART1_Init(uint32_t UART1Fsys, uint32_t BaudRate, UART1_Mode_TypeDef Mode, UART1_RX_TypeDef RxMod -e); 92 =2 void SSI_UART1_SendData8(uint8_t Data); 93 =2 uint8_t SSI_UART1_ReceiveData8(void); 94 =2 void SSI_UART1_SendData9(uint16_t Data); 95 =2 uint16_t SSI_UART1_ReceiveData9(void); 96 =2 void SSI_ITConfig(FunctionalState NewState, PriorityStatus Priority); 97 =2 FlagStatus SSI_GetFlagStatus(SSI_Flag_TypeDef SSI_FLAG); 98 =2 void SSI_ClearFlag(SSI_Flag_TypeDef SSI_FLAG); 99 =2 100 =2 #endif 101 =2 102 =2 /******************* (C) COPYRIGHT 2018 SinOne Microelectronics *****END OF FILE****/ 15 =1 #include "sc92f8003_timer0.h" 1 =2 //************************************************************ 2 =2 // Copyright (c) 深圳市赛元微电子有限公司 C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 31 3 =2 // 文件名称 : sc92f8003_timer0.h 4 =2 // 作者 : 5 =2 // 模块功能 : TIMER0固件库函数头文件 6 =2 // 局部函数列表: 7 =2 // 最后更正日期: 2018/9/4 8 =2 // 版本 : V1.0 9 =2 // 说明 : 10 =2 //************************************************************* 11 =2 12 =2 #ifndef _SC92F8003_TIMER0_H_ 13 =2 #define _SC92F8003_TIMER0_H_ 14 =2 15 =2 #include "sc92f8003.h" 1 =3 #ifndef _SC92F8003_H =3 #define _SC92F8003_H =3 =3 #include "SC92F8003_C.h" =3 #include "stdint.h" =3 =3 #define enableInterrupts() EA=1 /** 开启总中断 **/ =3 #define disableInterrupts() EA=0 /** 关闭总中断 **/ =3 =3 #define __I volatile const /*!< defines 'read only' permissions */ =3 #define __O volatile /*!< defines 'write only' permissions */ =3 #define __IO volatile /*!< defines 'read / write' permissions */ =3 /* =3 //!< Signed integer types =3 typedef signed char int8_t; =3 typedef signed short int16_t; =3 typedef signed long int32_t; =3 =3 //!< Unsigned integer types =3 typedef unsigned char uint8_t; =3 typedef unsigned short uint16_t; =3 typedef unsigned long uint32_t; =3 =3 typedef int32_t s32; =3 typedef int16_t s16; =3 typedef int8_t s8; =3 =3 typedef uint32_t u32; =3 typedef uint16_t u16; =3 typedef uint8_t u8; =3 */ =3 =3 =3 typedef enum {FALSE = 0, TRUE = !FALSE} bool; =3 =3 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus; =3 =3 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; =3 =3 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; =3 =3 typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; =3 =3 #endif 16 =2 17 =2 typedef enum { 18 =2 TIM0_PRESSEL_FSYS_D12 = ((uint8_t)0x00), //TIMER0计数源来自系统时钟12分频 19 =2 TIM0_PRESSEL_FSYS_D1 = ((uint8_t)0x01) //TIMER0计数源来自系统时钟 20 =2 }TIM0_PresSel_TypeDef; C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 32 21 =2 22 =2 typedef enum { 23 =2 TIM0_MODE_TIMER = ((uint8_t)0x01), //TIMER0做定时器 24 =2 TIM0_MODE_COUNTER = ((uint8_t)0x02) //TIMER0做计数器 25 =2 }TIM0_CountMode_TypeDef; 26 =2 27 =2 void TIM0_DeInit(void); 28 =2 void TIM0_TimeBaseInit(TIM0_PresSel_TypeDef TIM0_PrescalerSelection,TIM0_CountMode_TypeDef TIM0_CountMode) -; 29 =2 void TIM0_WorkMode0Config(uint16_t TIM0_SetCounter); 30 =2 void TIM0_WorkMode1Config(uint16_t TIM0_SetCounter); 31 =2 void TIM0_WorkMode2Config(uint8_t TIM0_SetCounter); 32 =2 void TIM0_WorkMode3Config(uint8_t TIM0_SetCounter, uint8_t TIM1_SetCounter); 33 =2 void TIM0_Mode0SetReloadCounter(uint16_t TIM0_SetCounter); 34 =2 void TIM0_Mode1SetReloadCounter(uint16_t TIM0_SetCounter); 35 =2 void TIM0_SetTL0Counter(uint8_t TIM0_SetCounter); 36 =2 void TIM0_SetTH0Counter(uint8_t TIM0_SetCounter); 37 =2 void TIM0_Cmd(FunctionalState NewState); 38 =2 void TIM0_ITConfig(FunctionalState NewState, PriorityStatus Priority); 39 =2 FlagStatus TIM0_GetFlagStatus(void); 40 =2 void TIM0_ClearFlag(void); 41 =2 42 =2 #endif 43 =2 44 =2 /******************* (C) COPYRIGHT 2018 SinOne Microelectronics *****END OF FILE****/ 16 =1 #include "sc92f8003_timer1.h" 1 =2 //************************************************************ 2 =2 // Copyright (c) 深圳市赛元微电子有限公司 3 =2 // 文件名称 : sc92f8003_timer1.h 4 =2 // 作者 : 5 =2 // 模块功能 : TIMER1固件库函数头文件 6 =2 // 局部函数列表: 7 =2 // 最后更正日期: 2018/9/4 8 =2 // 版本 : V1.0 9 =2 // 说明 : 10 =2 //************************************************************* 11 =2 12 =2 #ifndef _SC92F8003_TIMER1_H_ 13 =2 #define _SC92F8003_TIMER1_H_ 14 =2 15 =2 #include "sc92f8003.h" 1 =3 #ifndef _SC92F8003_H =3 #define _SC92F8003_H =3 =3 #include "SC92F8003_C.h" =3 #include "stdint.h" =3 =3 #define enableInterrupts() EA=1 /** 开启总中断 **/ =3 #define disableInterrupts() EA=0 /** 关闭总中断 **/ =3 =3 #define __I volatile const /*!< defines 'read only' permissions */ =3 #define __O volatile /*!< defines 'write only' permissions */ =3 #define __IO volatile /*!< defines 'read / write' permissions */ =3 /* =3 //!< Signed integer types =3 typedef signed char int8_t; =3 typedef signed short int16_t; =3 typedef signed long int32_t; =3 =3 //!< Unsigned integer types =3 typedef unsigned char uint8_t; =3 typedef unsigned short uint16_t; C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 33 =3 typedef unsigned long uint32_t; =3 =3 typedef int32_t s32; =3 typedef int16_t s16; =3 typedef int8_t s8; =3 =3 typedef uint32_t u32; =3 typedef uint16_t u16; =3 typedef uint8_t u8; =3 */ =3 =3 =3 typedef enum {FALSE = 0, TRUE = !FALSE} bool; =3 =3 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus; =3 =3 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; =3 =3 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; =3 =3 typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; =3 =3 #endif 16 =2 17 =2 typedef enum { 18 =2 TIM1_PRESSEL_FSYS_D12 = ((uint8_t)0x00), //TIMER1计数源来自系统时钟12分频 19 =2 TIM1_PRESSEL_FSYS_D1 = ((uint8_t)0x01) //TIMER1计数源来自系统时钟 20 =2 }TIM1_PresSel_TypeDef; 21 =2 22 =2 typedef enum { 23 =2 TIM1_MODE_TIMER = ((uint8_t)0x01), //TIMER1做定时器 24 =2 TIM1_MODE_COUNTER = ((uint8_t)0x02) //TIMER1做计数器 25 =2 }TIM1_CountMode_TypeDef; 26 =2 27 =2 void TIM1_DeInit(void); 28 =2 void TIM1_TimeBaseInit(TIM1_PresSel_TypeDef TIM1_PrescalerSelection,TIM1_CountMode_TypeDef TIM1_CountMode) -; 29 =2 void TIM1_WorkMode0Config(uint16_t TIM1_SetCounter); 30 =2 void TIM1_WorkMode1Config(uint16_t TIM1_SetCounter); 31 =2 void TIM1_WorkMode2Config(uint8_t TIM1_SetCounter); 32 =2 void TIM1_Mode0SetReloadCounter(uint16_t TIM1_SetCounter); 33 =2 void TIM1_Mode1SetReloadCounter(uint16_t TIM1_SetCounter); 34 =2 void TIM1_Cmd(FunctionalState NewState); 35 =2 void TIM1_ITConfig(FunctionalState NewState, PriorityStatus Priority); 36 =2 FlagStatus TIM1_GetFlagStatus(void); 37 =2 void TIM1_ClearFlag(void); 38 =2 39 =2 #endif 40 =2 41 =2 /******************* (C) COPYRIGHT 2018 SinOne Microelectronics *****END OF FILE****/ 17 =1 #include "sc92f8003_timer2.h" 1 =2 //************************************************************ 2 =2 // Copyright (c) 深圳市赛元微电子有限公司 3 =2 // 文件名称 : sc92f8003_timer2.h 4 =2 // 作者 : 5 =2 // 模块功能 : TIMER2固件库函数头文件 6 =2 // 局部函数列表: 7 =2 // 最后更正日期: 2018/9/4 8 =2 // 版本 : V1.0 9 =2 // 说明 : 10 =2 //************************************************************* 11 =2 C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 34 12 =2 #ifndef _SC92F8003_TIMER2_H_ 13 =2 #define _SC92F8003_TIMER2_H_ 14 =2 15 =2 #include "sc92f8003.h" 1 =3 #ifndef _SC92F8003_H =3 #define _SC92F8003_H =3 =3 #include "SC92F8003_C.h" =3 #include "stdint.h" =3 =3 #define enableInterrupts() EA=1 /** 开启总中断 **/ =3 #define disableInterrupts() EA=0 /** 关闭总中断 **/ =3 =3 #define __I volatile const /*!< defines 'read only' permissions */ =3 #define __O volatile /*!< defines 'write only' permissions */ =3 #define __IO volatile /*!< defines 'read / write' permissions */ =3 /* =3 //!< Signed integer types =3 typedef signed char int8_t; =3 typedef signed short int16_t; =3 typedef signed long int32_t; =3 =3 //!< Unsigned integer types =3 typedef unsigned char uint8_t; =3 typedef unsigned short uint16_t; =3 typedef unsigned long uint32_t; =3 =3 typedef int32_t s32; =3 typedef int16_t s16; =3 typedef int8_t s8; =3 =3 typedef uint32_t u32; =3 typedef uint16_t u16; =3 typedef uint8_t u8; =3 */ =3 =3 =3 typedef enum {FALSE = 0, TRUE = !FALSE} bool; =3 =3 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus; =3 =3 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; =3 =3 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; =3 =3 typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; =3 =3 #endif 16 =2 17 =2 typedef enum { 18 =2 TIM2_PRESSEL_FSYS_D12 = ((uint8_t)0x00), //TIMER0计数源来自系统时钟12分频 19 =2 TIM2_PRESSEL_FSYS_D1 = ((uint8_t)0x01) //TIMER0计数源来自系统时钟 20 =2 }TIM2_PresSel_TypeDef; 21 =2 22 =2 typedef enum { 23 =2 TIM2_MODE_TIMER = ((uint8_t)0x01), //TIMER0做定时器 24 =2 TIM2_MODE_COUNTER = ((uint8_t)0x02) //TIMER0做计数器 25 =2 }TIM2_CountMode_TypeDef; 26 =2 27 =2 typedef enum { 28 =2 TIM2_COUNTDIRECTION_UP = ((uint8_t)0x00), //向上计数模式 29 =2 TIM2_COUNTDIRECTION_DOWN_UP = ((uint8_t)0x10) //向上/向下计数模式 C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 35 30 =2 }TIM2_CountDirection_TypeDef; 31 =2 32 =2 typedef enum { 33 =2 TIM2_FLAG_TF2 = (uint8_t)0x80, //中断标志位TF2 34 =2 TIM2_FLAG_EXF2 = (uint8_t)0x40 //中断标志位EXF2 35 =2 } TIM2_Flag_TypeDef; 36 =2 37 =2 void TIM2_DeInit(void); 38 =2 void TIM2_TimeBaseInit(TIM2_PresSel_TypeDef TIM2_PrescalerSelection, TIM2_CountMode_TypeDef TIM2_CountMode -, TIM2_CountDirection_TypeDef TIM2_CountDirection); 39 =2 void TIM2_WorkMode0Config(uint16_t TIM2_SetCounter); 40 =2 void TIM2_WorkMode1Config(uint16_t TIM2_SetCounter); 41 =2 void TIM2_WorkMode3Config(uint16_t TIM2_SetCounter); 42 =2 void TIM2_SetEXEN2(FunctionalState NewState); 43 =2 void TIM2_Cmd(FunctionalState NewState); 44 =2 void TIM2_ITConfig(FunctionalState NewState, PriorityStatus Priority); 45 =2 FlagStatus TIM2_GetFlagStatus(TIM2_Flag_TypeDef TIM2_Flag); 46 =2 void TIM2_ClearFlag(TIM2_Flag_TypeDef TIM2_Flag); 47 =2 48 =2 #endif 18 =1 #include "sc92f8003_uart0.h" 1 =2 //************************************************************ 2 =2 // Copyright (c) 深圳市赛元微电子有限公司 3 =2 // 文件名称 : sc92f8003_uart0.h 4 =2 // 作者 : 5 =2 // 模块功能 : UART0固件库函数头文件 6 =2 // 局部函数列表: 7 =2 // 最后更正日期: 2018/9/4 8 =2 // 版本 : V1.0 9 =2 // 说明 : 10 =2 //************************************************************* 11 =2 12 =2 #ifndef __SC92F8003_UART0_H 13 =2 #define __SC92F8003_UART0_H 14 =2 15 =2 #include "sc92f8003.h" 1 =3 #ifndef _SC92F8003_H =3 #define _SC92F8003_H =3 =3 #include "SC92F8003_C.h" =3 #include "stdint.h" =3 =3 #define enableInterrupts() EA=1 /** 开启总中断 **/ =3 #define disableInterrupts() EA=0 /** 关闭总中断 **/ =3 =3 #define __I volatile const /*!< defines 'read only' permissions */ =3 #define __O volatile /*!< defines 'write only' permissions */ =3 #define __IO volatile /*!< defines 'read / write' permissions */ =3 /* =3 //!< Signed integer types =3 typedef signed char int8_t; =3 typedef signed short int16_t; =3 typedef signed long int32_t; =3 =3 //!< Unsigned integer types =3 typedef unsigned char uint8_t; =3 typedef unsigned short uint16_t; =3 typedef unsigned long uint32_t; =3 =3 typedef int32_t s32; =3 typedef int16_t s16; =3 typedef int8_t s8; C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 36 =3 =3 typedef uint32_t u32; =3 typedef uint16_t u16; =3 typedef uint8_t u8; =3 */ =3 =3 =3 typedef enum {FALSE = 0, TRUE = !FALSE} bool; =3 =3 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus; =3 =3 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; =3 =3 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; =3 =3 typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; =3 =3 #endif 16 =2 17 =2 #define UART0_BaudRate_FsysDIV12 0X00 //仅模式0可用,串行端口在系统时钟的1/12下运 - 18 =2 #define UART0_BaudRate_FsysDIV4 0X01 //仅模式0可用,串行端口在系统时钟的1/4下运行 19 =2 20 =2 typedef enum { 21 =2 UART0_PinSelection_P15P16 = (uint8_t)0x00, //UART0引脚为P15,P16 22 =2 UART0_PinSelection_P11P20 = (uint8_t)0x10 //UART0引脚为P11,P20 23 =2 } UART0_PinSelection_TypeDef; 24 =2 25 =2 typedef enum { 26 =2 UART0_CLOCK_TIMER1 = (uint8_t)0X00, //TIMER1做波特率发生器 27 =2 UART0_CLOCK_TIMER2 = (uint8_t)0X30 //TIMER2做波特率发生器 28 =2 } UART0_Clock_Typedef; 29 =2 30 =2 typedef enum { 31 =2 UART0_Mode_8B = 0X00, //UART工作模式:8位半双工 32 =2 UART0_Mode_10B = 0X40, //UART工作模式:10位全双工 33 =2 UART0_Mode_11B = 0XC0 //UART工作模式:11位全双工 34 =2 } UART0_Mode_Typedef; 35 =2 36 =2 typedef enum { 37 =2 UART0_RX_ENABLE = 0x10, //允许接收数据 38 =2 UART0_RX_DISABLE = 0x00 //不允许接收数据 39 =2 } UART0_RX_Typedef; 40 =2 41 =2 typedef enum { 42 =2 UART0_FLAG_RI = 0X01, //接收中断标志位RI 43 =2 UART0_FLAG_TI = 0X02 //发送中断标志位TI 44 =2 } UART0_Flag_Typedef; 45 =2 46 =2 void UART0_DeInit(void); 47 =2 void UART0_PinSelection(UART0_PinSelection_TypeDef PinSeletion); 48 =2 void UART0_Init(uint32_t Uart0Fsys, uint32_t BaudRate, UART0_Mode_Typedef Mode, 49 =2 UART0_Clock_Typedef ClockMode, UART0_RX_Typedef RxMode); 50 =2 void UART0_SendData8(uint8_t Data); 51 =2 uint8_t UART0_ReceiveData8(void); 52 =2 void UART0_SendData9(uint16_t Data); 53 =2 uint16_t UART0_ReceiveData9(void); 54 =2 void UART0_ITConfig(FunctionalState NewState, PriorityStatus Priority); 55 =2 FlagStatus UART0_GetFlagStatus(UART0_Flag_Typedef UART0_Flag); 56 =2 void UART0_ClearFlag(UART0_Flag_Typedef UART0_Flag); 57 =2 58 =2 #endif C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 37 59 =2 60 =2 /******************* (C) COPYRIGHT 2018 SinOne Microelectronics *****END OF FILE****/ 19 =1 #include "sc92f8003_wdt.h" 1 =2 //************************************************************ 2 =2 // Copyright (c) 深圳市赛元微电子有限公司 3 =2 // 文件名称 : sc92f8003_wdt.h 4 =2 // 作者 : 5 =2 // 模块功能 : WDT固件库函数头文件 6 =2 // 局部函数列表: 7 =2 // 最后更正日期: 2018/9/4 8 =2 // 版本 : V1.0 9 =2 // 说明 : 10 =2 //************************************************************* 11 =2 12 =2 #ifndef _SC92F8003_WDT_H_ 13 =2 #define _SC92F8003_WDT_H_ 14 =2 15 =2 #include "sc92f8003.h" 1 =3 #ifndef _SC92F8003_H =3 #define _SC92F8003_H =3 =3 #include "SC92F8003_C.h" =3 #include "stdint.h" =3 =3 #define enableInterrupts() EA=1 /** 开启总中断 **/ =3 #define disableInterrupts() EA=0 /** 关闭总中断 **/ =3 =3 #define __I volatile const /*!< defines 'read only' permissions */ =3 #define __O volatile /*!< defines 'write only' permissions */ =3 #define __IO volatile /*!< defines 'read / write' permissions */ =3 /* =3 //!< Signed integer types =3 typedef signed char int8_t; =3 typedef signed short int16_t; =3 typedef signed long int32_t; =3 =3 //!< Unsigned integer types =3 typedef unsigned char uint8_t; =3 typedef unsigned short uint16_t; =3 typedef unsigned long uint32_t; =3 =3 typedef int32_t s32; =3 typedef int16_t s16; =3 typedef int8_t s8; =3 =3 typedef uint32_t u32; =3 typedef uint16_t u16; =3 typedef uint8_t u8; =3 */ =3 =3 =3 typedef enum {FALSE = 0, TRUE = !FALSE} bool; =3 =3 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus; =3 =3 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; =3 =3 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; =3 =3 typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; =3 =3 #endif C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 38 16 =2 17 =2 typedef enum { 18 =2 WDT_OverflowTime_500MS = (uint8_t)0x00, //WDT溢出时间为500MS 19 =2 WDT_OverflowTime_250MS = (uint8_t)0x01, //WDT溢出时间为250MS 20 =2 WDT_OverflowTime_125MS = (uint8_t)0x02, //WDT溢出时间为125MS 21 =2 WDT_OverflowTime_62_5MS = (uint8_t)0x03, //WDT溢出时间为62MS 22 =2 WDT_OverflowTime_31_5MS = (uint8_t)0x04, //WDT溢出时间为31MS 23 =2 WDT_OverflowTime_15_75MS = (uint8_t)0x05, //WDT溢出时间为15MS 24 =2 WDT_OverflowTime_7_88MS = (uint8_t)0x06, //WDT溢出时间为7MS 25 =2 WDT_OverflowTime_3_94MS = (uint8_t)0x07 //WDT溢出时间为4MS 26 =2 } WDT_OverflowTime_TypeDef; 27 =2 28 =2 void WDT_DeInit(void); 29 =2 void WDT_Init(WDT_OverflowTime_TypeDef OverflowTime); 30 =2 void WDT_SetReload(void); 31 =2 32 =2 #endif 33 =2 34 =2 /******************* (C) COPYRIGHT 2018 SinOne Microelectronics *****END OF FILE****/ 20 =1 21 =1 #define disable() { uint8_t pEA = EA; EA = 0; 22 =1 #define enable() EA = pEA;} 23 =1 #endif 7 8 #include "string.h" 1 =1 /*-------------------------------------------------------------------------- 2 =1 STRING.H 3 =1 4 =1 String functions. 5 =1 Copyright (c) 1988-2008 Keil Elektronik GmbH and Keil Software, Inc. 6 =1 Copyright (c) 2008-2016 ARM Germany GmbH 7 =1 All rights reserved. 8 =1 --------------------------------------------------------------------------*/ 9 =1 10 =1 #ifndef __STRING_H__ 11 =1 #define __STRING_H__ 12 =1 13 =1 #ifndef _SIZE_T 14 =1 #define _SIZE_T 15 =1 typedef unsigned int size_t; 16 =1 #endif 17 =1 18 =1 #ifndef NULL 19 =1 #define NULL ((void *)0) 20 =1 #endif 21 =1 22 =1 #pragma SAVE 23 =1 #pragma REGPARMS 24 =1 extern char *strcat (char *s1, const char *s2); 25 =1 extern char *strncat (char *s1, const char *s2, size_t n); 26 =1 27 =1 extern char strcmp (const char *s1, const char *s2); 28 =1 extern char strncmp (const char *s1, const char *s2, size_t n); 29 =1 30 =1 extern char *strcpy (char *s1, const char *s2); 31 =1 extern char *strncpy (char *s1, const char *s2, size_t n); 32 =1 33 =1 extern size_t strlen (const char *); 34 =1 35 =1 extern char *strchr (const char *s, char c); 36 =1 extern int strpos (const char *s, char c); 37 =1 extern char *strrchr (const char *s, char c); C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 39 38 =1 extern int strrpos (const char *s, char c); 39 =1 40 =1 extern size_t strspn (const char *s, const char *set); 41 =1 extern size_t strcspn (const char *s, const char *set); 42 =1 extern char *strpbrk (const char *s, const char *set); 43 =1 extern char *strrpbrk(const char *s, const char *set); 44 =1 extern char *strstr (const char *s, const char *sub); 45 =1 extern char *strtok (char *str, const char *set); 46 =1 47 =1 extern char memcmp (const void *s1, const void *s2, size_t n); 48 =1 extern void *memcpy (void *s1, const void *s2, size_t n); 49 =1 extern void *memchr (const void *s, char val, size_t n); 50 =1 extern void *memccpy (void *s1, const void *s2, char val, size_t n); 51 =1 extern void *memmove (void *s1, const void *s2, size_t n); 52 =1 extern void *memset (void *s, char val, size_t n); 53 =1 #pragma RESTORE 54 =1 55 =1 #endif 9 10 #define WRITE 0x00 11 #define READ 0x80 12 #define dummy_data 0xFF 13 static void Init_LT89_Port(void); 14 static void RST_LT89XX(void); 15 static uint8_t bCheckRadioConnection(void); 16 17 static XDATA uint8_t bConnected = false; 18 /** 19 * init LT89xx setting 20 REMOVEUNUSED 21 */ 22 23 void InitLT89xx(void) 24 { 25 1 uint8_t KPT = 0; 26 1 uint8_t len = 0; 27 1 uint8_t i = 0; 28 1 Init_LT89_Port(); 29 1 RST_LT89XX(); 30 1 //EXTI_SetExtInt1xTriggerMode(INT16, EXTI_TRIGGER_RISE_ONLY); // 31 1 //EXTI_ITConfig(INT1, ENABLE, LOW); // 32 1 len = sizeof(LT89xx_cfg)/sizeof(LT89XX_CFG); 33 1 #if EN_REG_FEED memset(LT89xx_cfg_default,0,sizeof(LT89xx_cfg_default)); #endif 36 1 for(i=0;i>8)&0xFF; 112 1 uint8_t RegL = regValue&0xFF; 113 1 LT_WriteReg(reg,RegH,RegL); 114 1 } C51 COMPILER V9.60.7.0 LT89XX 08/17/2024 22:06:33 PAGE 41 115 //---------------------------------------------------------------------------- 116 void LT_WriteReg(uint8_t reg, uint8_t RegH, uint8_t RegL) 117 { 118 1 uint8_t v1,v2,v3; 119 1 CS_LOW(); 120 1 Delay10us(); 121 1 v1 = spiReadWrite(WRITE| reg); 122 1 v2 = spiReadWrite(RegH); 123 1 v3 = spiReadWrite(RegL); 124 1 //printf("Write Register %02d 0x%02x 0x%02x 0x%02x\r\n",reg,reg,RegH,RegL); 125 1 CS_HIGH(); 126 1 Delay10us(); 127 1 _nop_(); 128 1 } 129 130 void LT_WriteBuf(uint8_t reg, uint8_t *pBuf, uint8_t len) 131 { 132 1 uint8_t i; 133 1 134 1 CS_LOW(); 135 1 spiReadWrite(WRITE |reg); //Read MSB.7=0; 136 1 spiReadWrite(len); //Lenth 137 1 //printf("Write Buffer %02d 0x%02x Buffer len = 0x%02d\r\n",reg,reg,len); 138 1 for(i=0; i63) 156 1 len=63; 157 1 for(i=0; i