Both_Way_Comm_SY8833/Project/Listings/adc.lst

357 lines
15 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 ADC 06/14/2024 11:08:35 PAGE 1
C51 COMPILER V9.57.0.0, COMPILATION OF MODULE ADC
OBJECT MODULE PLACED IN .\Objects\adc.obj
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\adc\adc.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\adc.lst
-) TABS(2) OBJECT(.\Objects\adc.obj)
line level source
1 /*
2 ******************************************************************************
3 *
4 * @file adc.c
5 * @brief adc module
6 * @ic TP3102
7 *
8 * @version 1.0
9 * @date 2024/03/26 15:00: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 2022/08/04 Alex build this file
18 ******************************************************************************/
19 /*_____ I N C L U D E S ____________________________________________________*/
20
21 #include "adc.h"
22 #include "system.h"
23 #include "sys_tim.h"
24
25 #if ADC_ENABLE
26
27 /******************************************************************************\
28 Macro definitions
29 \******************************************************************************/
30
31 /******************************************************************************\
32 Variables definitions
33 \******************************************************************************/
34
35 idata uint16_t Vbat_Adc = 0;
36
37
38 /******************************************************************************\
39 Functions definitions
40 \******************************************************************************/
41
42
43 /*
44 *******************************************************************************
45 * uint16_t ADC_Chn_Data(ADC_CHANNELS_E adc_chn)
46 *
47 * Description : <20><>ȡ<EFBFBD><C8A1>Ӧͨ<D3A6><CDA8><EFBFBD>ĵ<EFBFBD>ѹADCֵ<43><D6B5>
48 *
49 * Arguments : NONE
50
51 * Returns : adc Value (mV)
C51 COMPILER V9.57.0.0 ADC 06/14/2024 11:08:35 PAGE 2
52
53 * Notes : NONE
54 *
55 *******************************************************************************
56 */
57
58 uint16_t ADC_Chn_Data(ADC_CHANNELS_E adc_chn)
59 {
60 1 uint8_t index = 0;
61 1 uint16_t adc_data = 0;
62 1 uint16_t adc_plus_data = 0;
63 1
64 1 SFRADDR = ADC_CTL0;
65 1 SFRDATA = 0x8B; //0x8B--ADC EN; Single mode; ADC CLK divided by 24=460k
66 1
67 1 for(index=0; index<8; index++)
68 1 {
69 2 ADC_CTL1 = (adc_chn << 4) | 0x01; //Channel set and Start conversion
70 2
71 2 while(ADC_CTL1 & 0x01); //Wait for conversion complete
72 2
73 2 adc_data = ADC_DATL; //Read low byte first! Lock ADC Value.
74 2
75 2 adc_data |= (uint16_t)(ADC_DATH << 8);
76 2
77 2 adc_plus_data += adc_data;
78 2 #ifdef _DEBUG_ADC
printf("adc4:%d,plus:%d.\r\n",(uint16_t)adc_data,(uint16_t)adc_plus_data);
#endif
81 2 // adc_data = 0;
82 2 }
83 1
84 1 adc_data = adc_plus_data >> 3;
85 1
86 1 #ifdef _DEBUG_ADC
printf("adc_chn1:%d.\r\n",(uint16_t)adc_data);
#endif
89 1
90 1 #ifdef _DEBUG_ADC
printf("Adc,Vadc:%d,Vref:%d.\r\n", (uint16_t)adc_data, (uint16_t)adc_plus_data);
#endif
93 1
94 1 return adc_data;
95 1 }
96
97 /*
98 *******************************************************************************
99 * uint16_t Vbat_Value(void)
100 *
101 * Description : Vbat Value.<2E><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>ѹ<EFBFBD><D1B9>
102 *
103 * Arguments : NONE
104
105 * Returns : Vbat Value (mV)
106
107 * Notes : NONE
108 *
109 *******************************************************************************
110 */
111 uint16_t Vbat_Value(void)
112 {
113 1 uint16_t n_Vbat_Data = 0;
C51 COMPILER V9.57.0.0 ADC 06/14/2024 11:08:35 PAGE 3
114 1 //uint16_t n_ADC_Plus = 0;
115 1
116 1 n_Vbat_Data = ADC_Chn_Data(ADC_BAT);
117 1
118 1 #ifdef _DEBUG_ADC
printf("bat_Vbat1:%d.\r\n",(uint16_t)n_Vbat_Data);
#endif
121 1
122 1 // n_ADC_Plus = ADC_Chn_Data(ADC_VREF); //<2F><>ȡVREF
123 1
124 1 n_Vbat_Data = (uint32_t)(n_Vbat_Data) * VREF * 2 / ADC_Chn_Data(ADC_VREF); //Vadx = VREF*DATAadx/DATAvr
-ef
125 1
126 1 #ifdef _DEBUG_ADC
printf("bat,Vbat:%d.\r\n",(uint16_t)n_Vbat_Data);
#endif
129 1
130 1 return n_Vbat_Data;
131 1 }
132
133 /*
134 *******************************************************************************
135 * uint16_t ADC_NTC_Value(void)
136 *
137 * Description : <20><>ȡNTC<54><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ
138
139 * Arguments : NONE
140
141 * Returns : ADC Value (mV)
142
143 * Notes : NONE
144 *
145 *******************************************************************************
146 */
147 #ifdef ADC_NTC_ENABLE
148
149 uint16_t ADC_NTC_Value(void)
150 {
151 1 uint16_t adc_data = 0;
152 1 // uint16_t adc_plus_data = 0;
153 1
154 1 adc_data = ADC_Chn_Data(ADC_CH4);
155 1
156 1 #ifdef _DEBUG_ADC
printf("adc_chn1:%d.\r\n",(uint16_t)adc_data);
#endif
159 1 // adc_plus_data = ADC_Chn_Data(ADC_VREF); //<2F><>ȡVREF
160 1
161 1 adc_data = (uint32_t)(adc_data) * VREF / ADC_Chn_Data(ADC_VREF); //Vadx = VREF*DATAadx/DATAvref
162 1
163 1 #ifdef _DEBUG_ADC
printf("Adc,Vadc:%d.\r\n", (uint16_t)adc_data);
#endif
166 1
167 1 return adc_data;
168 1 }
169 #endif
170
171
172 #endif
173
C51 COMPILER V9.57.0.0 ADC 06/14/2024 11:08:35 PAGE 4
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _ADC_Chn_Data (BEGIN)
; SOURCE LINE # 58
;---- Variable 'adc_chn' assigned to Register 'R5' ----
0000 AD07 MOV R5,AR7
; SOURCE LINE # 59
; SOURCE LINE # 60
;---- Variable 'index' assigned to Register 'R4' ----
0002 E4 CLR A
0003 FC MOV R4,A
; SOURCE LINE # 61
;---- Variable 'adc_data' assigned to Register 'R2/R3' ----
0004 FB MOV R3,A
0005 FA MOV R2,A
; SOURCE LINE # 62
0006 F500 R MOV adc_plus_data,A
0008 F500 R MOV adc_plus_data+01H,A
; SOURCE LINE # 64
000A 75FE29 MOV SFRADDR,#029H
; SOURCE LINE # 65
000D 75FF8B MOV SFRDATA,#08BH
; SOURCE LINE # 67
0010 ?C0001:
; SOURCE LINE # 68
; SOURCE LINE # 69
0010 ED MOV A,R5
0011 C4 SWAP A
0012 54F0 ANL A,#0F0H
0014 4401 ORL A,#01H
0016 F5A5 MOV ADC_CTL1,A
0018 ?C0004:
; SOURCE LINE # 71
0018 E5A5 MOV A,ADC_CTL1
001A 20E0FB JB ACC.0,?C0004
; SOURCE LINE # 73
001D AFA1 MOV R7,ADC_DATL
001F AB07 MOV R3,AR7
; SOURCE LINE # 75
0021 AFA2 MOV R7,ADC_DATH
0023 EF MOV A,R7
0024 FE MOV R6,A
0025 EE MOV A,R6
0026 FA MOV R2,A
; SOURCE LINE # 77
0027 EB MOV A,R3
0028 2500 R ADD A,adc_plus_data+01H
002A F500 R MOV adc_plus_data+01H,A
002C EA MOV A,R2
002D 3500 R ADDC A,adc_plus_data
002F F500 R MOV adc_plus_data,A
; SOURCE LINE # 82
0031 0C INC R4
0032 BC08DB CJNE R4,#08H,?C0001
0035 ?C0002:
; SOURCE LINE # 84
0035 E500 R MOV A,adc_plus_data+01H
0037 AE00 R MOV R6,adc_plus_data
0039 7803 MOV R0,#03H
003B ?C0009:
003B CE XCH A,R6
C51 COMPILER V9.57.0.0 ADC 06/14/2024 11:08:35 PAGE 5
003C C3 CLR C
003D 13 RRC A
003E CE XCH A,R6
003F 13 RRC A
0040 D8F9 DJNZ R0,?C0009
; SOURCE LINE # 94
0042 FF MOV R7,A
; SOURCE LINE # 95
0043 22 RET
; FUNCTION _ADC_Chn_Data (END)
; FUNCTION Vbat_Value (BEGIN)
; SOURCE LINE # 111
; SOURCE LINE # 112
; SOURCE LINE # 113
0000 E4 CLR A
0001 F500 R MOV n_Vbat_Data,A
0003 F500 R MOV n_Vbat_Data+01H,A
; SOURCE LINE # 116
0005 7F05 MOV R7,#05H
0007 120000 R LCALL _ADC_Chn_Data
000A 8E00 R MOV n_Vbat_Data,R6
000C 8F00 R MOV n_Vbat_Data+01H,R7
; SOURCE LINE # 124
000E 7F06 MOV R7,#06H
0010 120000 R LCALL _ADC_Chn_Data
0013 E4 CLR A
0014 FC MOV R4,A
0015 FD MOV R5,A
0016 C004 PUSH AR4
0018 A905 MOV R1,AR5
001A AA06 MOV R2,AR6
001C AB07 MOV R3,AR7
001E AE00 R MOV R6,n_Vbat_Data
0020 AF00 R MOV R7,n_Vbat_Data+01H
0022 7C07 MOV R4,#07H
0024 7DD0 MOV R5,#0D0H
0026 120000 E LCALL ?C?LIMUL
0029 D000 POP AR0
002B 120000 E LCALL ?C?ULDIV
002E 8E00 R MOV n_Vbat_Data,R6
0030 8F00 R MOV n_Vbat_Data+01H,R7
; SOURCE LINE # 130
; SOURCE LINE # 131
0032 22 RET
; FUNCTION Vbat_Value (END)
; FUNCTION ADC_NTC_Value (BEGIN)
; SOURCE LINE # 149
; SOURCE LINE # 150
; SOURCE LINE # 151
0000 E4 CLR A
0001 F500 R MOV adc_data,A
0003 F500 R MOV adc_data+01H,A
; SOURCE LINE # 154
0005 7F04 MOV R7,#04H
0007 120000 R LCALL _ADC_Chn_Data
000A 8E00 R MOV adc_data,R6
000C 8F00 R MOV adc_data+01H,R7
; SOURCE LINE # 161
000E 7F06 MOV R7,#06H
0010 120000 R LCALL _ADC_Chn_Data
C51 COMPILER V9.57.0.0 ADC 06/14/2024 11:08:35 PAGE 6
0013 E4 CLR A
0014 FC MOV R4,A
0015 FD MOV R5,A
0016 C004 PUSH AR4
0018 A905 MOV R1,AR5
001A AA06 MOV R2,AR6
001C AB07 MOV R3,AR7
001E AE00 R MOV R6,adc_data
0020 AF00 R MOV R7,adc_data+01H
0022 7C03 MOV R4,#03H
0024 7DE8 MOV R5,#0E8H
0026 120000 E LCALL ?C?LIMUL
0029 D000 POP AR0
002B 120000 E LCALL ?C?ULDIV
002E 8E00 R MOV adc_data,R6
0030 8F00 R MOV adc_data+01H,R7
; SOURCE LINE # 167
; SOURCE LINE # 168
0032 22 RET
; FUNCTION ADC_NTC_Value (END)
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 170 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 6
IDATA SIZE = 2 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)