C51 COMPILER V9.01 LED 02/22/2025 15:36:21 PAGE 1 C51 COMPILER V9.01, COMPILATION OF MODULE LED OBJECT MODULE PLACED IN .\output\Led.obj COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_app\Led.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Load.OR -C) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\code_c -lassb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\Led.lst) OBJECT(.\output\Led.obj) line level source 1 /******************************************************************************** 2 Copyright (C), Sinowealth Electronic. Ltd. 3 Author: Sino 4 Version: V0.0 5 Date: 2020/04/26 6 History: 7 V2.0 2020/04/26 Preliminary 8 ********************************************************************************/ 9 #include "Main.h" 10 11 12 BOOL bLedDisFlg; //LED显示标志 13 BOOL bLedDisBleFlg; //蓝牙开启时显示 14 U8 xdata ucLedTimeCnt; 15 U8 xdata ucLedChgFlickCnt; 16 U8 xdata ucLedBleFlickCnt; 17 18 /************************************************************************************************* 19 * 函数名: LedGetDisNum 20 * 参 数: Rsoc:剩余容量百分比 21 * 返回值: 无 22 * 描 述: 根据剩余容量百分比,计算当前显示的LED数 23 *************************************************************************************************/ 24 U8 LedGetDisNum(U16 Rsoc) 25 { 26 1 if(Rsoc > 80) 27 1 { 28 2 return 5; 29 2 } 30 1 else if(Rsoc > 60) 31 1 { 32 2 return 4; 33 2 } 34 1 else if(Rsoc > 40) 35 1 { 36 2 return 3; 37 2 } 38 1 else if(Rsoc > 20) 39 1 { 40 2 return 2; 41 2 } 42 1 else if(Rsoc > 0) 43 1 { 44 2 return 1; 45 2 } 46 1 else 47 1 { 48 2 return 0; 49 2 } 50 1 } 51 52 53 /************************************************************************************************* C51 COMPILER V9.01 LED 02/22/2025 15:36:21 PAGE 2 54 * 函数名: LedAutoOff 55 * 参 数: 无 56 * 返回值: 无 57 * 描 述: 按键显示LED持续5S后,关闭LED显示 58 *************************************************************************************************/ 59 void LedAutoOff(void) 60 { 61 1 if(bLedDisFlg) 62 1 { 63 2 if(++ucLedTimeCnt >= 100) //100*50mS 64 2 { 65 3 ucLedTimeCnt = 0; 66 3 bLedDisFlg = 0; 67 3 } 68 2 } 69 1 } 70 71 /************************************************************************************************* 72 * 函数名: LedDisplay 73 * 参 数: 无 74 * 返回值: 无 75 * 描 述: 显示LED 76 充电时,充电LED指示灯以500mS周期闪烁 77 蓝牙开启时,蓝牙指示灯以250mS周期闪烁 78 显示容量时,LED开启5s后,自动熄灭 79 *************************************************************************************************/ 80 void LedDisplay(void) 81 { 82 1 U8 LedDisNum; 83 1 84 1 if(bCHGING) //显示充电状态 85 1 { 86 2 if(++ucLedChgFlickCnt >= 10) //10*50mS 87 2 { 88 3 ucLedChgFlickCnt = 0; 89 3 IO_LED_CHARGE ^= 1; 90 3 } 91 2 } 92 1 else 93 1 { 94 2 IO_LED_CHARGE = 0; 95 2 } 96 1 97 1 if(bLedDisBleFlg) //显示蓝牙开启状态 98 1 { 99 2 if(++ucLedBleFlickCnt >= 5) //5*50mS 100 2 { 101 3 ucLedBleFlickCnt = 0; 102 3 // IO_LED_BLE ^= 1; 103 3 } 104 2 } 105 1 else 106 1 { 107 2 // IO_LED_BLE = 0; 108 2 } 109 1 110 1 if(bLedDisFlg) //显示容量信息 111 1 { 112 2 LedDisNum = LedGetDisNum(Info.uiRSOC); 113 2 if(LedDisNum == 0) 114 2 { 115 3 // LEDAllOff(); C51 COMPILER V9.01 LED 02/22/2025 15:36:21 PAGE 3 116 3 } 117 2 if(LedDisNum == 1) 118 2 { 119 3 // LED1On(); 120 3 } 121 2 else if(LedDisNum == 2) 122 2 { 123 3 // LED1On(); 124 3 LED2On(); 125 3 } 126 2 else if(LedDisNum == 3) 127 2 { 128 3 // LED1On(); 129 3 LED2On(); 130 3 LED3On(); 131 3 } 132 2 else if(LedDisNum == 4) 133 2 { 134 3 // LED1On(); 135 3 LED2On(); 136 3 LED3On(); 137 3 LED4On(); 138 3 } 139 2 else if(LedDisNum == 5) 140 2 { 141 3 // LEDAllOn(); 142 3 } 143 2 } 144 1 else 145 1 { 146 2 // LEDAllOff(); 147 2 } 148 1 149 1 LedAutoOff(); //定时5s关闭容量LED显示 150 1 } 151 152 153 154 155 MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 174 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = 3 ---- PDATA SIZE = ---- ---- DATA SIZE = ---- ---- IDATA SIZE = ---- ---- BIT SIZE = 2 ---- END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)