314 lines
12 KiB
Plaintext
314 lines
12 KiB
Plaintext
C51 COMPILER V9.57.0.0 BAT 06/14/2024 11:08:38 PAGE 1
|
||
|
||
|
||
C51 COMPILER V9.57.0.0, COMPILATION OF MODULE BAT
|
||
OBJECT MODULE PLACED IN .\Objects\bat.obj
|
||
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\bat\bat.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\UsrIn
|
||
-c\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\key
|
||
-;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc\v
|
||
-ox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\bat.lst
|
||
-) TABS(2) OBJECT(.\Objects\bat.obj)
|
||
|
||
line level source
|
||
|
||
1 /*
|
||
2 ******************************************************************************
|
||
3 *
|
||
4 * @file bat.c
|
||
5 * @brief Voltage-based RC model gauge algorithm
|
||
6 *
|
||
7 *
|
||
8 * @version 1.0
|
||
9 * @date 2023/02/20 17:35:40
|
||
10 * @author Alex Xu
|
||
11 *
|
||
12 * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd.
|
||
13 * All Rights Reserved
|
||
14 *
|
||
15 * History:
|
||
16 * Revision Date Author Desc
|
||
17 * 1.0.0 2023/02/20 Alex build this file
|
||
18 ******************************************************************************
|
||
19 */
|
||
20 #include "bat.h"
|
||
21 #include "adc.h"
|
||
22
|
||
23 idata uint8_t bat_level = 0;
|
||
24 bit F_batlevel_low = 0; //µç³ØµÍѹ
|
||
25
|
||
26 #if BAT_VALUE
|
||
27
|
||
28 #define C_offset_bat_level_MAX 50
|
||
29 #define C_offset_bat_level_MIN 10
|
||
30
|
||
31 #define C_bat_level_protect 0
|
||
32 #define C_bat_level_lowpower 1
|
||
33
|
||
34
|
||
35 //bit F_batlevel_protect = 0; //µÍµç±£»¤
|
||
36 idata uint8_t offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2;
|
||
37
|
||
38
|
||
39 #define C_batLevel_SetMax 10
|
||
40
|
||
41 /*³äµçµç³Øµçѹ»á¸¡¸ß,¾ßÌåµçѹÐèÒª²âÊÔ¡£*/
|
||
42 const uint16_t Boost_batlevel_Threshold[C_batLevel_SetMax] =
|
||
43 {
|
||
44 3000, //1
|
||
45 3100, //2
|
||
46 3300, //3
|
||
47 3400, //4
|
||
48 3500, //5
|
||
49 3650, //6
|
||
50 3800, //7
|
||
51 3900, //8
|
||
C51 COMPILER V9.57.0.0 BAT 06/14/2024 11:08:38 PAGE 2
|
||
|
||
52 4050, //9
|
||
53 4200 //10
|
||
54 };
|
||
55 #if 0
|
||
const uint16_t Charging_batlevel_Threshold1[C_batLevel_SetMax] =
|
||
{
|
||
3050, //1
|
||
3150, //2
|
||
3350, //3
|
||
3450, //4
|
||
3550, //5
|
||
3700, //6
|
||
3850, //7
|
||
3950, //8
|
||
4100, //9
|
||
4200 //10
|
||
};
|
||
#endif
|
||
70 void check_bat_level(void)
|
||
71 {
|
||
72 1 uint8_t i = 0;
|
||
73 1 //get bat level
|
||
74 1 #if ADC_ENABLE
|
||
75 1 for(i=0; i < C_batLevel_SetMax; i++)
|
||
76 1 {
|
||
77 2 #if 0
|
||
|
||
if( Vbat_Adc < Boost_batlevel_Threshold[i] )
|
||
{
|
||
break;
|
||
}
|
||
|
||
#else
|
||
85 2 if(CHIP_STA4 & 0x80) //³äµç
|
||
86 2 {
|
||
87 3 if( Vbat_Adc < Boost_batlevel_Threshold[i] + 50 )
|
||
88 3 break;
|
||
89 3 }
|
||
90 2 else //·Åµç
|
||
91 2 {
|
||
92 3 if( Vbat_Adc < Boost_batlevel_Threshold[i] )
|
||
93 3 {
|
||
94 4 break;
|
||
95 4 }
|
||
96 3 }
|
||
97 2 #endif
|
||
98 2 }
|
||
99 1 #endif
|
||
100 1
|
||
101 1 if( i > bat_level )
|
||
102 1 {
|
||
103 2 offset_bat_level++;
|
||
104 2 }
|
||
105 1 else
|
||
106 1 {
|
||
107 2 offset_bat_level--;
|
||
108 2 }
|
||
109 1
|
||
110 1 //debounce
|
||
111 1 if( (offset_bat_level > C_offset_bat_level_MAX) || (offset_bat_level < C_offset_bat_level_MIN) )
|
||
112 1 {
|
||
113 2 //update
|
||
C51 COMPILER V9.57.0.0 BAT 06/14/2024 11:08:38 PAGE 3
|
||
|
||
114 2 bat_level = i;
|
||
115 2 offset_bat_level = ( C_offset_bat_level_MAX + C_offset_bat_level_MIN ) / 2;
|
||
116 2 }
|
||
117 1 #if 0
|
||
if( bat_level <= C_bat_level_protect )
|
||
{
|
||
F_batlevel_protect = 1;
|
||
}
|
||
else if( bat_level > ( C_bat_level_protect + 1 ) )
|
||
{
|
||
F_batlevel_protect = 0;
|
||
}
|
||
#endif
|
||
127 1 if( bat_level <= C_bat_level_lowpower )
|
||
128 1 {
|
||
129 2 F_batlevel_low = 1;
|
||
130 2 }
|
||
131 1 else if( bat_level > (C_bat_level_lowpower + 1) )
|
||
132 1 {
|
||
133 2 F_batlevel_low = 0;
|
||
134 2 }
|
||
135 1 }
|
||
136
|
||
137 #endif
|
||
C51 COMPILER V9.57.0.0 BAT 06/14/2024 11:08:38 PAGE 4
|
||
|
||
ASSEMBLY LISTING OF GENERATED OBJECT CODE
|
||
|
||
|
||
; FUNCTION Com0010 (BEGIN)
|
||
0000 L?0017:
|
||
0000 EF MOV A,R7
|
||
0001 25E0 ADD A,ACC
|
||
0003 2400 R ADD A,#LOW Boost_batlevel_Threshold
|
||
0005 F8 MOV R0,A
|
||
0006 E6 MOV A,@R0
|
||
0007 FC MOV R4,A
|
||
0008 08 INC R0
|
||
0009 E6 MOV A,@R0
|
||
000A 22 RET
|
||
; FUNCTION Com0010 (END)
|
||
|
||
; FUNCTION check_bat_level (BEGIN)
|
||
; SOURCE LINE # 70
|
||
; SOURCE LINE # 71
|
||
; SOURCE LINE # 72
|
||
;---- Variable 'i' assigned to Register 'R7' ----
|
||
0000 E4 CLR A
|
||
0001 FF MOV R7,A
|
||
; SOURCE LINE # 75
|
||
0002 ?C0001:
|
||
; SOURCE LINE # 76
|
||
; SOURCE LINE # 85
|
||
0002 E5E6 MOV A,CHIP_STA4
|
||
0004 30E715 JNB ACC.7,?C0004
|
||
; SOURCE LINE # 86
|
||
; SOURCE LINE # 87
|
||
0007 120000 R LCALL L?0017
|
||
000A 2432 ADD A,#032H
|
||
000C FD MOV R5,A
|
||
000D E4 CLR A
|
||
000E 3C ADDC A,R4
|
||
000F FC MOV R4,A
|
||
0010 C3 CLR C
|
||
0011 7800 E MOV R0,#LOW Vbat_Adc+01H
|
||
0013 E6 MOV A,@R0
|
||
0014 9D SUBB A,R5
|
||
0015 18 DEC R0
|
||
0016 E6 MOV A,@R0
|
||
0017 9C SUBB A,R4
|
||
0018 5010 JNC ?C0003
|
||
; SOURCE LINE # 88
|
||
001A 8012 SJMP ?C0002
|
||
; SOURCE LINE # 89
|
||
001C ?C0004:
|
||
; SOURCE LINE # 91
|
||
; SOURCE LINE # 92
|
||
001C 120000 R LCALL L?0017
|
||
001F FD MOV R5,A
|
||
0020 C3 CLR C
|
||
0021 7800 E MOV R0,#LOW Vbat_Adc+01H
|
||
0023 E6 MOV A,@R0
|
||
0024 9D SUBB A,R5
|
||
0025 18 DEC R0
|
||
0026 E6 MOV A,@R0
|
||
0027 9C SUBB A,R4
|
||
0028 4004 JC ?C0002
|
||
; SOURCE LINE # 93
|
||
C51 COMPILER V9.57.0.0 BAT 06/14/2024 11:08:38 PAGE 5
|
||
|
||
; SOURCE LINE # 94
|
||
; SOURCE LINE # 95
|
||
; SOURCE LINE # 96
|
||
; SOURCE LINE # 98
|
||
002A ?C0003:
|
||
002A 0F INC R7
|
||
002B BF0AD4 CJNE R7,#0AH,?C0001
|
||
002E ?C0002:
|
||
; SOURCE LINE # 101
|
||
002E 7800 R MOV R0,#LOW bat_level
|
||
0030 E6 MOV A,@R0
|
||
0031 FE MOV R6,A
|
||
0032 EF MOV A,R7
|
||
0033 D3 SETB C
|
||
0034 9E SUBB A,R6
|
||
0035 4004 JC ?C0008
|
||
; SOURCE LINE # 102
|
||
; SOURCE LINE # 103
|
||
0037 18 DEC R0
|
||
0038 06 INC @R0
|
||
; SOURCE LINE # 104
|
||
0039 8003 SJMP ?C0009
|
||
003B ?C0008:
|
||
; SOURCE LINE # 106
|
||
; SOURCE LINE # 107
|
||
003B 7800 R MOV R0,#LOW offset_bat_level
|
||
003D 16 DEC @R0
|
||
; SOURCE LINE # 108
|
||
003E ?C0009:
|
||
; SOURCE LINE # 111
|
||
003E 7800 R MOV R0,#LOW offset_bat_level
|
||
0040 E6 MOV A,@R0
|
||
0041 FE MOV R6,A
|
||
0042 D3 SETB C
|
||
0043 9432 SUBB A,#032H
|
||
0045 5006 JNC ?C0011
|
||
0047 EE MOV A,R6
|
||
0048 C3 CLR C
|
||
0049 940A SUBB A,#0AH
|
||
004B 5007 JNC ?C0010
|
||
004D ?C0011:
|
||
; SOURCE LINE # 112
|
||
; SOURCE LINE # 114
|
||
004D 7800 R MOV R0,#LOW bat_level
|
||
004F A607 MOV @R0,AR7
|
||
; SOURCE LINE # 115
|
||
0051 18 DEC R0
|
||
0052 761E MOV @R0,#01EH
|
||
; SOURCE LINE # 116
|
||
0054 ?C0010:
|
||
; SOURCE LINE # 127
|
||
0054 7800 R MOV R0,#LOW bat_level
|
||
0056 E6 MOV A,@R0
|
||
0057 FF MOV R7,A
|
||
0058 D3 SETB C
|
||
0059 9401 SUBB A,#01H
|
||
005B 5003 JNC ?C0012
|
||
; SOURCE LINE # 128
|
||
; SOURCE LINE # 129
|
||
005D D200 R SETB F_batlevel_low
|
||
; SOURCE LINE # 130
|
||
005F 22 RET
|
||
C51 COMPILER V9.57.0.0 BAT 06/14/2024 11:08:38 PAGE 6
|
||
|
||
0060 ?C0012:
|
||
; SOURCE LINE # 131
|
||
0060 EF MOV A,R7
|
||
0061 D3 SETB C
|
||
0062 9402 SUBB A,#02H
|
||
0064 4002 JC ?C0015
|
||
; SOURCE LINE # 132
|
||
; SOURCE LINE # 133
|
||
0066 C200 R CLR F_batlevel_low
|
||
; SOURCE LINE # 134
|
||
; SOURCE LINE # 135
|
||
0068 ?C0015:
|
||
0068 22 RET
|
||
; FUNCTION check_bat_level (END)
|
||
|
||
|
||
|
||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||
CODE SIZE = 116 ----
|
||
CONSTANT SIZE = ---- ----
|
||
XDATA SIZE = ---- ----
|
||
PDATA SIZE = ---- ----
|
||
DATA SIZE = 20 ----
|
||
IDATA SIZE = 2 ----
|
||
BIT SIZE = 1 ----
|
||
END OF MODULE INFORMATION.
|
||
|
||
|
||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|