C51 COMPILER V9.01 MOSCTRL 02/08/2025 15:18:21 PAGE 1 C51 COMPILER V9.01, COMPILATION OF MODULE MOSCTRL OBJECT MODULE PLACED IN .\output\MosCtrl.obj COMPILER INVOKED BY: D:\Tool\Keil\C51\BIN\C51.EXE code_drv\MosCtrl.c LARGE OPTIMIZE(7,SIZE) REGFILE(.\output\MCUCore_Loa -d.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage;.\code_classb\iec60730_lib\include;.\co -de_classb\iec60730_proc\Include;.\code_classb\config) DEBUG OBJECTEXTEND PRINT(.\output\MosCtrl.lst) OBJECT(.\output\Mos -Ctrl.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 bCHGMOSBk; 13 BOOL bDSGMOSBk; 14 /************************************************************************************************* 15 * 函数名: MosStatusCheck 16 * 参 数: 无 17 * 返回值: 无 18 * 描 述: 根据当前电池包的保护状态,确定是否置位对应的MOS控制标志 19 *************************************************************************************************/ 20 void MosStatusCheck(void) 21 { 22 1 bCHGMOS = 1; 23 1 bDSGMOS = 1; 24 1 25 1 if(bAFE_OV || bCTO) 26 1 { 27 2 bCHGMOS = 0; 28 2 } 29 1 30 1 if(bOTD || bUTD || bOCD1 || bOCD2 || bAFE_SC || bCTO) 31 1 { 32 2 bDSGMOS = 0; 33 2 } 34 1 35 1 if(!bDSGING) //检测到放电状态时,以下电压保护不关闭充电MOS(前提 -条件:bENMOS配置为1) 36 1 { 37 2 if(bOTC || bUTC || bOV || bOCC) 38 2 { 39 3 bCHGMOS = 0; 40 3 } 41 2 } 42 1 43 1 if(!bCHGING) //检测到充电状态时,以下电压保护不关闭放电MOS 44 1 { 45 2 if(bUV) 46 2 { 47 3 bDSGMOS = 0; 48 3 } 49 2 } 50 1 51 1 if(bOCD1 || bOCD2 || bAFE_SC) //放电过流时,如果OCPM配置为1,则关闭充电MOS C51 COMPILER V9.01 MOSCTRL 02/08/2025 15:18:21 PAGE 2 52 1 { 53 2 bCHGMOS = 0; 54 2 } 55 1 56 1 if(bOCC) //充电过流时,则关闭放电MOS 57 1 { 58 2 bDSGMOS = 0; 59 2 } 60 1 } 61 62 63 64 /************************************************************************************************* 65 * 函数名: MosCtrl 66 * 参 数: 无 67 * 返回值: 无 68 * 描 述: MOS控制 69 *************************************************************************************************/ 70 void MosCtrl(void) 71 { 72 1 MosStatusCheck(); //判断MOS状态有无变化,有变化则通过通讯控制AFE开关MOS 73 1 74 1 if((bCHGMOSBk!=bCHGMOS) || (bDSGMOSBk!=bDSGMOS)) 75 1 { 76 2 bCHGMOSBk = bCHGMOS; 77 2 bDSGMOSBk = bDSGMOS; 78 2 79 2 AFEMosCtl(((U8)bDSGMOS<<1) | bCHGMOS); 80 2 } 81 1 } 82 83 MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 119 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = ---- ---- IDATA SIZE = ---- ---- BIT SIZE = 2 ---- END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)