C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 1 C51 COMPILER V9.60.7.0, COMPILATION OF MODULE TASK_HAL OBJECT MODULE PLACED IN .\Objects\task_hal.obj COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Task\cpu_port\S92F8003A\task_hal.c OMF2 OPTIMIZE(8,SPEED) BROWSE INCDIR(.\S -rc;.\Task;.\Task\cpu_port\S92F8003A;.\Task\cfg;.\Task\pt_thread;.\SC92F8003_Lib\Inc) DEBUG CODE LISTINCLUDE SYMBOLS PRIN -T(.\Listings\task_hal.lst) PREPRINT(.\Listings\task_hal.i) OBJECT(.\Objects\task_hal.obj) line level source 1 #include "task_hal.h" 1 =1 #ifndef _TASK_HAL_H_ 2 =1 #define _TASK_HAL_H_ 3 =1 4 =1 5 =1 #include "intrins.h" 1 =2 /*-------------------------------------------------------------------------- 2 =2 INTRINS.H 3 =2 4 =2 Intrinsic functions for C51. 5 =2 Copyright (c) 1988-2010 Keil Elektronik GmbH and ARM Germany GmbH 6 =2 All rights reserved. 7 =2 --------------------------------------------------------------------------*/ 8 =2 9 =2 #ifndef __INTRINS_H__ 10 =2 #define __INTRINS_H__ 11 =2 12 =2 #pragma SAVE 13 =2 14 =2 #if defined (__CX2__) =2 #pragma FUNCTIONS(STATIC) =2 /* intrinsic functions are reentrant, but need static attribute */ =2 #endif 18 =2 19 =2 extern void _nop_ (void); 20 =2 extern bit _testbit_ (bit); 21 =2 extern unsigned char _cror_ (unsigned char, unsigned char); 22 =2 extern unsigned int _iror_ (unsigned int, unsigned char); 23 =2 extern unsigned long _lror_ (unsigned long, unsigned char); 24 =2 extern unsigned char _crol_ (unsigned char, unsigned char); 25 =2 extern unsigned int _irol_ (unsigned int, unsigned char); 26 =2 extern unsigned long _lrol_ (unsigned long, unsigned char); 27 =2 extern unsigned char _chkfloat_(float); 28 =2 #if defined (__CX2__) =2 extern int abs (int); =2 extern void _illop_ (void); =2 #endif 32 =2 #if !defined (__CX2__) 33 =2 extern void _push_ (unsigned char _sfr); 34 =2 extern void _pop_ (unsigned char _sfr); 35 =2 #endif 36 =2 37 =2 #pragma RESTORE 38 =2 39 =2 #endif 40 =2 6 =1 #include "task_hal_cfg.h" 1 =2 #ifndef _TASK_HAL_CFG_H_ 2 =2 #define _TASK_HAL_CFG_H_ 3 =2 4 =2 5 =2 #include 1 =3 #ifndef _SC92F8003_H C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 2 2 =3 #define _SC92F8003_H 3 =3 4 =3 #include "SC92F8003_C.H" 1 =4 /*-------------------------------------------------------------------------- 2 =4 SC92F8003_C.H 3 =4 4 =4 C Header file for SC92F8003 microcontroller. 5 =4 Copyright (c) 2018 Shenzhen SinOne Chip Electronic CO., Ltd. 6 =4 All rights reserved. 7 =4 深圳市赛元微电子有限公司 8 =4 版本号: V1.0 9 =4 日期: 2018.05.02 10 =4 --------------------------------------------------------------------------*/ 11 =4 #ifndef _SC92F8003_H_ 12 =4 #define _SC92F8003_H_ 13 =4 14 =4 /* ------------------- 字节寄存器-------------------- */ 15 =4 ///*CPU*/ 16 =4 sfr ACC = 0xE0; //累加器A 17 =4 sfr B = 0xF0; //通用寄存器B 18 =4 sfr PSW = 0xD0; //程序状态字 19 =4 sfr DPH = 0x83; //数据指针高8位 20 =4 sfr DPL = 0x82; //数据指针低8位 21 =4 sfr SP = 0x81; //堆栈指针 22 =4 23 =4 24 =4 /*system*/ 25 =4 sfr PCON = 0x87; //电源管理控制寄存器 26 =4 27 =4 /*interrupt*/ 28 =4 sfr IP1 = 0XB9; //中断优先级控制寄存器1 29 =4 sfr IP = 0xB8; //中断优先权控制寄存器 30 =4 sfr IE = 0xA8; //中断控制寄存器 31 =4 sfr IE1 = 0XA9; //中断控制寄存器1 32 =4 33 =4 /*PORT*/ 34 =4 sfr P2PH = 0xA2; //P2口模式控制寄存器 35 =4 sfr P2CON = 0xA1; //P2口模式控制寄存器 36 =4 sfr P2 = 0xA0; //P2口数据寄存器 37 =4 sfr P1PH = 0x92; //P1口模式控制寄存器 38 =4 sfr P1CON = 0x91; //P1口模式控制寄存器 39 =4 sfr P1 = 0x90; //P1口数据寄存器 40 =4 sfr P0PH = 0x9B; //P0口模式控制寄存器 41 =4 sfr P0CON = 0x9A; //P0口模式控制寄存器 42 =4 sfr P0 = 0x80; //P0口数据寄存器 43 =4 44 =4 /*TIMER*/ 45 =4 sfr TMCON = 0x8E; //定时器频率控制寄存器 46 =4 sfr TH1 = 0x8D; //定时器1高8位 47 =4 sfr TH0 = 0x8C; //定时器0高8位 48 =4 sfr TL1 = 0x8B; //定时器1低8位 49 =4 sfr TL0 = 0x8A; //定时器0低8位 50 =4 sfr TMOD = 0x89; //定时器工作模式寄存器 51 =4 sfr TCON = 0x88; //定时器控制寄存器 52 =4 sfr T2CON = 0xC8; //定时器2控制寄存器 53 =4 sfr T2MOD = 0xC9; //定时器2工作模式寄存器 54 =4 sfr RCAP2L = 0xCA; //定时器2重载/捕捉低8位 55 =4 sfr RCAP2H = 0xCB; //定时器2重载/捕捉高8位 56 =4 sfr TL2 = 0xCC; //定时器2低8位 57 =4 sfr TH2 = 0xCD; //定时器2高8位 58 =4 59 =4 C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 3 60 =4 /*ADC*/ 61 =4 sfr ADCCFG1 = 0xAA; //ADC功能配置寄存器0 62 =4 sfr ADCCFG0 = 0xAB; //ADC功能配置寄存器1 63 =4 sfr ADCCON = 0XAD; //ADC控制寄存器 64 =4 sfr ADCVL = 0xAE; //ADC 结果寄存器 65 =4 sfr ADCVH = 0xAF; //ADC 结果寄存器 66 =4 67 =4 /*PWM*/ 68 =4 sfr PWMCFG = 0xD1; //PWM设置寄存器 69 =4 sfr PWMCON0 = 0xD2; //PWM控制寄存器 70 =4 sfr PWMPRD = 0xD3; //PWM周期设置寄存器 71 =4 sfr PWMDTYA = 0xD4; //PWM占空比设置寄存器A 72 =4 sfr PWMDTY0 = 0xD5; //PWM0设置寄存器 73 =4 sfr PWMDTY1 = 0xD6; //PWM1设置寄存器 74 =4 sfr PWMDTY2 = 0xD7; //PWM2设置寄存器 75 =4 sfr PWMCON1 = 0xDA; //PWM控制寄存器 76 =4 sfr PWMDTYB = 0xDB; //PWM占空比设置寄存器B 77 =4 sfr PWMDTY3 = 0xDC; //PWM3设置寄存器 78 =4 sfr PWMDTY4 = 0xDD; //PWM4设置寄存器 79 =4 sfr PWMDTY5 = 0xDE; //PWM5设置寄存器 80 =4 sfr PWMDTY6 = 0xDF; //PWM6设置寄存器 81 =4 82 =4 83 =4 // 84 =4 ///*WatchDog*/ 85 =4 sfr BTMCON = 0XCE; //低频定时器控制寄存器 86 =4 sfr WDTCON = 0xCF; //WDT控制寄存器 87 =4 88 =4 89 =4 sfr OTCON = 0X8F; //输出控制寄存器 90 =4 91 =4 /*INT*/ 92 =4 sfr INT0F = 0XBA; //INT0 下降沿中断控制寄存器 93 =4 sfr INT0R = 0XBB; //INT0 上降沿中断控制寄存器 94 =4 sfr INT1F = 0XBC; //INT1 下降沿中断控制寄存器 95 =4 sfr INT1R = 0XBD; //INT1 上降沿中断控制寄存器 96 =4 sfr INT2F = 0XC6; //INT2 下降沿中断控制寄存器 97 =4 sfr INT2R = 0XC7; //INT2 上降沿中断控制寄存器 98 =4 99 =4 /*IAP */ 100 =4 sfr IAPCTL = 0xF6; //IAP控制寄存器 101 =4 sfr IAPDAT = 0xF5; //IAP数据寄存器 102 =4 sfr IAPADE = 0xF4; //IAP扩展地址寄存器 103 =4 sfr IAPADH = 0xF3; //IAP写入地址高位寄存器 104 =4 sfr IAPADL = 0xF2; //IAP写入地址低8位寄存器 105 =4 sfr IAPKEY = 0xF1; //IAP保护寄存器 106 =4 107 =4 /*uart0*/ 108 =4 sfr SCON = 0X98; //uart控制寄存器 109 =4 sfr SBUF = 0X99; //uart0数据寄存器 110 =4 111 =4 /*三合一*/ 112 =4 sfr SSCON0 = 0X9D; //SSI控制寄存器0 113 =4 sfr SSCON1 = 0X9E; //SSI控制寄存器1 114 =4 sfr SSCON2 = 0X95; //SSI控制寄存器2 115 =4 sfr SSDAT = 0X9F; //SSI数据寄存器 116 =4 117 =4 sfr OPINX = 0XFE; 118 =4 sfr OPREG = 0XFF; 119 =4 120 =4 /*Check Sum*/ 121 =4 sfr CHKSUML = 0XFC; //Check Sum结果寄存器低位 C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 4 122 =4 sfr CHKSUMH = 0XFD; //Check Sum结果寄存器高位 123 =4 124 =4 sfr OPERCON = 0xEF; //运算控制寄存器 125 =4 126 =4 ///* ------------------- 位寄存器-------------------- */ 127 =4 /*PSW*/ 128 =4 sbit CY = PSW^7; //标志位 0:加法运算最高位无进位,或者减法运算最高位无借位时 1:加法运算最高位有进 -位,或者减法运算最高位有借位时 129 =4 sbit AC = PSW^6; //进位辅助标志位 0:无借位、进位 1:加法运算时在bit3位有进位,或减法运算在bit3位有 -栉皇 130 =4 sbit F0 = PSW^5; //用户标志位 131 =4 sbit RS1 = PSW^4; //工作寄存器组选择位 132 =4 sbit RS0 = PSW^3; //工作寄存器组选择位 133 =4 sbit OV = PSW^2; //溢出标志位 134 =4 sbit F1 = PSW^1; //F1标志 135 =4 sbit P = PSW^0; //奇偶标志位 0:ACC中1的个数为偶数(包括0个) 1:ACC中1的个数为奇数 136 =4 137 =4 /*T2CON*/ 138 =4 sbit TF2 = T2CON^7; 139 =4 sbit EXF2 = T2CON^6; 140 =4 sbit RCLK = T2CON^5; 141 =4 sbit TCLK = T2CON^4; 142 =4 sbit EXEN2 = T2CON^3; 143 =4 sbit TR2 = T2CON^2; 144 =4 sbit T2 = T2CON^1; 145 =4 sbit CP = T2CON^0; 146 =4 147 =4 148 =4 /*IP*/ 149 =4 sbit IPADC = IP^6; //ADC中断优先控制位 0:设定 ADC的中断优先权是 “低” 1:设定 ADC的中断优先权是 “高 - 150 =4 sbit IPT2 = IP^5; //PWM中断优先控制位 0:设定 PWM的中断优先权是 “低” 1:设定 PWM 的中断优先权是 “高 -” 151 =4 sbit IPUART = IP^4; //SIF中断优先控制位 0:设定 SIF的中断优先权是 “低” 1:设定 SIF的中断优先权是 “高 - 152 =4 sbit IPT1 = IP^3; //Timer1中断优先控制位 0:设定 Timer 1的中断优先权是 “低” 1:设定 Timer 1的中断优先 -ㄊ “高” 153 =4 sbit IPINT1 = IP^2; //32K Base Timer中断优先控制位 0:设定 32K的中断优先权是 “低” 1:设定 32K的中断优 -先权是 “高” 154 =4 sbit IPT0 = IP^1; //Timer0中断优先控制位 0:设定 Timer 0的中断优先权是 “低” 1:设定 Timer 0的中断优先 -ㄊ “高” 155 =4 sbit IPINT0 = IP^0; 156 =4 157 =4 /*IE*/ 158 =4 sbit EA = IE^7; //中断使能的总控制 0:关闭所有的中断 1:打开所有的中断 159 =4 sbit EADC = IE^6; //ADC中断使能控制 0:关闭ADC中断 1:打开ADC中断 160 =4 sbit ET2 = IE^5; //PWM中断使能控制 0:关闭PWM中断 1:打开PWM中断 161 =4 sbit EUART = IE^4; //UART中断使能控制 0:关闭SIF中断 1:打开SIF中断 162 =4 sbit ET1 = IE^3; //Timer1中断使能控制 0:关闭TIMER1中断 1:打开TIMER1中断 163 =4 sbit EINT1 = IE^2; //32K Base Timer中断使能控制 0:关闭32K中断 1:打开32K中断 164 =4 sbit ET0 = IE^1; //Timer0中断使能控制 0:关闭TIMER0中断 1:打开TIMER0中断 165 =4 sbit EINT0 = IE^0; //TouchKey的中断使能控制 0:关闭TouchKey中断 1:打开TouchKey中断 166 =4 167 =4 /*TCON*/ 168 =4 sbit TF1 = TCON^7; //T1溢出中断请求标志位 T1产生溢出,发生中断时,硬件将TF1置为“1”,申请中断,CPU -响应时,硬件清“0”。 169 =4 sbit TR1 = TCON^6; //定时器T1的运行控制位 0:Timer1禁止计数 1:Timer1开始计数 170 =4 sbit TF0 = TCON^5; //T0溢出中断请求标志位 T0产生溢出,发生中断时,硬件将TF0置为“1”,申请中断,CPU -响应时,硬件清“0”。 171 =4 sbit TR0 = TCON^4; //定时器T0的运行控制位 0:Timer0禁止计数 1:Timer0开始计数 172 =4 173 =4 /*SCON*/ C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 5 174 =4 sbit SM0 = SCON^7; 175 =4 sbit SM1 = SCON^6; 176 =4 sbit SM2 = SCON^5; 177 =4 sbit REN = SCON^4; 178 =4 sbit TB8 = SCON^3; 179 =4 sbit RB8 = SCON^2; 180 =4 sbit TI = SCON^1; 181 =4 sbit RI = SCON^0; 182 =4 183 =4 /* P0 */ 184 =4 sbit P01 = P0^1; 185 =4 sbit P00 = P0^0; 186 =4 187 =4 /* P1 */ 188 =4 sbit P17 = P1^7; 189 =4 sbit P16 = P1^6; 190 =4 sbit P15 = P1^5; 191 =4 sbit P14 = P1^4; 192 =4 sbit P13 = P1^3; 193 =4 sbit P12 = P1^2; 194 =4 sbit P11 = P1^1; 195 =4 sbit P10 = P1^0; 196 =4 197 =4 /* P2 */ 198 =4 sbit P27 = P2^7; 199 =4 sbit P26 = P2^6; 200 =4 sbit P25 = P2^5; 201 =4 sbit P24 = P2^4; 202 =4 sbit P23 = P2^3; 203 =4 sbit P22 = P2^2; 204 =4 sbit P21 = P2^1; 205 =4 sbit P20 = P2^0; 206 =4 207 =4 #endif 5 =3 6 =3 #define enableInterrupts() EA=1 /** 开启总中断 **/ 7 =3 #define disableInterrupts() EA=0 /** 关闭总中断 **/ 8 =3 9 =3 #define __I volatile const /*!< defines 'read only' permissions */ 10 =3 #define __O volatile /*!< defines 'write only' permissions */ 11 =3 #define __IO volatile /*!< defines 'read / write' permissions */ 12 =3 13 =3 /*!< Signed integer types */ 14 =3 typedef signed char int8_t; 15 =3 typedef signed short int16_t; 16 =3 typedef signed long int32_t; 17 =3 18 =3 /*!< Unsigned integer types */ 19 =3 typedef unsigned char uint8_t; 20 =3 typedef unsigned short uint16_t; 21 =3 typedef unsigned long uint32_t; 22 =3 23 =3 typedef int32_t s32; 24 =3 typedef int16_t s16; 25 =3 typedef int8_t s8; 26 =3 27 =3 typedef uint32_t u32; 28 =3 typedef uint16_t u16; 29 =3 typedef uint8_t u8; 30 =3 31 =3 32 =3 typedef enum {FALSE = 0, TRUE = !FALSE} bool; C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 6 33 =3 34 =3 typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus, BitStatus; 35 =3 36 =3 typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; 37 =3 38 =3 typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; 39 =3 40 =3 typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; 41 =3 42 =3 #endif 6 =2 7 =2 #define INT_EXT0 0 8 =2 #define INT_T0 1 9 =2 #define INT_EXT1 2 10 =2 #define INT_T1 3 11 =2 #define INT_UART0 4 12 =2 #define INT_T2 5 13 =2 #define INT_ADC 6 14 =2 #define INT_SSI 7 15 =2 #define INT_PWM 8 16 =2 #define INT_BTM 9 17 =2 #define INT_EXT2 10 18 =2 19 =2 20 =2 21 =2 #endif 7 =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 16 =4 #endif /* __LC_SWITCH_H__ */ 17 =4 18 =4 /** @} */ 9 =3 #endif 10 =3 11 =3 #endif 6 =2 C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 7 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 #define PT_INIT(pt) LC_INIT((pt)->lc) 22 =2 #define PT_THREAD(name_args) int8_t name_args 23 =2 #define PT_BEGIN(pt) { int8_t PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc) 24 =2 #define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \ 25 =2 UNUSED_PARAM(PT_YIELD_FLAG );\ 26 =2 PT_INIT(pt); return PT_ENDED; } 27 =2 28 =2 29 =2 //绛夊緟鏉′欢鎴愮珛,濡傛灉涓嶆垚绔,缁х画绛夊緟 30 =2 #define PT_WAIT_UNTIL(pt, condition) \ 31 =2 do { \ 32 =2 LC_SET((pt)->lc); \ 33 =2 if(!(condition)) { \ 34 =2 return PT_WAITING; \ 35 =2 } \ 36 =2 } while(0) 37 =2 38 =2 //涓鐩寸瓑寰,鐩村埌鏉′欢涓嶆垚绔 39 =2 #define PT_WAIT_WHILE(pt, cond) PT_WAIT_UNTIL((pt), !(cond)) 40 =2 //绛夊緟瀛愮嚎绋嬮鍑 41 =2 #define PT_WAIT_THREAD(pt, thread) PT_WAIT_WHILE((pt), PT_SCHEDULE(thread)) 42 =2 43 =2 //鍚姩瀛愮嚎绋,绛夊緟瀛愮嚎绋嬮鍑,濡傛灉涓嶉鍑,鍦ㄦ闃诲 44 =2 #define PT_SPAWN(pt, child, thread) \ 45 =2 do { \ 46 =2 PT_INIT((child)); \ 47 =2 PT_WAIT_THREAD((pt), (thread)); \ 48 =2 } while(0) 49 =2 50 =2 //閲嶆柊鍚姩绾跨▼,浠庡ご寮濮 51 =2 #define PT_RESTART(pt) \ 52 =2 do { \ 53 =2 PT_INIT(pt); \ 54 =2 return PT_WAITING; \ 55 =2 } while(0) 56 =2 57 =2 //閫鍑虹嚎绋 58 =2 #define PT_EXIT(pt) \ 59 =2 do { \ 60 =2 PT_INIT(pt); \ 61 =2 return PT_EXITED; \ 62 =2 } while(0) 63 =2 //瀛愮嚎绋嬫槸鍚﹂鍑 64 =2 #define PT_SCHEDULE(f) ((f) < PT_EXITED) 65 =2 66 =2 //閿佹浠诲姟 67 =2 #define PT_YIELD(pt) \ 68 =2 do { \ C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 8 69 =2 PT_YIELD_FLAG = 0; \ 70 =2 LC_SET((pt)->lc); \ 71 =2 if(PT_YIELD_FLAG == 0) { \ 72 =2 return PT_YIELDED; \ 73 =2 } \ 74 =2 } while(0) 75 =2 76 =2 //閿佹浠诲姟鐩村埌绗﹀悎鏉′欢 77 =2 #define PT_YIELD_UNTIL(pt, cond) \ 78 =2 do { \ 79 =2 PT_YIELD_FLAG = 0; \ 80 =2 LC_SET((pt)->lc); \ 81 =2 if((PT_YIELD_FLAG == 0) || !(cond)) { \ 82 =2 return PT_YIELDED; \ 83 =2 } \ 84 =2 } while(0) 85 =2 86 =2 87 =2 #endif /* __PT_H__ */ 8 =1 9 =1 #define GPIOR GPIO1 10 =1 #define GPIOG GPIO2 11 =1 #define GPIOB GPIO2 12 =1 #define GPIOC GPIO2 13 =1 #define GPIOW GPIO2 14 =1 15 =1 #define LEDR GPIO_PIN_0 16 =1 #define LEDG GPIO_PIN_7 17 =1 #define LEDB GPIO_PIN_6 18 =1 #define LEDC GPIO_PIN_5 19 =1 #define LEDW GPIO_PIN_4 20 =1 21 =1 22 =1 typedef void (* func )(void); 23 =1 24 =1 void Idle(void); 25 =1 void Init(void); 26 =1 void InitWdt(void); 27 =1 void InitPort(void); 28 =1 29 =1 void SysTick_Handler(void); 30 =1 void Task_SysTick_Handler(void); 31 =1 32 =1 PT_THREAD(TaskBlinLed(struct pt *pt1 )); 33 =1 PT_THREAD(TaskWDT(struct pt *pt1 )); 34 =1 35 =1 36 =1 37 =1 #endif 2 #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__ =2 #define __PT_H__ =2 =2 #include "lc.h" =2 =2 struct pt { =2 lc_t lc; =2 }; C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 9 =2 =2 =2 #ifndef UNUSED_PARAM =2 #define UNUSED_PARAM(v) (void)(v) =2 #endif =2 =2 #define PT_WAITING 0 //绛夊緟 =2 #define PT_YIELDED 1 //閿佹绾跨▼ =2 #define PT_EXITED 2 //閫鍑 =2 #define PT_ENDED 3 //缁撴潫 =2 =2 #define PT_INIT(pt) LC_INIT((pt)->lc) =2 #define PT_THREAD(name_args) int8_t name_args =2 #define PT_BEGIN(pt) { int8_t PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc) =2 #define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \ =2 UNUSED_PARAM(PT_YIELD_FLAG );\ =2 PT_INIT(pt); return PT_ENDED; } =2 =2 =2 //绛夊緟鏉′欢鎴愮珛,濡傛灉涓嶆垚绔,缁х画绛夊緟 =2 #define PT_WAIT_UNTIL(pt, condition) \ =2 do { \ =2 LC_SET((pt)->lc); \ =2 if(!(condition)) { \ =2 return PT_WAITING; \ =2 } \ =2 } while(0) =2 =2 //涓鐩寸瓑寰,鐩村埌鏉′欢涓嶆垚绔 =2 #define PT_WAIT_WHILE(pt, cond) PT_WAIT_UNTIL((pt), !(cond)) =2 //绛夊緟瀛愮嚎绋嬮鍑 =2 #define PT_WAIT_THREAD(pt, thread) PT_WAIT_WHILE((pt), PT_SCHEDULE(thread)) =2 =2 //鍚姩瀛愮嚎绋,绛夊緟瀛愮嚎绋嬮鍑,濡傛灉涓嶉鍑,鍦ㄦ闃诲 =2 #define PT_SPAWN(pt, child, thread) \ =2 do { \ =2 PT_INIT((child)); \ =2 PT_WAIT_THREAD((pt), (thread)); \ =2 } while(0) =2 =2 //閲嶆柊鍚姩绾跨▼,浠庡ご寮濮 =2 #define PT_RESTART(pt) \ =2 do { \ =2 PT_INIT(pt); \ =2 return PT_WAITING; \ =2 } while(0) =2 =2 //閫鍑虹嚎绋 =2 #define PT_EXIT(pt) \ =2 do { \ =2 PT_INIT(pt); \ =2 return PT_EXITED; \ =2 } while(0) =2 //瀛愮嚎绋嬫槸鍚﹂鍑 =2 #define PT_SCHEDULE(f) ((f) < PT_EXITED) =2 =2 //閿佹浠诲姟 =2 #define PT_YIELD(pt) \ =2 do { \ =2 PT_YIELD_FLAG = 0; \ =2 LC_SET((pt)->lc); \ =2 if(PT_YIELD_FLAG == 0) { \ C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 10 =2 return PT_YIELDED; \ =2 } \ =2 } while(0) =2 =2 //閿佹浠诲姟鐩村埌绗﹀悎鏉′欢 =2 #define PT_YIELD_UNTIL(pt, cond) \ =2 do { \ =2 PT_YIELD_FLAG = 0; \ =2 LC_SET((pt)->lc); \ =2 if((PT_YIELD_FLAG == 0) || !(cond)) { \ =2 return PT_YIELDED; \ =2 } \ =2 } while(0) =2 =2 =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 14 =1 #endif 3 #include "main.h" 1 =1 #ifndef _MAIN_H_ 2 =1 #define _MAIN_H_ 3 =1 4 =1 #include "task.h" 1 =2 #ifndef _TASK_H_ 2 =2 #define _TASK_H_ 3 =2 4 =2 #include "cfg/al_helper.h" 1 =3 /* 2 =3 * taskdef.h 3 =3 * 4 =3 * Created on: 2023-4-20 5 =3 * Author: xukaiming 6 =3 */ 7 =3 8 =3 #ifndef _AL_HELPER_H_ 9 =3 #define _AL_HELPER_H_ 10 =3 11 =3 #ifdef __cplusplus =3 extern "C" { =3 #endif 14 =3 15 =3 #define AL_STATIC 16 =3 17 =3 18 =3 #ifdef __cplusplus =3 } =3 #endif 21 =3 22 =3 #endif 23 =3 5 =2 #include "cfg/task_cfg.h" 1 =3 /* 2 =3 * taskdef.h C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 11 3 =3 * 4 =3 * Created on: 2023-4-20 5 =3 * Author: xukaiming 6 =3 */ 7 =3 8 =3 #ifndef _TASK_CFG_H_ 9 =3 #define _TASK_CFG_H_ 10 =3 11 =3 #ifdef __cplusplus =3 extern "C" { =3 #endif 14 =3 15 =3 #define AL_STATIC 16 =3 17 =3 18 =3 #define TASK_NAME_LEN 16 19 =3 #define MAX_TIMER 5 // the number of timer can be used 20 =3 #define TICK_PER_S 1000 //1S涓墦鐐1000娆 21 =3 22 =3 23 =3 24 =3 25 =3 #ifdef __cplusplus =3 } =3 #endif 28 =3 29 =3 #endif 30 =3 6 =2 #include "task_hal.h" 1 =3 #ifndef _TASK_HAL_H_ =3 #define _TASK_HAL_H_ =3 =3 =3 #include "intrins.h" =3 #include "task_hal_cfg.h" =3 #include "pt.h" =3 =3 #define GPIOR GPIO1 =3 #define GPIOG GPIO2 =3 #define GPIOB GPIO2 =3 #define GPIOC GPIO2 =3 #define GPIOW GPIO2 =3 =3 #define LEDR GPIO_PIN_0 =3 #define LEDG GPIO_PIN_7 =3 #define LEDB GPIO_PIN_6 =3 #define LEDC GPIO_PIN_5 =3 #define LEDW GPIO_PIN_4 =3 =3 =3 typedef void (* func )(void); =3 =3 void Idle(void); =3 void Init(void); =3 void InitWdt(void); =3 void InitPort(void); =3 =3 void SysTick_Handler(void); =3 void Task_SysTick_Handler(void); =3 =3 PT_THREAD(TaskBlinLed(struct pt *pt1 )); =3 PT_THREAD(TaskWDT(struct pt *pt1 )); C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 12 =3 =3 =3 =3 #endif 7 =2 8 =2 #include "pt_thread/pt_header.h" 1 =3 #ifndef _PT_HEADER_H_ 2 =3 #define _PT_HEADER_H_ 3 =3 4 =3 #include "pt_timer.h" 1 =4 #ifndef _PT_TIMER_H_ =4 #define _PT_TIMER_H_ =4 #include "pt.h" =4 =4 =4 struct timer { =4 unsigned long start; //璁板綍鍚姩鏃剁殑tick鍊 =4 unsigned long interval; //瑕佸畾鏃剁殑tick鏁 =4 }; =4 =4 void timer_set(struct timer *t, unsigned long interval); =4 unsigned char timer_expired(struct timer *t); =4 =4 #endif 5 =3 #include "pt-sem.h" 1 =4 /* 2 =4 #include "pt-sem.h" 3 =4 4 =4 #define NUM_ITEMS 32 5 =4 #define BUFSIZE 8 6 =4 7 =4 static struct pt_sem mutex, full, empty; 8 =4 9 =4 PT_THREAD(producer(struct pt *pt)) 10 =4 { 11 =4 static int produced; 12 =4 13 =4 PT_BEGIN(pt); 14 =4 15 =4 for(produced = 0; produced < NUM_ITEMS; ++produced) { 16 =4 17 =4 PT_SEM_WAIT(pt, &full); 18 =4 19 =4 PT_SEM_WAIT(pt, &mutex); 20 =4 add_to_buffer(produce_item()); 21 =4 PT_SEM_SIGNAL(pt, &mutex); 22 =4 23 =4 PT_SEM_SIGNAL(pt, &empty); 24 =4 } 25 =4 26 =4 PT_END(pt); 27 =4 } 28 =4 29 =4 PT_THREAD(consumer(struct pt *pt)) 30 =4 { 31 =4 static int consumed; 32 =4 33 =4 PT_BEGIN(pt); 34 =4 35 =4 for(consumed = 0; consumed < NUM_ITEMS; ++consumed) { 36 =4 37 =4 PT_SEM_WAIT(pt, &empty); C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 13 38 =4 39 =4 PT_SEM_WAIT(pt, &mutex); 40 =4 consume_item(get_from_buffer()); 41 =4 PT_SEM_SIGNAL(pt, &mutex); 42 =4 43 =4 PT_SEM_SIGNAL(pt, &full); 44 =4 } 45 =4 46 =4 PT_END(pt); 47 =4 } 48 =4 49 =4 PT_THREAD(driver_thread(struct pt *pt)) 50 =4 { 51 =4 static struct pt pt_producer, pt_consumer; 52 =4 53 =4 PT_BEGIN(pt); 54 =4 55 =4 PT_SEM_INIT(&empty, 0); 56 =4 PT_SEM_INIT(&full, BUFSIZE); 57 =4 PT_SEM_INIT(&mutex, 1); 58 =4 59 =4 PT_INIT(&pt_producer); 60 =4 PT_INIT(&pt_consumer); 61 =4 62 =4 PT_WAIT_THREAD(pt, producer(&pt_producer) & 63 =4 consumer(&pt_consumer)); 64 =4 65 =4 PT_END(pt); 66 =4 } 67 =4 */ 68 =4 69 =4 #ifndef __PT_SEM_H__ 70 =4 #define __PT_SEM_H__ 71 =4 72 =4 #include "pt.h" 1 =5 2 =5 #ifndef __PT_H__ =5 #define __PT_H__ =5 =5 #include "lc.h" =5 =5 struct pt { =5 lc_t lc; =5 }; =5 =5 =5 #ifndef UNUSED_PARAM =5 #define UNUSED_PARAM(v) (void)(v) =5 #endif =5 =5 #define PT_WAITING 0 //绛夊緟 =5 #define PT_YIELDED 1 //閿佹绾跨▼ =5 #define PT_EXITED 2 //閫鍑 =5 #define PT_ENDED 3 //缁撴潫 =5 =5 #define PT_INIT(pt) LC_INIT((pt)->lc) =5 #define PT_THREAD(name_args) int8_t name_args =5 #define PT_BEGIN(pt) { int8_t PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc) =5 #define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \ =5 UNUSED_PARAM(PT_YIELD_FLAG );\ =5 PT_INIT(pt); return PT_ENDED; } =5 C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 14 =5 =5 //绛夊緟鏉′欢鎴愮珛,濡傛灉涓嶆垚绔,缁х画绛夊緟 =5 #define PT_WAIT_UNTIL(pt, condition) \ =5 do { \ =5 LC_SET((pt)->lc); \ =5 if(!(condition)) { \ =5 return PT_WAITING; \ =5 } \ =5 } while(0) =5 =5 //涓鐩寸瓑寰,鐩村埌鏉′欢涓嶆垚绔 =5 #define PT_WAIT_WHILE(pt, cond) PT_WAIT_UNTIL((pt), !(cond)) =5 //绛夊緟瀛愮嚎绋嬮鍑 =5 #define PT_WAIT_THREAD(pt, thread) PT_WAIT_WHILE((pt), PT_SCHEDULE(thread)) =5 =5 //鍚姩瀛愮嚎绋,绛夊緟瀛愮嚎绋嬮鍑,濡傛灉涓嶉鍑,鍦ㄦ闃诲 =5 #define PT_SPAWN(pt, child, thread) \ =5 do { \ =5 PT_INIT((child)); \ =5 PT_WAIT_THREAD((pt), (thread)); \ =5 } while(0) =5 =5 //閲嶆柊鍚姩绾跨▼,浠庡ご寮濮 =5 #define PT_RESTART(pt) \ =5 do { \ =5 PT_INIT(pt); \ =5 return PT_WAITING; \ =5 } while(0) =5 =5 //閫鍑虹嚎绋 =5 #define PT_EXIT(pt) \ =5 do { \ =5 PT_INIT(pt); \ =5 return PT_EXITED; \ =5 } while(0) =5 //瀛愮嚎绋嬫槸鍚﹂鍑 =5 #define PT_SCHEDULE(f) ((f) < PT_EXITED) =5 =5 //閿佹浠诲姟 =5 #define PT_YIELD(pt) \ =5 do { \ =5 PT_YIELD_FLAG = 0; \ =5 LC_SET((pt)->lc); \ =5 if(PT_YIELD_FLAG == 0) { \ =5 return PT_YIELDED; \ =5 } \ =5 } while(0) =5 =5 //閿佹浠诲姟鐩村埌绗﹀悎鏉′欢 =5 #define PT_YIELD_UNTIL(pt, cond) \ =5 do { \ =5 PT_YIELD_FLAG = 0; \ =5 LC_SET((pt)->lc); \ =5 if((PT_YIELD_FLAG == 0) || !(cond)) { \ =5 return PT_YIELDED; \ =5 } \ =5 } while(0) =5 =5 =5 #endif /* __PT_H__ */ 73 =4 74 =4 struct pt_sem { C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 15 75 =4 unsigned int count; 76 =4 }; 77 =4 78 =4 //淇″彿閲 79 =4 #define PT_SEM_INIT(s, c) (s)->count = c 80 =4 81 =4 //淇″彿閲忕瓑寰 褰撲俊鍙烽噺澶т簬0 鏃剁户缁,鍚﹀垯绛夊緟 82 =4 #define PT_SEM_WAIT(pt, s) \ 83 =4 do { \ 84 =4 PT_WAIT_UNTIL(pt, (s)->count > 0); \ 85 =4 --(s)->count; \ 86 =4 } while(0) 87 =4 88 =4 //鍐欏叆淇″彿閲 89 =4 #define PT_SEM_SIGNAL(pt, s) ++(s)->count 90 =4 91 =4 #endif /* __PT_SEM_H__ */ 92 =4 93 =4 /** @} */ 94 =4 /** @} */ 95 =4 6 =3 7 =3 #endif 8 =3 9 =2 10 =2 11 =2 12 =2 #define TASK_ID(FUNC) TASK_ID_##FUNC 13 =2 #define TASK_NAME(FUNC) #FUNC 14 =2 15 =2 #ifndef UNUSED_PARAM =2 #define UNUSED_PARAM(p) (void)(p) =2 #endif 18 =2 19 =2 20 =2 #ifndef NULL 21 =2 #define NULL (void*)0 22 =2 #endif 23 =2 24 =2 25 =2 #ifndef UNUSED 26 =2 #define UNUSED(x) (void)(x) 27 =2 #endif 28 =2 29 =2 #ifdef __cplusplus =2 extern "C" { =2 #endif 32 =2 33 =2 34 =2 35 =2 enum TASK_ID { 36 =2 TASK_ID(TaskTimer), 37 =2 #include "cfg/taskid.h" 1 =3 TASK_ID(TaskBlinLed), 2 =3 TASK_ID(TaskWDT), 3 =3 TASK_ID(TaskLMM), 4 =3 TASK_ID(TaskEX_WDT), 5 =3 TASK_ID(TaskCAN), 6 =3 7 =3 38 =2 }; 39 =2 C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 16 40 =2 41 =2 42 =2 enum TASK_MODE 43 =2 { 44 =2 TASK_MODE_ONCE, 45 =2 TASK_MODE_PERIOD 46 =2 }; 47 =2 48 =2 enum TIMER_MODE 49 =2 { 50 =2 TIMER_MODE_TIMER = 0, 51 =2 TIMER_MODE_ONCEROUTINE, 52 =2 TIMER_MODE_CYCROUTINE 53 =2 }; 54 =2 55 =2 void InitT0(void); 56 =2 void InitTask(void); 57 =2 void TaskProc(void); 58 =2 59 =2 60 =2 int8_t ActiveTask(int8_t cTaskID, int32_t lPeriod); 61 =2 int8_t SuspendTask(int8_t cTaskID); 62 =2 63 =2 void ActiveTaskNow(int8_t cTaskID, int32_t lPeriod); 64 =2 int8_t SetTaskLastTime(int8_t cTaskID,int32_t lLastTime); 65 =2 66 =2 67 =2 int8_t StartTimer2(int8_t *TimerID,int8_t cMode,uint32_t lPeriod,void (* routine)(void * Param1),void * - Param1); 68 =2 int8_t StartTimer( int8_t cMode,int32_t lPeriod,void (* routine)(void * Param1),void * - Param1); 69 =2 int8_t StopTimer ( int8_t * pcTimerNumber ); 70 =2 void StopAllTimer(void); 71 =2 72 =2 uint32_t get_system_ms(void); 73 =2 //////////////// 74 =2 75 =2 #ifdef __cplusplus =2 } =2 #endif 78 =2 #endif 79 =2 5 =1 #endif 6 =1 4 #include "sc92f8003_timer0.h" 1 =1 //************************************************************ 2 =1 // Copyright (c) 深圳市赛元微电子有限公司 3 =1 // 文件名称 : sc92f8003_timer0.h 4 =1 // 作者 : 5 =1 // 模块功能 : TIMER0固件库函数头文件 6 =1 // 局部函数列表: 7 =1 // 最后更正日期: 2018/9/4 8 =1 // 版本 : V1.0 9 =1 // 说明 : 10 =1 //************************************************************* 11 =1 12 =1 #ifndef _SC92F8003_TIMER0_H_ 13 =1 #define _SC92F8003_TIMER0_H_ 14 =1 15 =1 #include "sc92f8003.h" 1 =2 #ifndef _SC92F8003_H =2 #define _SC92F8003_H C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 17 =2 =2 #include "SC92F8003_C.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 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 16 =1 17 =1 typedef enum { 18 =1 TIM0_PRESSEL_FSYS_D12 = ((uint8_t)0x00), //TIMER0计数源来自系统时钟12分频 19 =1 TIM0_PRESSEL_FSYS_D1 = ((uint8_t)0x01) //TIMER0计数源来自系统时钟 20 =1 }TIM0_PresSel_TypeDef; 21 =1 22 =1 typedef enum { 23 =1 TIM0_MODE_TIMER = ((uint8_t)0x01), //TIMER0做定时器 24 =1 TIM0_MODE_COUNTER = ((uint8_t)0x02) //TIMER0做计数器 25 =1 }TIM0_CountMode_TypeDef; 26 =1 27 =1 void TIM0_DeInit(void); 28 =1 void TIM0_TimeBaseInit(TIM0_PresSel_TypeDef TIM0_PrescalerSelection,TIM0_CountMode_TypeDef TIM0_CountMode) -; 29 =1 void TIM0_WorkMode0Config(uint16_t TIM0_SetCounter); 30 =1 void TIM0_WorkMode1Config(uint16_t TIM0_SetCounter); 31 =1 void TIM0_WorkMode2Config(uint8_t TIM0_SetCounter); 32 =1 void TIM0_WorkMode3Config(uint8_t TIM0_SetCounter, uint8_t TIM1_SetCounter); 33 =1 void TIM0_Mode0SetReloadCounter(uint16_t TIM0_SetCounter); 34 =1 void TIM0_Mode1SetReloadCounter(uint16_t TIM0_SetCounter); 35 =1 void TIM0_SetTL0Counter(uint8_t TIM0_SetCounter); 36 =1 void TIM0_SetTH0Counter(uint8_t TIM0_SetCounter); C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 18 37 =1 void TIM0_Cmd(FunctionalState NewState); 38 =1 void TIM0_ITConfig(FunctionalState NewState, PriorityStatus Priority); 39 =1 FlagStatus TIM0_GetFlagStatus(void); 40 =1 void TIM0_ClearFlag(void); 41 =1 42 =1 #endif 43 =1 44 =1 /******************* (C) COPYRIGHT 2018 SinOne Microelectronics *****END OF FILE****/ 5 #include "sc92f8003_wdt.h" 1 =1 //************************************************************ 2 =1 // Copyright (c) 深圳市赛元微电子有限公司 3 =1 // 文件名称 : sc92f8003_wdt.h 4 =1 // 作者 : 5 =1 // 模块功能 : WDT固件库函数头文件 6 =1 // 局部函数列表: 7 =1 // 最后更正日期: 2018/9/4 8 =1 // 版本 : V1.0 9 =1 // 说明 : 10 =1 //************************************************************* 11 =1 12 =1 #ifndef _SC92F8003_WDT_H_ 13 =1 #define _SC92F8003_WDT_H_ 14 =1 15 =1 #include "sc92f8003.h" 1 =2 #ifndef _SC92F8003_H =2 #define _SC92F8003_H =2 =2 #include "SC92F8003_C.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 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; C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 19 =2 =2 typedef enum {LOW = 0, HIGH = !LOW} PriorityStatus; =2 =2 #endif 16 =1 17 =1 typedef enum { 18 =1 WDT_OverflowTime_500MS = (uint8_t)0x00, //WDT溢出时间为500MS 19 =1 WDT_OverflowTime_250MS = (uint8_t)0x01, //WDT溢出时间为250MS 20 =1 WDT_OverflowTime_125MS = (uint8_t)0x02, //WDT溢出时间为125MS 21 =1 WDT_OverflowTime_62_5MS = (uint8_t)0x03, //WDT溢出时间为62MS 22 =1 WDT_OverflowTime_31_5MS = (uint8_t)0x04, //WDT溢出时间为31MS 23 =1 WDT_OverflowTime_15_75MS = (uint8_t)0x05, //WDT溢出时间为15MS 24 =1 WDT_OverflowTime_7_88MS = (uint8_t)0x06, //WDT溢出时间为7MS 25 =1 WDT_OverflowTime_3_94MS = (uint8_t)0x07 //WDT溢出时间为4MS 26 =1 } WDT_OverflowTime_TypeDef; 27 =1 28 =1 void WDT_DeInit(void); 29 =1 void WDT_Init(WDT_OverflowTime_TypeDef OverflowTime); 30 =1 void WDT_SetReload(void); 31 =1 32 =1 #endif 33 =1 34 =1 /******************* (C) COPYRIGHT 2018 SinOne Microelectronics *****END OF FILE****/ 6 #include "sc92f8003_gpio.h" 1 =1 //************************************************************ 2 =1 // Copyright (c) 深圳市赛元微电子有限公司 3 =1 // 文件名称 : sc92f8003_gpio.h 4 =1 // 作者 : 5 =1 // 模块功能 : GPIO固件库函数头文件 6 =1 // 局部函数列表: 7 =1 // 最后更正日期: 2018/9/4 8 =1 // 版本 : V1.0 9 =1 // 说明 : 10 =1 //************************************************************* 11 =1 #ifndef _SC92F8003_GPIO_H_ 12 =1 #define _SC92F8003_GPIO_H_ 13 =1 14 =1 #include "sc92f8003.h" 1 =2 #ifndef _SC92F8003_H =2 #define _SC92F8003_H =2 =2 #include "SC92F8003_C.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; C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 20 =2 typedef int8_t s8; =2 =2 typedef uint32_t u32; =2 typedef uint16_t u16; =2 typedef uint8_t u8; =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 15 =1 16 =1 typedef enum { 17 =1 GPIO0 = (uint8_t)0x00, //GPIO0 18 =1 GPIO1 = (uint8_t)0x01, //GPIO1 19 =1 GPIO2 = (uint8_t)0x02, //GPIO2 20 =1 }GPIO_TypeDef; 21 =1 22 =1 typedef enum { 23 =1 GPIO_MODE_IN_HI = (uint8_t)0x00, //高阻输入模式 24 =1 GPIO_MODE_IN_PU = (uint8_t)0x01, //带上拉的输入模式 25 =1 GPIO_MODE_OUT_PP = (uint8_t)0x02 //强推挽输出模式 26 =1 }GPIO_Mode_TypeDef; 27 =1 28 =1 typedef enum { 29 =1 GPIO_PIN_0 = ((uint8_t)0x01), //IO管脚Px0 30 =1 GPIO_PIN_1 = ((uint8_t)0x02), //IO管脚Px1 31 =1 GPIO_PIN_2 = ((uint8_t)0x04), //IO管脚Px2 32 =1 GPIO_PIN_3 = ((uint8_t)0x08), //IO管脚Px3 33 =1 GPIO_PIN_4 = ((uint8_t)0x10), //IO管脚Px4 34 =1 GPIO_PIN_5 = ((uint8_t)0x20), //IO管脚Px5 35 =1 GPIO_PIN_6 = ((uint8_t)0x40), //IO管脚Px6 36 =1 GPIO_PIN_7 = ((uint8_t)0x80), //IO管脚Px7 37 =1 GPIO_PIN_LNIB = ((uint8_t)0x0F), //IO管脚Px0~3 38 =1 GPIO_PIN_HNIB = ((uint8_t)0xF0), //IO管脚Px4~7 39 =1 GPIO_PIN_ALL = ((uint8_t)0xFF) //IO管脚Px0~7 40 =1 }GPIO_Pin_TypeDef; 41 =1 42 =1 void GPIO_DeInit(void); 43 =1 void GPIO_Init(GPIO_TypeDef GPIOx, uint8_t PortPins, GPIO_Mode_TypeDef GPIO_Mode); 44 =1 void GPIO_Write(GPIO_TypeDef GPIOx, uint8_t PortVal); 45 =1 void GPIO_WriteHigh(GPIO_TypeDef GPIOx, uint8_t PortPins); 46 =1 void GPIO_WriteLow(GPIO_TypeDef GPIOx, uint8_t PortPins); 47 =1 uint8_t GPIO_ReadPort(GPIO_TypeDef GPIOx); 48 =1 BitStatus GPIO_ReadPin(GPIO_TypeDef GPIOx, GPIO_Pin_TypeDef PortPins); 49 =1 50 =1 #endif 51 =1 52 =1 /******************* (C) COPYRIGHT 2018 SinOne Microelectronics *****END OF FILE****/ 7 8 #define FOSC 12000000UL 9 #define TICKPER1S 1000UL 10 #define T1VALUE (0X10000UL-FOSC/12UL/TICKPER1S) 11 12 sbit LED_R =P1^0; C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 21 13 sbit LED_G =P2^7; 14 sbit LED_B =P2^6; 15 sbit LED_C =P2^5; 16 sbit LED_W =P2^4; 17 18 19 void InitT0(void) 20 { 21 1 TIM0_DeInit(); 22 1 TIM0_TimeBaseInit(TIM0_PRESSEL_FSYS_D12,TIM0_MODE_TIMER ); //Timer0 12分频,做定时器 23 1 TIM0_WorkMode1Config(T1VALUE); //设置Timer0工作模式0,初值为7192,定时1ms 24 1 // TIM0_WorkMode1Config(65536-1600); 25 1 TIM0_ITConfig(ENABLE, LOW); //使能Timer0中断 26 1 TIM0_Cmd(ENABLE); //使能Timer0计数 27 1 } 28 29 30 //TASK led BLINK 31 /* 32 PT_THREAD(TaskBlinLed(struct pt *pt1 )) 33 { 34 static uint8_t count = 0; 35 PT_BEGIN(pt1); 36 count%=10; 37 if(count==0) 38 { 39 LED = 1; 40 } 41 else 42 { 43 LED = 0; 44 } 45 count++; 46 PT_END(pt1); 47 } 48 49 */ 50 51 PT_THREAD(TaskBlinLed(struct pt *pt1 )) 52 { 53 1 static xdata struct timer input_timer; 54 1 _nop_(); 55 1 PT_BEGIN(pt1); 56 3 while(1) 57 3 { 58 4 timer_set(&input_timer,100); 59 4 LED_R = 1; 60 4 PT_WAIT_UNTIL(pt1, timer_expired(&input_timer)); 61 4 _nop_(); 62 4 63 4 timer_set(&input_timer,900); 64 4 LED_R = 0; 65 4 PT_WAIT_UNTIL(pt1, timer_expired(&input_timer)); 66 4 _nop_(); 67 4 } 68 3 PT_END(pt1); *** WARNING C275 IN LINE 68 OF Task\cpu_port\S92F8003A\task_hal.c: expression with possibly no effect 69 1 } 70 71 72 73 PT_THREAD(TaskWDT(struct pt *pt1 )) C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 22 74 { 75 1 PT_BEGIN(pt1); 76 3 WDT_SetReload(); 77 3 PT_END(pt1); *** WARNING C275 IN LINE 77 OF Task\cpu_port\S92F8003A\task_hal.c: expression with possibly no effect 78 1 } 79 80 void InitWdt(void) 81 { 82 1 WDT_DeInit(); 83 1 WDT_Init(WDT_OverflowTime_250MS); 84 1 } 85 86 void InitPort(void) 87 { 88 1 GPIO_DeInit(); 89 1 GPIO_Init(GPIOR,LEDR,GPIO_MODE_OUT_PP); 90 1 GPIO_Init(GPIOG,LEDG,GPIO_MODE_OUT_PP); 91 1 GPIO_Init(GPIOB,LEDB,GPIO_MODE_OUT_PP); 92 1 GPIO_Init(GPIOC,LEDC,GPIO_MODE_OUT_PP); 93 1 GPIO_Init(GPIOW,LEDW,GPIO_MODE_OUT_PP); 94 1 95 1 } 96 97 98 99 void T0_Handler(void) interrupt INT_T0 100 { 101 1 uint16_t value = T1VALUE+TL0; 102 1 TF0 = 0; 103 1 TL0 = value&0xFF; 104 1 TH0 = (value >> 8); 105 1 Task_SysTick_Handler(); 106 1 } 107 108 109 void idle(void) 110 { 111 1 //PCON |= 0x01; //8 nop 112 1 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); 113 1 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); 114 1 } 115 116 117 void ON_Led_G(void* p) 118 { 119 1 static uint8_t x = 0; 120 1 if(!x) 121 1 LED_G = 1; 122 1 else 123 1 LED_G = 0; 124 1 x++; 125 1 x%=2; 126 1 } *** WARNING C280 IN LINE 117 OF Task\cpu_port\S92F8003A\task_hal.c: 'p': unreferenced local variable 127 128 129 void ON_Led_B(void* p) 130 { 131 1 static uint8_t x = 0; 132 1 if(x) 133 1 LED_B = 1; C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 23 134 1 else 135 1 LED_B = 0; 136 1 x++; 137 1 x%=2; 138 1 } *** WARNING C280 IN LINE 129 OF Task\cpu_port\S92F8003A\task_hal.c: 'p': unreferenced local variable 139 140 141 //under voltage Reset Count 142 unsigned char xdata UV_RESET_CNT _at_ 0x02F0; 143 int8_t timerID = -1; 144 int8_t param = -1; 145 void InitTask(void) 146 { 147 1 StopAllTimer(); 148 1 InitT0(); 149 1 StartTimer2(&timerID,TIMER_MODE_ONCEROUTINE,1000,ON_Led_G,(void*)¶m) ; // TIMER_MODE_CYCROUTINE 150 1 StartTimer2(&timerID,TIMER_MODE_CYCROUTINE,2000,ON_Led_B,(void*)¶m) ; // TIMER_MODE_CYCROUTINE 151 1 enableInterrupts(); 152 1 } 153 154 void Init(void) 155 { 156 1 InitWdt(); 157 1 InitPort(); 158 1 InitTask(); 159 1 } C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 24 ASSEMBLY LISTING OF GENERATED OBJECT CODE ; FUNCTION InitT0 (BEGIN) ; SOURCE LINE # 19 ; SOURCE LINE # 20 ; SOURCE LINE # 21 0000 120000 E LCALL TIM0_DeInit ; SOURCE LINE # 22 0003 7D01 MOV R5,#01H 0005 E4 CLR A 0006 FF MOV R7,A 0007 120000 E LCALL _TIM0_TimeBaseInit ; SOURCE LINE # 23 000A 7F18 MOV R7,#018H 000C 7EFC MOV R6,#0FCH 000E 120000 E LCALL _TIM0_WorkMode1Config ; SOURCE LINE # 25 0011 E4 CLR A 0012 FD MOV R5,A 0013 7F01 MOV R7,#01H 0015 120000 E LCALL _TIM0_ITConfig ; SOURCE LINE # 26 0018 7F01 MOV R7,#01H 001A 020000 E LJMP _TIM0_Cmd ; FUNCTION InitT0 (END) ; FUNCTION _TaskBlinLed (BEGIN) ; SOURCE LINE # 51 0000 8B00 R MOV pt1,R3 0002 8A00 R MOV pt1+01H,R2 0004 8900 R MOV pt1+02H,R1 ; SOURCE LINE # 52 ; SOURCE LINE # 54 0006 00 NOP ; SOURCE LINE # 55 0007 750001 R MOV PT_YIELD_FLAG,#01H 000A 120000 E LCALL ?C?ILDPTR 000D FF MOV R7,A 000E E5F0 MOV A,B 0010 706D JNZ ?C0002 0012 EF MOV A,R7 0013 24C4 ADD A,#0C4H 0015 6028 JZ ?C0009 0017 24FB ADD A,#0FBH 0019 6053 JZ ?C0015 001B 2441 ADD A,#041H 001D 7060 JNZ ?C0002 001F ?C0004: ; SOURCE LINE # 56 ; SOURCE LINE # 57 ; SOURCE LINE # 58 001F 7B01 MOV R3,#01H 0021 7A00 R MOV R2,#HIGH input_timer 0023 7900 R MOV R1,#LOW input_timer 0025 7F64 MOV R7,#064H 0027 7E00 MOV R6,#00H 0029 7D00 MOV R5,#00H 002B 7C00 MOV R4,#00H 002D 120000 E LCALL _timer_set ; SOURCE LINE # 59 0030 D290 SETB LED_R C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 25 ; SOURCE LINE # 60 0032 AB00 R MOV R3,pt1 0034 AA00 R MOV R2,pt1+01H 0036 A900 R MOV R1,pt1+02H 0038 E4 CLR A 0039 75F03C MOV B,#03CH 003C 120000 E LCALL ?C?ISTPTR 003F ?C0009: 003F 7B01 MOV R3,#01H 0041 7A00 R MOV R2,#HIGH input_timer 0043 7900 R MOV R1,#LOW input_timer 0045 120000 E LCALL _timer_expired 0048 EF MOV A,R7 0049 7002 JNZ ?C0007 004B FF MOV R7,A 004C 22 RET 004D ?C0007: ; SOURCE LINE # 61 004D 00 NOP ; SOURCE LINE # 63 004E 7B01 MOV R3,#01H 0050 7A00 R MOV R2,#HIGH input_timer 0052 7900 R MOV R1,#LOW input_timer 0054 7F84 MOV R7,#084H 0056 7E03 MOV R6,#03H 0058 7D00 MOV R5,#00H 005A 7C00 MOV R4,#00H 005C 120000 E LCALL _timer_set ; SOURCE LINE # 64 005F C290 CLR LED_R ; SOURCE LINE # 65 0061 AB00 R MOV R3,pt1 0063 AA00 R MOV R2,pt1+01H 0065 A900 R MOV R1,pt1+02H 0067 E4 CLR A 0068 75F041 MOV B,#041H 006B 120000 E LCALL ?C?ISTPTR 006E ?C0015: 006E 7B01 MOV R3,#01H 0070 7A00 R MOV R2,#HIGH input_timer 0072 7900 R MOV R1,#LOW input_timer 0074 120000 E LCALL _timer_expired 0077 EF MOV A,R7 0078 7002 JNZ ?C0013 007A FF MOV R7,A 007B 22 RET 007C ?C0013: ; SOURCE LINE # 66 007C 00 NOP ; SOURCE LINE # 67 007D 80A0 SJMP ?C0004 ; SOURCE LINE # 68 007F ?C0002: 007F E4 CLR A 0080 F500 R MOV PT_YIELD_FLAG,A 0082 AB00 R MOV R3,pt1 0084 AA00 R MOV R2,pt1+01H 0086 A900 R MOV R1,pt1+02H 0088 F5F0 MOV B,A 008A 120000 E LCALL ?C?ISTPTR 008D 7F03 MOV R7,#03H ; SOURCE LINE # 69 C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 26 008F ?C0011: 008F 22 RET ; FUNCTION _TaskBlinLed (END) ; FUNCTION _TaskWDT (BEGIN) ; SOURCE LINE # 73 0000 8B00 R MOV pt1,R3 0002 8A00 R MOV pt1+01H,R2 0004 8900 R MOV pt1+02H,R1 ; SOURCE LINE # 74 ; SOURCE LINE # 75 0006 750001 R MOV PT_YIELD_FLAG,#01H 0009 120000 E LCALL ?C?ILDPTR 000C 7007 JNZ ?C0017 000E E5F0 MOV A,B 0010 7003 JNZ ?C0017 0012 ?C0018: ; SOURCE LINE # 76 0012 120000 E LCALL WDT_SetReload ; SOURCE LINE # 77 0015 ?C0017: 0015 E4 CLR A 0016 F500 R MOV PT_YIELD_FLAG,A 0018 AB00 R MOV R3,pt1 001A AA00 R MOV R2,pt1+01H 001C A900 R MOV R1,pt1+02H 001E F5F0 MOV B,A 0020 120000 E LCALL ?C?ISTPTR 0023 7F03 MOV R7,#03H ; SOURCE LINE # 78 0025 22 RET ; FUNCTION _TaskWDT (END) ; FUNCTION InitWdt (BEGIN) ; SOURCE LINE # 80 ; SOURCE LINE # 81 ; SOURCE LINE # 82 0000 120000 E LCALL WDT_DeInit ; SOURCE LINE # 83 0003 7F01 MOV R7,#01H 0005 020000 E LJMP _WDT_Init ; FUNCTION InitWdt (END) ; FUNCTION InitPort (BEGIN) ; SOURCE LINE # 86 ; SOURCE LINE # 87 ; SOURCE LINE # 88 0000 120000 E LCALL GPIO_DeInit ; SOURCE LINE # 89 0003 7B02 MOV R3,#02H 0005 7D01 MOV R5,#01H 0007 7F01 MOV R7,#01H 0009 120000 E LCALL _GPIO_Init ; SOURCE LINE # 90 000C 7B02 MOV R3,#02H 000E 7D80 MOV R5,#080H 0010 7F02 MOV R7,#02H 0012 120000 E LCALL _GPIO_Init ; SOURCE LINE # 91 0015 7B02 MOV R3,#02H 0017 7D40 MOV R5,#040H 0019 7F02 MOV R7,#02H C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 27 001B 120000 E LCALL _GPIO_Init ; SOURCE LINE # 92 001E 7B02 MOV R3,#02H 0020 7D20 MOV R5,#020H 0022 7F02 MOV R7,#02H 0024 120000 E LCALL _GPIO_Init ; SOURCE LINE # 93 0027 7B02 MOV R3,#02H 0029 7D10 MOV R5,#010H 002B 7F02 MOV R7,#02H 002D 020000 E LJMP _GPIO_Init ; FUNCTION InitPort (END) ; FUNCTION T0_Handler (BEGIN) 0000 C0E0 PUSH ACC 0002 C0F0 PUSH B 0004 C083 PUSH DPH 0006 C082 PUSH DPL 0008 C0D0 PUSH PSW 000A 75D000 MOV PSW,#00H 000D C000 PUSH AR0 000F C001 PUSH AR1 0011 C002 PUSH AR2 0013 C003 PUSH AR3 0015 C004 PUSH AR4 0017 C005 PUSH AR5 0019 C006 PUSH AR6 001B C007 PUSH AR7 ; SOURCE LINE # 99 ; SOURCE LINE # 101 001D AF8A MOV R7,TL0 001F EF MOV A,R7 0020 2418 ADD A,#018H 0022 FF MOV R7,A 0023 E4 CLR A 0024 34FC ADDC A,#0FCH 0026 FE MOV R6,A ;---- Variable 'value' assigned to Register 'R6/R7' ---- ; SOURCE LINE # 102 0027 C28D CLR TF0 ; SOURCE LINE # 103 0029 AD07 MOV R5,AR7 002B ED MOV A,R5 002C F58A MOV TL0,A ; SOURCE LINE # 104 002E 8E8C MOV TH0,R6 ; SOURCE LINE # 105 0030 120000 E LCALL Task_SysTick_Handler ; SOURCE LINE # 106 0033 D007 POP AR7 0035 D006 POP AR6 0037 D005 POP AR5 0039 D004 POP AR4 003B D003 POP AR3 003D D002 POP AR2 003F D001 POP AR1 0041 D000 POP AR0 0043 D0D0 POP PSW 0045 D082 POP DPL 0047 D083 POP DPH 0049 D0F0 POP B 004B D0E0 POP ACC C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 28 004D 32 RETI ; FUNCTION T0_Handler (END) ; FUNCTION idle (BEGIN) ; SOURCE LINE # 109 ; SOURCE LINE # 110 ; SOURCE LINE # 112 0000 00 NOP 0001 00 NOP 0002 00 NOP 0003 00 NOP 0004 00 NOP 0005 00 NOP 0006 00 NOP 0007 00 NOP ; SOURCE LINE # 113 0008 00 NOP 0009 00 NOP 000A 00 NOP 000B 00 NOP 000C 00 NOP 000D 00 NOP 000E 00 NOP 000F 00 NOP ; SOURCE LINE # 114 0010 22 RET ; FUNCTION idle (END) ; FUNCTION _ON_Led_G (BEGIN) ; SOURCE LINE # 117 0000 8B00 R MOV p,R3 0002 8A00 R MOV p+01H,R2 0004 8900 R MOV p+02H,R1 ; SOURCE LINE # 118 ; SOURCE LINE # 120 0006 E500 R MOV A,x 0008 7004 JNZ ?C0024 ; SOURCE LINE # 121 000A D2A7 SETB LED_G 000C 8002 SJMP ?C0025 000E ?C0024: ; SOURCE LINE # 123 000E C2A7 CLR LED_G 0010 ?C0025: ; SOURCE LINE # 124 0010 0500 R INC x ; SOURCE LINE # 125 0012 530001 R ANL x,#01H ; SOURCE LINE # 126 0015 22 RET ; FUNCTION _ON_Led_G (END) ; FUNCTION _ON_Led_B (BEGIN) ; SOURCE LINE # 129 0000 8B00 R MOV p,R3 0002 8A00 R MOV p+01H,R2 0004 8900 R MOV p+02H,R1 ; SOURCE LINE # 130 ; SOURCE LINE # 132 0006 E500 R MOV A,x 0008 6004 JZ ?C0027 ; SOURCE LINE # 133 C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 29 000A D2A6 SETB LED_B 000C 8002 SJMP ?C0028 000E ?C0027: ; SOURCE LINE # 135 000E C2A6 CLR LED_B 0010 ?C0028: ; SOURCE LINE # 136 0010 0500 R INC x ; SOURCE LINE # 137 0012 530001 R ANL x,#01H ; SOURCE LINE # 138 0015 22 RET ; FUNCTION _ON_Led_B (END) ; FUNCTION InitTask (BEGIN) ; SOURCE LINE # 145 ; SOURCE LINE # 146 ; SOURCE LINE # 147 0000 120000 E LCALL StopAllTimer ; SOURCE LINE # 148 0003 120000 R LCALL InitT0 ; SOURCE LINE # 149 0006 E4 CLR A 0007 7500E8 E MOV ?_StartTimer2?BYTE+07H,#0E8H 000A 750003 E MOV ?_StartTimer2?BYTE+06H,#03H 000D F500 E MOV ?_StartTimer2?BYTE+05H,A 000F F500 E MOV ?_StartTimer2?BYTE+04H,A 0011 7500FF E MOV ?_StartTimer2?BYTE+08H,#0FFH 0014 750000 R MOV ?_StartTimer2?BYTE+09H,#HIGH _ON_Led_G 0017 750000 R MOV ?_StartTimer2?BYTE+0AH,#LOW _ON_Led_G 001A F500 E MOV ?_StartTimer2?BYTE+0BH,A 001C 750000 R MOV ?_StartTimer2?BYTE+0CH,#HIGH param 001F 750000 R MOV ?_StartTimer2?BYTE+0DH,#LOW param 0022 FB MOV R3,A 0023 7A00 R MOV R2,#HIGH timerID 0025 7900 R MOV R1,#LOW timerID 0027 7D01 MOV R5,#01H 0029 120000 E LCALL _StartTimer2 ; SOURCE LINE # 150 002C E4 CLR A 002D 7500D0 E MOV ?_StartTimer2?BYTE+07H,#0D0H 0030 750007 E MOV ?_StartTimer2?BYTE+06H,#07H 0033 F500 E MOV ?_StartTimer2?BYTE+05H,A 0035 F500 E MOV ?_StartTimer2?BYTE+04H,A 0037 7500FF E MOV ?_StartTimer2?BYTE+08H,#0FFH 003A 750000 R MOV ?_StartTimer2?BYTE+09H,#HIGH _ON_Led_B 003D 750000 R MOV ?_StartTimer2?BYTE+0AH,#LOW _ON_Led_B 0040 F500 E MOV ?_StartTimer2?BYTE+0BH,A 0042 750000 R MOV ?_StartTimer2?BYTE+0CH,#HIGH param 0045 750000 R MOV ?_StartTimer2?BYTE+0DH,#LOW param 0048 FB MOV R3,A 0049 7A00 R MOV R2,#HIGH timerID 004B 7900 R MOV R1,#LOW timerID 004D 7D02 MOV R5,#02H 004F 120000 E LCALL _StartTimer2 ; SOURCE LINE # 151 0052 D2AF SETB EA ; SOURCE LINE # 152 0054 22 RET ; FUNCTION InitTask (END) ; FUNCTION Init (BEGIN) C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 30 ; SOURCE LINE # 154 ; SOURCE LINE # 155 ; SOURCE LINE # 156 0000 120000 R LCALL InitWdt ; SOURCE LINE # 157 0003 120000 R LCALL InitPort ; SOURCE LINE # 158 0006 020000 R LJMP InitTask ; FUNCTION Init (END) C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 31 NAME CLASS MSPACE TYPE OFFSET SIZE ==== ===== ====== ==== ====== ==== uint16_t . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2 OPREG. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00FFH 1 GPIO_PIN_LNIB. . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 TASK_ID_TaskLMM. . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 P0 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0080H 1 SSDAT. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 009FH 1 P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1 P2 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A0H 1 EUART. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ACH 1 TMCON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008EH 1 AC . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D6H 1 FlagStatus . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1 RESET. . . . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 OTCON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008FH 1 TIM0_MODE_TIMER. . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 _TaskWDT . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H ----- pt1. . . . . . . . . . . . . . . . . AUTO DATA PTR 0000H 3 PT_YIELD_FLAG. . . . . . . . . . . . AUTO DATA CHAR 0003H 1 EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1 T2 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00C9H 1 TASK_ID_TaskEX_WDT . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 int32_t. . . . . . . . . . . . . . . . TYPEDEF ----- LONG ----- 4 PWMCON0. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D2H 1 LED_R. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0090H 1 PWMCON1. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00DAH 1 GPIO_PIN_0 . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 TASK_ID_TaskWDT. . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 int16_t. . . . . . . . . . . . . . . . TYPEDEF ----- INT ----- 2 GPIO_PIN_1 . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 TIMER_MODE . . . . . . . . . . . . . . * TAG * ----- ENUM ----- ----- GPIO_PIN_2 . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 GPIO_PIN_3 . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 pt_sem . . . . . . . . . . . . . . . . * TAG * ----- STRUCT ----- 2 count. . . . . . . . . . . . . . . . MEMBER ----- U_INT 0000H 2 ERROR. . . . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 LED_W. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A4H 1 GPIO_PIN_4 . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 GPIO_PIN_5 . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 EADC . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AEH 1 IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1 GPIO_PIN_6 . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 GPIO_PIN_7 . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 OPINX. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00FEH 1 WDT_DeInit . . . . . . . . . . . . . . EXTERN CODE PROC ----- ----- _TIM0_Cmd. . . . . . . . . . . . . . . EXTERN CODE PROC ----- ----- GPIO_MODE_OUT_PP . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 CP . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00C8H 1 param. . . . . . . . . . . . . . . . . PUBLIC DATA CHAR 0002H 1 Init . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H ----- ErrorStatus. . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1 EXF2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CEH 1 CHKSUMH. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00FDH 1 PWMDTY0. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D5H 1 OPERCON. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00EFH 1 PWMDTY1. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D6H 1 P0PH . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 009BH 1 IP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B8H 1 C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 32 NAME CLASS MSPACE TYPE OFFSET SIZE ==== ===== ====== ==== ====== ==== TIM0_PRESSEL_FSYS_D1 . . . . . . . . . E_CONST ----- U_CHAR ----- 1 CHKSUML. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00FCH 1 PWMDTY2. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D7H 1 P1PH . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0092H 1 InitT0 . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H ----- RI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0098H 1 PWMDTY3. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00DCH 1 P2PH . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A2H 1 SUCCESS. . . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 CY . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D7H 1 PWMDTY4. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00DDH 1 TASK_ID_TaskTimer. . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 TI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0099H 1 PWMDTY5. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00DEH 1 IPT0 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B9H 1 PWMDTY6. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00DFH 1 FunctionalState. . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1 IPT1 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BBH 1 idle . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H ----- IPT2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BDH 1 GPIO_MODE_IN_HI. . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 HIGH . . . . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 _TIM0_TimeBaseInit . . . . . . . . . . EXTERN CODE PROC ----- ----- TASK_ID. . . . . . . . . . . . . . . . * TAG * ----- ENUM ----- ----- RCAP2H . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00CBH 1 SP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0081H 1 timer. . . . . . . . . . . . . . . . . * TAG * ----- STRUCT ----- 8 start. . . . . . . . . . . . . . . . MEMBER ----- U_LONG 0000H 4 interval . . . . . . . . . . . . . . MEMBER ----- U_LONG 0004H 4 lc_t . . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2 OV . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D2H 1 TIM0_CountMode_TypeDef . . . . . . . . TYPEDEF ----- U_CHAR ----- 1 TIM0_MODE_COUNTER. . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 ITStatus . . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1 IAPADE . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00F4H 1 RCAP2L . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00CAH 1 T0_Handler . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H ----- value. . . . . . . . . . . . . . . . * REG * DATA U_INT 0006H 2 _GPIO_Init . . . . . . . . . . . . . . EXTERN CODE PROC ----- ----- ENABLE . . . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 BitStatus. . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1 IAPADH . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00F3H 1 PWMDTYA. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D4H 1 PWMDTYB. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00DBH 1 ADCCON . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00ADH 1 s8 . . . . . . . . . . . . . . . . . . TYPEDEF ----- CHAR ----- 1 InitTask . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H ----- u8 . . . . . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1 RCLK . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CDH 1 IAPADL . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00F2H 1 GPIO_Mode_TypeDef. . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1 func . . . . . . . . . . . . . . . . . TYPEDEF ----- PTR ----- 3 bool . . . . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1 TCLK . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CCH 1 P00. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0080H 1 P10. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0090H 1 P01. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0081H 1 C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 33 NAME CLASS MSPACE TYPE OFFSET SIZE ==== ===== ====== ==== ====== ==== SBUF . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0099H 1 PCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0087H 1 timerID. . . . . . . . . . . . . . . . PUBLIC DATA CHAR 0003H 1 P20. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A0H 1 P11. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0091H 1 GPIO_PIN_ALL . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 P21. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A1H 1 P12. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0092H 1 _TaskBlinLed . . . . . . . . . . . . . PUBLIC CODE PROC 0000H ----- pt1. . . . . . . . . . . . . . . . . AUTO DATA PTR 0000H 3 PT_YIELD_FLAG. . . . . . . . . . . . AUTO DATA CHAR 0003H 1 input_timer. . . . . . . . . . . . . STATIC XDATA STRUCT 0000H 8 P22. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A2H 1 P13. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0093H 1 SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1 GPIO_MODE_IN_PU. . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 _TIM0_WorkMode1Config. . . . . . . . . EXTERN CODE PROC ----- ----- P23. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A3H 1 P14. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0094H 1 IAPDAT . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00F5H 1 TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1 TMOD . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0089H 1 _ON_Led_B. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H ----- p. . . . . . . . . . . . . . . . . . AUTO DATA VOID_PTR 0000H 3 x. . . . . . . . . . . . . . . . . . STATIC DATA U_CHAR 0001H 1 P24. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A4H 1 P15. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0095H 1 IPINT0 . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B8H 1 WDT_OverflowTime_31_5MS. . . . . . . . E_CONST ----- U_CHAR ----- 1 TASK_ID_TaskBlinLed. . . . . . . . . . E_CONST ----- U_CHAR ----- 1 P25. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A5H 1 P16. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0096H 1 IPINT1 . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BAH 1 P26. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A6H 1 P17. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0097H 1 SSCON0 . . . . . . . . . . . . . . . . SFR DATA U_CHAR 009DH 1 P27. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A7H 1 SSCON1 . . . . . . . . . . . . . . . . SFR DATA U_CHAR 009EH 1 SSCON2 . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0095H 1 _ON_Led_G. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H ----- p. . . . . . . . . . . . . . . . . . AUTO DATA VOID_PTR 0000H 3 x. . . . . . . . . . . . . . . . . . STATIC DATA U_CHAR 0000H 1 WDT_OverflowTime_62_5MS. . . . . . . . E_CONST ----- U_CHAR ----- 1 TIMER_MODE_ONCEROUTINE . . . . . . . . E_CONST ----- U_CHAR ----- 1 TASK_MODE. . . . . . . . . . . . . . . * TAG * ----- ENUM ----- ----- TIM0_DeInit. . . . . . . . . . . . . . EXTERN CODE PROC ----- ----- WDT_OverflowTime_3_94MS. . . . . . . . E_CONST ----- U_CHAR ----- 1 InitPort . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H ----- IAPCTL . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00F6H 1 IE1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A9H 1 TRUE . . . . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 B. . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00F0H 1 TASK_MODE_ONCE . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 WDT_OverflowTime_7_88MS. . . . . . . . E_CONST ----- U_CHAR ----- 1 IAPKEY . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00F1H 1 BTMCON . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00CEH 1 GPIO_TypeDef . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1 C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 34 NAME CLASS MSPACE TYPE OFFSET SIZE ==== ===== ====== ==== ====== ==== PWMCFG . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D1H 1 InitWdt. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H ----- ACC. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00E0H 1 StopAllTimer . . . . . . . . . . . . . EXTERN CODE PROC ----- ----- _StartTimer2 . . . . . . . . . . . . . EXTERN CODE PROC ----- ----- ET0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A9H 1 TF0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008DH 1 ET1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ABH 1 ADCCFG0. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00ABH 1 IP1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B9H 1 TF1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008FH 1 ET2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ADH 1 ADCCFG1. . . . . . . . . . . . . . . . SFR DATA U_CHAR 00AAH 1 TIM0_PRESSEL_FSYS_D12. . . . . . . . . E_CONST ----- U_CHAR ----- 1 RB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009AH 1 TF2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CFH 1 TH0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008CH 1 TH1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008DH 1 TB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009BH 1 TH2. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00CDH 1 GPIO_Pin_TypeDef . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1 uint8_t. . . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1 P. . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D0H 1 SM0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009FH 1 TL0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008AH 1 GPIO_DeInit. . . . . . . . . . . . . . EXTERN CODE PROC ----- ----- SM1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009EH 1 WDTCON . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00CFH 1 TL1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008BH 1 WDT_OverflowTime_TypeDef . . . . . . . TYPEDEF ----- U_CHAR ----- 1 _timer_set . . . . . . . . . . . . . . EXTERN CODE PROC ----- ----- SM2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009DH 1 TL2. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00CCH 1 WDT_OverflowTime_500MS . . . . . . . . E_CONST ----- U_CHAR ----- 1 TIM0_PresSel_TypeDef . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1 WDT_OverflowTime_250MS . . . . . . . . E_CONST ----- U_CHAR ----- 1 RS0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D3H 1 WDT_OverflowTime_125MS . . . . . . . . E_CONST ----- U_CHAR ----- 1 TR0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008CH 1 RS1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D4H 1 UV_RESET_CNT . . . . . . . . . . . . . PUBLIC XDATA U_CHAR 02F0H 1 TR1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008EH 1 IPUART . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BCH 1 s32. . . . . . . . . . . . . . . . . . TYPEDEF ----- LONG ----- 4 TR2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CAH 1 WDT_SetReload. . . . . . . . . . . . . EXTERN CODE PROC ----- ----- int8_t . . . . . . . . . . . . . . . . TYPEDEF ----- CHAR ----- 1 u32. . . . . . . . . . . . . . . . . . TYPEDEF ----- U_LONG ----- 4 s16. . . . . . . . . . . . . . . . . . TYPEDEF ----- INT ----- 2 u16. . . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2 PWMPRD . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D3H 1 DPH. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0083H 1 GPIO0. . . . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 DPL. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0082H 1 GPIO1. . . . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 TASK_MODE_PERIOD . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 EINT0. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A8H 1 C51 COMPILER V9.60.7.0 TASK_HAL 05/13/2024 00:07:49 PAGE 35 NAME CLASS MSPACE TYPE OFFSET SIZE ==== ===== ====== ==== ====== ==== P0CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 009AH 1 GPIO2. . . . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 EINT1. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AAH 1 IPADC. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BEH 1 INT0F. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00BAH 1 P1CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0091H 1 EXEN2. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CBH 1 INT1F. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00BCH 1 P2CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A1H 1 pt . . . . . . . . . . . . . . . . . . * TAG * ----- STRUCT ----- 2 lc . . . . . . . . . . . . . . . . . MEMBER ----- U_INT 0000H 2 INT2F. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C6H 1 REN. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009CH 1 _WDT_Init. . . . . . . . . . . . . . . EXTERN CODE PROC ----- ----- Task_SysTick_Handler . . . . . . . . . EXTERN CODE PROC ----- ----- ADCVH. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00AFH 1 T2MOD. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C9H 1 T2CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C8H 1 TASK_ID_TaskCAN. . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 ADCVL. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00AEH 1 SET. . . . . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 FALSE. . . . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 TIMER_MODE_TIMER . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 INT0R. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00BBH 1 INT1R. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00BDH 1 WDT_OverflowTime_15_75MS . . . . . . . E_CONST ----- U_CHAR ----- 1 PriorityStatus . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1 INT2R. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C7H 1 LOW. . . . . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 _TIM0_ITConfig . . . . . . . . . . . . EXTERN CODE PROC ----- ----- TIMER_MODE_CYCROUTINE. . . . . . . . . E_CONST ----- U_CHAR ----- 1 F0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D5H 1 DISABLE. . . . . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 F1 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D1H 1 LED_B. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A6H 1 LED_C. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A5H 1 _timer_expired . . . . . . . . . . . . EXTERN CODE PROC ----- ----- PSW. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D0H 1 GPIO_PIN_HNIB. . . . . . . . . . . . . E_CONST ----- U_CHAR ----- 1 LED_G. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A7H 1 uint32_t . . . . . . . . . . . . . . . TYPEDEF ----- U_LONG ----- 4 MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 503 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = 8 ---- PDATA SIZE = ---- ---- DATA SIZE = 4 14 IDATA SIZE = ---- ---- BIT SIZE = ---- ---- EDATA SIZE = ---- ---- HDATA SIZE = ---- ---- XDATA CONST SIZE = ---- ---- FAR CONST SIZE = ---- ---- END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 4 WARNING(S), 0 ERROR(S)