Both_Way_Comm_SY8833/Project/Listings/uart.lst

611 lines
23 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.

This file contains Unicode characters that might be confused with other characters. 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 UART 06/14/2024 11:08:37 PAGE 1
C51 COMPILER V9.57.0.0, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN .\Objects\uart.obj
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\UsrSrc\uart\uart.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE INCDIR(..\Usr
-Inc\adc;..\UsrInc\charger;..\UsrInc\discharge;..\UsrInc\gpio;..\UsrInc\hall;..\UsrInc\i2c_simu;..\UsrInc\inc;..\UsrInc\k
-ey;..\UsrInc\led;..\UsrInc\mtp;..\UsrInc\pwm;..\UsrInc\sleep;..\UsrInc\system;..\UsrInc\uart;..\UsrInc\userapp;..\UsrInc
-\vox;..\UsrInc\vox_comm;..\UsrInc\watchdog;..\UsrInc\bat;..\UsrInc\timer) DEBUG OBJECTEXTEND CODE PRINT(.\Listings\uart.
-lst) TABS(2) OBJECT(.\Objects\uart.obj)
line level source
1 /*
2 ******************************************************************************
3 *
4 * @file uart.c
5 * @brief uart module
6 *
7 *
8 * @version 1.0
9 * @date 2022/12/14 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/12/14 Alex build this file
18 ******************************************************************************/
19 /*_____ I N C L U D E S ____________________________________________________*/
20 #include "uart.h"
21 #include "system.h"
22 #include "vox_module.h"
23
24
25 #if UART0_ENABLE
26
27 /******************************************************************************\
28 Macro definitions
29 \******************************************************************************/
30 #define NONE_PARITY 0 //<2F><>У<EFBFBD><D0A3>
31 #define ODD_PARITY 1 //<2F><>У<EFBFBD><D0A3>
32 #define EVEN_PARITY 2 //żУ<C5BC><D0A3>
33 #define MARK_PARITY 3 //<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
34 #define SPACE_PARITY 4 //<2F>հ<EFBFBD>У<EFBFBD><D0A3>
35
36 #define PARITYBIT EVEN_PARITY //<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>λ
37
38 /******************************************************************************\
39 Variables definitions
40 \******************************************************************************/
41
42 bit busy0;
43
44 #ifdef VOX_RX
45 idata uint8_t RX0_Buffer[COM0_Data_Lenth] = 0; //<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD>
46 bit Uart0_RX_Finish_Flag = 0;
47 #endif
48
49 #endif
50
51 #ifdef _DEBUG_ALL
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 2
char putchar(char c)
{
while(!TI0);
TI0 = 0;
return (S0BUF = c);
// Uart0SendData(c);
// return(c);
}
#endif
63
64 #if UART0_ENABLE
65
66 /*
67 *******************************************************************************
68 * void UART0_Init(void)
69 *
70 * Description : UART0 Initialization UART0<54><30><EFBFBD><EFBFBD>debug<75><67><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
71 *
72 * Arguments : NONE
73
74 * Returns : NONE
75
76 * Notes : NONE
77 *
78 *******************************************************************************
79 */
80 #if 0
void UART0_Init(void)
{
SFRADDR = MFP_CTL0;
SFRDATA &= ~0x0C;
SFRDATA |= 0x04; //P01 as UART's TX
BD = 1; //Select additional Baudrate generator
PCON |= 0x80; //Baudrate double enable
//baudrate set
S0RELH = HIBYTE(S0REL_VALUE);
S0RELL = LOBYTE(S0REL_VALUE);//s0rel=1023, baudrate = fclk/32 = 187.5k
S0CON = 0xD0; //SCON: MODE 3, 9-bit UART, RI enable, EVEN Parity
TI0 = 1;
RI0 = 1;
ES0 = 1; //Enable UART0 IRQ
}
#endif
101 /*
102 *******************************************************************************
103 * void Uart0SendData(uint8_t Txdata)
104 *
105 * Description : UART0 Send Data
106 *
107 * Arguments : NONE
108
109 * Returns : NONE
110
111 * Notes : NONE
112 *
113 *******************************************************************************
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 3
114 */
115 #if 0
void Uart0SendData(uint8_t Txdata)
{
while(busy0);
ACC = Txdata;
if (P) //<2F><><EFBFBD><EFBFBD>P<EFBFBD><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3>λ
{
#if (PARITYBIT == ODD_PARITY)
TB80 = 0; //<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>λΪ0
#elif (PARITYBIT == EVEN_PARITY)
TB80 = 1; //<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>λΪ1
#endif
}
else
{
#if (PARITYBIT == ODD_PARITY)
TB80 = 1; //<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>λΪ1
#elif (PARITYBIT == EVEN_PARITY)
TB80 = 0; //<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>λΪ0
#endif
}
busy0 = 1;
S0BUF = ACC;
}
#endif
140
141 /*
142 *******************************************************************************
143 * void Uart0SendPacket(uint8_t Length,uint8_t *TransBuf)
144 *
145 * Description : UART0 Send Packet
146 *
147 * Arguments : NONE
148
149 * Returns : NONE
150
151 * Notes : NONE
152 *
153 *******************************************************************************
154 */
155 #ifdef VOX_TX
156
157 void Uart0SendPacket(uint16_t Length,uint8_t *TransBuf)
158 {
159 1 uint8_t i = 0;
160 1 for(i=0;i<Length;i++)
161 1 {
162 2 //Uart0SendData(*TransBuf++);
163 2
164 2 while(busy0);
165 2 ACC = *TransBuf++;
166 2 busy0 = 1;
167 2 S0BUF = ACC;
168 2 }
169 1 }
170 #endif
171
172 #endif
173
174 #if UART0_ENABLE
175
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 4
176 #if defined(QIANCHENG) //<2F><>ة
#define Vox_Comm_Data_Len 5
#elif defined(ZHONGKELANXUN) //<2F>п<EFBFBD><D0BF><EFBFBD>Ѷ
#define Vox_Comm_Data_Len 5
#elif defined(XIAOMI)
185
186 #define Vox_Comm_Data_Len 7
187
188 #endif
189
190
191 /*uart0<74>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
192 void uart0_Interrupt(void) interrupt Interrupt_Vector_RI_TI
193 {
194 1 static uint8_t Rx0Status;
195 1 #ifdef XIAOMI
196 1
197 1 static uint16_t RX0_Cnt;
198 1 static uint16_t RX0DataLen;
199 1
200 1 #else
static uint8_t RX0_Cnt;
static uint8_t RX0DataLen;
#endif
206 1 /*<2A><><EFBFBD><EFBFBD>UART0<54><30><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>*/
207 1 if(TI0)
208 1 {
209 2 TI0 = 0;
210 2 busy0 = 0;
211 2 }
212 1
213 1 /*<2A><><EFBFBD><EFBFBD>UART0<54><30><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>*/
214 1 if(RI0)
215 1 {
216 2 RI0 = 0;
217 2
218 2 #ifdef VOX_RX
219 2
220 2 #if defined(QIANCHENG) //<2F><>ة
switch(Rx0Status)
{
case 0:
if(S0BUF == 0xA5)
{
Rx0Status = 1;
RX0_Cnt = 0;
RX0_Buffer[RX0_Cnt] = S0BUF;
RX0_Cnt++;
}
else
{
Rx0Status = 0;
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 5
RX0_Cnt = 0;
}
break;
case 1:
RX0_Buffer[RX0_Cnt] = S0BUF;
RX0_Cnt++;
if( RX0_Cnt == Vox_Comm_Data_Len )
{
RX0DataLen = RX0_Buffer[4] + 5; //<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
}
if( (RX0DataLen == RX0_Cnt) || (RX0_Cnt > COM0_Data_Lenth) ) //<2F><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD>data<74><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RX0DataLen<65><6E><EFBFBD><EFBFBD><EFBFBD>
-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>
{
RX0_Cnt = 0;
Rx0Status = 0;
Uart0_RX_Finish_Flag = 1;
}
}
#elif defined(ZHONGKELANXUN) //<2F>п<EFBFBD><D0BF><EFBFBD>Ѷ
switch(Rx0Status)
{
case 0:
if( S0BUF == (BOXHEADER >> 8) )
{
Rx0Status = 1;
RX0_Cnt = 0;
RX0_Buffer[RX0_Cnt] = S0BUF;
RX0_Cnt++;
}
else
{
Rx0Status = 0;
RX0_Cnt = 0;
}
break;
case 1:
if(S0BUF == BOXHEADER)
{
Rx0Status = 2;
RX0_Buffer[RX0_Cnt] = S0BUF;
RX0_Cnt++;
}
else
{
Rx0Status = 0;
RX0_Cnt = 0;
}
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 6
break;
case 1:
RX0_Buffer[RX0_Cnt] = S0BUF;
if(RX0DataLen == RX0_Cnt - 6)
{
RX0_Cnt = 0;
Rx0Status = 0;
Uart0_RX_Finish_Flag = 1;
}
else
{
RX0_Cnt++;
if(RX0_Cnt == 5)
{
RX0DataLen = RX0_Buffer[4]; //<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> length,length<74><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Checksum
}
}
}
#elif defined(XIAOMI) //С<><D0A1>
321 2
322 2 switch(Rx0Status)
323 2 {
324 3 case 0:
325 3
326 3 if(S0BUF == 0xAA)
327 3 {
328 4 Rx0Status = 1;
329 4
330 4 RX0_Cnt = 0;
331 4
332 4 RX0_Buffer[RX0_Cnt] = S0BUF;
333 4
334 4 RX0_Cnt++;
335 4 }
336 3 else
337 3 {
338 4 Rx0Status = 0;
339 4
340 4 RX0_Cnt = 0;
341 4 }
342 3 break;
343 3
344 3 case 1:
345 3
346 3 RX0_Buffer[RX0_Cnt] = S0BUF;
347 3
348 3 RX0_Cnt++;
349 3
350 3 if( RX0_Cnt == Vox_Comm_Data_Len )
351 3 {
352 4 RX0DataLen = RX0_Buffer[5] | (RX0_Buffer[6] << 8) + 9; //<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ݳ<EFBFBD><DDB3>ȣ<EFBFBD>Headr(1Byte) + Trandsmit Dir(1
-Byte) + CMD(2Bytes) + datalen(2Bytes) + CRC16(2Bytes)
353 4 }
354 3
355 3 if( (RX0DataLen == RX0_Cnt) || (RX0_Cnt > COM0_Data_Lenth) ) //<2F><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD>data<74><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RX0DataLen<65><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
-<2D><><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>
356 3 {
357 4 RX0_Cnt = 0;
358 4 Rx0Status = 0;
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 7
359 4 Uart0_RX_Finish_Flag = 1;
360 4 }
361 3 }
362 2
363 2
364 2
365 2 #endif
366 2
367 2 #endif
368 2 }
369 1 }
370
371 #endif
372
373
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 8
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION Com0015 (BEGIN)
0000 L?0022:
0000 7400 R MOV A,#LOW RX0_Buffer
0002 2500 R ADD A,RX0_Cnt+01H
0004 F8 MOV R0,A
0005 A699 MOV @R0,S0BUF
0007 0500 R INC RX0_Cnt+01H
0009 E500 R MOV A,RX0_Cnt+01H
000B 22 RET
000C L?0023:
000C L?0024:
000C 750000 R MOV RX0_Cnt,#00H
000F 750000 R MOV RX0_Cnt+01H,#00H
0012 22 RET
; FUNCTION Com0015 (END)
; FUNCTION _Uart0SendPacket (BEGIN)
; SOURCE LINE # 157
0000 8E00 R MOV Length,R6
0002 8F00 R MOV Length+01H,R7
0004 8B00 R MOV TransBuf,R3
0006 8A00 R MOV TransBuf+01H,R2
0008 8900 R MOV TransBuf+02H,R1
; SOURCE LINE # 158
; SOURCE LINE # 159
;---- Variable 'i' assigned to Register 'R7' ----
000A E4 CLR A
000B FF MOV R7,A
; SOURCE LINE # 160
000C ?C0001:
000C EF MOV A,R7
000D C3 CLR C
000E 9500 R SUBB A,Length+01H
0010 E4 CLR A
0011 9500 R SUBB A,Length
0013 5016 JNC ?C0006
; SOURCE LINE # 161
0015 ?C0004:
; SOURCE LINE # 164
0015 2000FD R JB busy0,?C0004
; SOURCE LINE # 165
0018 7800 R MOV R0,#LOW TransBuf
001A E4 CLR A
001B 75F001 MOV B,#01H
001E 120000 E LCALL ?C?PLDIIDATA
0021 120000 E LCALL ?C?CLDPTR
; SOURCE LINE # 166
0024 D200 R SETB busy0
; SOURCE LINE # 167
0026 F599 MOV S0BUF,A
; SOURCE LINE # 168
0028 0F INC R7
0029 80E1 SJMP ?C0001
; SOURCE LINE # 169
002B ?C0006:
002B 22 RET
; FUNCTION _Uart0SendPacket (END)
; FUNCTION uart0_Interrupt (BEGIN)
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 9
0000 C0E0 PUSH ACC
0002 C0D0 PUSH PSW
0004 75D000 MOV PSW,#00H
0007 C000 PUSH AR0
0009 C005 PUSH AR5
000B C006 PUSH AR6
000D C007 PUSH AR7
; SOURCE LINE # 192
; SOURCE LINE # 207
000F 309904 JNB TI0,?C0007
; SOURCE LINE # 208
; SOURCE LINE # 209
0012 C299 CLR TI0
; SOURCE LINE # 210
0014 C200 R CLR busy0
; SOURCE LINE # 211
0016 ?C0007:
; SOURCE LINE # 214
0016 309867 JNB RI0,?C0017
; SOURCE LINE # 215
; SOURCE LINE # 216
0019 C298 CLR RI0
; SOURCE LINE # 322
001B E500 R MOV A,Rx0Status
001D 14 DEC A
001E 601F JZ ?C0013
0020 04 INC A
0021 705D JNZ ?C0017
; SOURCE LINE # 323
; SOURCE LINE # 324
0023 ?C0010:
; SOURCE LINE # 326
0023 E599 MOV A,S0BUF
0025 B4AA0F CJNE A,#0AAH,?C0011
; SOURCE LINE # 327
; SOURCE LINE # 328
0028 750001 R MOV Rx0Status,#01H
; SOURCE LINE # 330
002B 120000 R LCALL L?0023
; SOURCE LINE # 332
; SOURCE LINE # 334
002E 120000 R LCALL L?0022
0031 7002 JNZ ?C0018
0033 0500 R INC RX0_Cnt
0035 ?C0018:
; SOURCE LINE # 335
0035 8049 SJMP ?C0017
0037 ?C0011:
; SOURCE LINE # 337
; SOURCE LINE # 338
0037 750000 R MOV Rx0Status,#00H
; SOURCE LINE # 340
003A 120000 R LCALL L?0023
; SOURCE LINE # 341
; SOURCE LINE # 342
003D 8041 SJMP ?C0017
; SOURCE LINE # 344
003F ?C0013:
; SOURCE LINE # 346
; SOURCE LINE # 348
003F 120000 R LCALL L?0022
0042 7002 JNZ ?C0019
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 10
0044 0500 R INC RX0_Cnt
0046 ?C0019:
; SOURCE LINE # 350
0046 6407 XRL A,#07H
0048 4500 R ORL A,RX0_Cnt
004A 7015 JNZ ?C0014
; SOURCE LINE # 351
; SOURCE LINE # 352
004C 7800 R MOV R0,#LOW RX0_Buffer+06H
004E E6 MOV A,@R0
004F FE MOV R6,A
0050 E4 CLR A
0051 2409 ADD A,#09H
0053 FF MOV R7,A
0054 E4 CLR A
0055 3E ADDC A,R6
0056 FE MOV R6,A
0057 18 DEC R0
0058 E6 MOV A,@R0
0059 FD MOV R5,A
005A EE MOV A,R6
005B F500 R MOV RX0DataLen,A
005D EF MOV A,R7
005E 4D ORL A,R5
005F F500 R MOV RX0DataLen+01H,A
; SOURCE LINE # 353
0061 ?C0014:
; SOURCE LINE # 355
0061 E500 R MOV A,RX0DataLen+01H
0063 6500 R XRL A,RX0_Cnt+01H
0065 7004 JNZ ?C0020
0067 E500 R MOV A,RX0DataLen
0069 6500 R XRL A,RX0_Cnt
006B ?C0020:
006B 600B JZ ?C0016
006D D3 SETB C
006E E500 R MOV A,RX0_Cnt+01H
0070 940B SUBB A,#0BH
0072 E500 R MOV A,RX0_Cnt
0074 9400 SUBB A,#00H
0076 4008 JC ?C0017
0078 ?C0016:
; SOURCE LINE # 356
; SOURCE LINE # 357
0078 120000 R LCALL L?0024
; SOURCE LINE # 358
007B 750000 R MOV Rx0Status,#00H
; SOURCE LINE # 359
007E D200 R SETB Uart0_RX_Finish_Flag
; SOURCE LINE # 360
; SOURCE LINE # 361
; SOURCE LINE # 368
; SOURCE LINE # 369
0080 ?C0017:
0080 D007 POP AR7
0082 D006 POP AR6
0084 D005 POP AR5
0086 D000 POP AR0
0088 D0D0 POP PSW
008A D0E0 POP ACC
008C 32 RETI
; FUNCTION uart0_Interrupt (END)
C51 COMPILER V9.57.0.0 UART 06/14/2024 11:08:37 PAGE 11
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 204 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 5
IDATA SIZE = 11 ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)