C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 1 C51 COMPILER V9.60.7.0, COMPILATION OF MODULE PWM OBJECT MODULE PLACED IN .\Objects\pwm.obj COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Src\pwm.c OMF2 OPTIMIZE(8,SPEED) BROWSE INCDIR(.\Src;.\Task;.\Task\cpu_port -\S92F8003A;.\Task\cfg;.\Task\pt_thread;.\SC92F8003_Lib\Inc) DEBUG CODE LISTINCLUDE SYMBOLS PRINT(.\Listings\pwm.lst) PRE -PRINT(.\Listings\pwm.i) OBJECT(.\Objects\pwm.obj) line level source 1 #include "pwm.h" 1 =1 #ifndef _PWM_H_ 2 =1 #define _PWM_H_ 3 =1 #include "stdint.h" 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 4 =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 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 C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 2 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 5 =1 6 =1 enum ePWM_INDEX 7 =1 { 8 =1 PWM_R = 0, 9 =1 PWM_G, 10 =1 PWM_B, 11 =1 PWM_C, 12 =1 PWM_W 13 =1 }; 14 =1 15 =1 void SetPWMInfo(uint16_t *pPwmInfo,uint8_t len1) ; 16 =1 void InitPWM(void); 17 =1 void SetPWMDuty(unsigned char channel,unsigned int duty); 18 =1 void StartBlinkLED(uint8_t cnt); 19 =1 #endif 2 #include "pwm_cfg.h" 1 =1 #ifndef _PWM_CFG_H_ 2 =1 #define _PWM_H_ 3 =1 4 =1 #define PWM_FREQ 2000UL //2KHz 5 =1 6 =1 #define PWM_DEFAULT_DUTY 10UL //2KHz 7 =1 8 =1 #define GPIOR GPIO1 9 =1 #define GPIOG GPIO2 10 =1 #define GPIOB GPIO2 11 =1 #define GPIOC GPIO2 12 =1 #define GPIOW GPIO2 13 =1 14 =1 #define LED_PIN_R GPIO_PIN_0 15 =1 #define LED_PIN_G GPIO_PIN_7 16 =1 #define LED_PIN_B GPIO_PIN_6 17 =1 #define LED_PIN_C GPIO_PIN_5 18 =1 #define LED_PIN_W GPIO_PIN_4 19 =1 20 =1 21 =1 #define CHN_R 4 22 =1 #define CHN_G 3 23 =1 #define CHN_B 2 24 =1 #define CHN_C 1 25 =1 #define CHN_W 0 26 =1 27 =1 28 =1 29 =1 #endif 3 #include "task_hal_cfg.h" 1 =1 #ifndef _TASK_HAL_CFG_H_ C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 3 2 =1 #define _TASK_HAL_CFG_H_ 3 =1 4 =1 5 =1 #include 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_ 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位 C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 4 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设置寄存器 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 C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 5 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; //溢出标志位 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”。 C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 6 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 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; C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 7 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; 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 6 =1 7 =1 #define INT_EXT0 0 8 =1 #define INT_T0 1 9 =1 #define INT_EXT1 2 10 =1 #define INT_T1 3 11 =1 #define INT_UART0 4 12 =1 #define INT_T2 5 13 =1 #define INT_ADC 6 14 =1 #define INT_SSI 7 15 =1 #define INT_PWM 8 16 =1 #define INT_BTM 9 17 =1 #define INT_EXT2 10 18 =1 19 =1 20 =1 21 =1 #define GPIOR GPIO1 22 =1 #define GPIOG GPIO2 23 =1 #define GPIOB GPIO2 24 =1 #define GPIOC GPIO2 25 =1 #define GPIOW GPIO2 26 =1 27 =1 #define LEDR GPIO_PIN_0 28 =1 #define LEDG GPIO_PIN_7 29 =1 #define LEDB GPIO_PIN_6 30 =1 #define LEDC GPIO_PIN_5 31 =1 #define LEDW GPIO_PIN_4 32 =1 33 =1 34 =1 35 =1 #define FOSC 12000000UL 36 =1 #define TICKPER1S 1000UL 37 =1 38 =1 39 =1 40 =1 #endif C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 8 4 #include 1 =1 #ifndef _HAL_H_ 2 =1 #define _HAL_H_ 3 =1 #include "sc92f8003.h" 1 =2 #ifndef _SC92F8003_H =2 #define _SC92F8003_H =2 =2 #include "SC92F8003_C.h" =2 #include "stdint.h" =2 =2 #define enableInterrupts() EA=1 /** 开启总中断 **/ =2 #define disableInterrupts() EA=0 /** 关闭总中断 **/ =2 =2 #define __I volatile const /*!< defines 'read only' permissions */ =2 #define __O volatile /*!< defines 'write only' permissions */ =2 #define __IO volatile /*!< defines 'read / write' permissions */ =2 /* =2 //!< Signed integer types =2 typedef signed char int8_t; =2 typedef signed short int16_t; =2 typedef signed long int32_t; =2 =2 //!< Unsigned integer types =2 typedef unsigned char uint8_t; =2 typedef unsigned short uint16_t; =2 typedef unsigned long uint32_t; =2 =2 typedef int32_t s32; =2 typedef int16_t s16; =2 typedef int8_t s8; =2 =2 typedef uint32_t u32; =2 typedef uint16_t u16; =2 typedef uint8_t u8; =2 */ =2 =2 =2 typedef enum {FALSE = 0, TRUE = !FALSE} bool; =2 =2 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus; =2 =2 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; =2 =2 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; =2 =2 typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; =2 =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_ C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 9 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 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; C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 10 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 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 PWM 08/17/2024 22:06:31 PAGE 11 =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); 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*/ C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 12 =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位 =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设置寄存器 C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 13 =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; =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 C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 14 =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开始计数 =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; C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 15 =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 /** 开启总中断 **/ =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; C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 16 =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 =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 C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 17 =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 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); C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 18 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 =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; C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 19 =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 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" C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 20 =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 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****/ C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 21 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; =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 { C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 22 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 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" C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 23 =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 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; C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 24 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_ 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 C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 25 =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__) =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 C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 26 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 */ =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; C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 27 =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在空闲状态下为高电平 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; C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 28 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) 深圳市赛元微电子有限公司 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 C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 29 =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; 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 C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 30 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; =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 C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 31 =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 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 C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 32 =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) //向上/向下计数模式 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 //************************************************************ C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 33 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; =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下运行 C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 34 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 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" C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 35 =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 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;} C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 36 23 =1 #endif 5 #include 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); 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 6 7 8 #define PWM_LOAD (FOSC/8UL/PWM_FREQ-1) //PWM_LOAD = FOSC/FREQ/PreScale-1 //FREQ = F -OSC/(PreScale*(PWMLOAD+1)) 9 C51 COMPILER V9.60.7.0 PWM 08/17/2024 22:06:31 PAGE 37 10 XDATA uint8_t PWMInfo[9]; 11 void InitPWMTimer(void) 12 { 13 1 uint16_t Light = PWM_DEFAULT_DUTY; 14 1 int j; 15 1 16 1 uint16_t PWMValue = PWM_LOAD; 17 1 PWM_Init(PWM_PRESSEL_FOSC_D8, PWMValue); //PWM时钟源8分频,周期为(PWM_LO -AD+1)*8/FOSC 18 1 19 1 PWM_OutputStateConfig(PWM0, PWM_OUTPUTSTATE_ENABLE);//使能PWM0 20 1 PWM_OutputStateConfig(PWM1, PWM_OUTPUTSTATE_ENABLE);//使能PWM1 21 1 PWM_OutputStateConfig(PWM2, PWM_OUTPUTSTATE_ENABLE);//使能PWM2 22 1 PWM_OutputStateConfig(PWM3, PWM_OUTPUTSTATE_ENABLE);//使能PWM3 23 1 PWM_OutputStateConfig(PWM4, PWM_OUTPUTSTATE_ENABLE);//使能PWM4 24 1 25 1 PWM_PolarityConfig(PWM0, PWM_POLARITY_NON_INVERT); //设置PWM0不反向 26 1 PWM_PolarityConfig(PWM1, PWM_POLARITY_NON_INVERT); //设置PWM1不反向 27 1 PWM_PolarityConfig(PWM2, PWM_POLARITY_NON_INVERT); //设置PWM2不反向 28 1 PWM_PolarityConfig(PWM3, PWM_POLARITY_NON_INVERT); //设置PWM3不反向 29 1 PWM_PolarityConfig(PWM4, PWM_POLARITY_NON_INVERT); //设置PWM4不反向 30 1 31 1 PWM_Cmd(ENABLE); //打开PWM总开关 32 1 33 1 for( j=0;j<5;j++) 34 1 { 35 2 SetPWMDuty(j,Light); 36 2 } 37 1 //PWM_ITConfig(ENABLE, LOW); //打开PWM中断 38 1 } 39 40 void InitPWM(void) 41 { 42 1 GPIO_Init(GPIOR,LED_PIN_R,GPIO_MODE_OUT_PP); 43 1 GPIO_Init(GPIOG,LED_PIN_G,GPIO_MODE_OUT_PP); 44 1 GPIO_Init(GPIOB,LED_PIN_B,GPIO_MODE_OUT_PP); 45 1 GPIO_Init(GPIOC,LED_PIN_C,GPIO_MODE_OUT_PP); 46 1 GPIO_Init(GPIOW,LED_PIN_W,GPIO_MODE_OUT_PP); 47 1 InitPWMTimer(); 48 1 } 49 50 51 code PWM_OutputPin_TypeDef PWMChl[] = {PWM0,PWM1,PWM2,PWM3,PWM4,PWM5}; 52 void SetPWMDuty(unsigned char channel,unsigned int duty) 53 { 54 1 PWM_IndependentModeConfig(PWMChl[channel],duty); 55 1 } 56 57 void SetPWMInfo(uint16_t *pPwmInfo,uint8_t len1) 58 { 59 1 uint8_t i = 0; 60 1 for(i=0;i