Both_Way_Comm_SY8833/Project/Listings/bat.lst

314 lines
12 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)