📄 myusart.txt
字号:
000106 f7fffffe BL UART_Transmit
|L1.266|
;;;119 }
;;;120
;;;121 UART_Transmit(ch_XOR);
00010a 4610 MOV r0,r2
00010c f7fffffe BL UART_Transmit
;;;122 UART_Transmit(0x55);
000110 2055 MOVS r0,#0x55
000112 f7fffffe BL UART_Transmit
;;;123 }
000116 e8bd83f0 POP {r4-r9,pc}
;;;124 //函数增加了判断是否有新数据被收到的条件
ENDP
Get_PC_Rate PROC
;;;125 //修改日期:2008年,2月12日
;;;126 unsigned char Get_PC_Rate(long int* p_Rate)
00011a b5fe PUSH {r1-r7,lr}
;;;127 {
00011c 4605 MOV r5,r0
;;;128 unsigned char Temp_Array[9] = {0};
00011e 2000 MOVS r0,#0
000120 9000 STR r0,[sp,#0]
000122 9001 STR r0,[sp,#4]
000124 9002 STR r0,[sp,#8]
;;;129 unsigned char i =0;
000126 2400 MOVS r4,#0
;;;130 long int Temp = 0;
000128 2700 MOVS r7,#0
;;;131 long int Temp_Rate = 0;
00012a 2600 MOVS r6,#0
;;;132 static unsigned char ch_CMD = 0; //命令位用静态变量,保证数据能保持在
;;;133 //上一次接收到的值(即不丢失)
;;;134 if(Get_PC_Data(Temp_Array, 9)) //如果收到新数据才进行数据校验与恢复
00012c 2109 MOVS r1,#9
00012e 4668 MOV r0,sp
000130 f7fffffe BL Get_PC_Data
000134 b1d8 CBZ r0,|L1.366|
;;;135 { //这样提高了查询速度
;;;136 if((Temp_Array[0] == 0xaa)&&(Temp_Array[8] == 0x55))
000136 f89d0000 LDRB r0,[sp,#0]
00013a 28aa CMP r0,#0xaa
00013c d117 BNE |L1.366|
00013e f89d0008 LDRB r0,[sp,#8]
000142 2855 CMP r0,#0x55
000144 d113 BNE |L1.366|
;;;137 {
;;;138 for(i=3; i<7; i++)
000146 2403 MOVS r4,#3
000148 e00a B |L1.352|
|L1.330|
;;;139 {
;;;140 Temp = Temp_Array[i];
00014a f81d7004 LDRB r7,[sp,r4]
;;;141 Temp_Rate |= Temp_Array[i]<<((6-i)<<3);//8*(6-i)
00014e f81d0004 LDRB r0,[sp,r4]
000152 f1c40106 RSB r1,r4,#6
000156 00c9 LSLS r1,r1,#3
000158 4088 LSLS r0,r0,r1
00015a 4306 ORRS r6,r6,r0
00015c 1c60 ADDS r0,r4,#1 ;138
00015e b2c4 UXTB r4,r0 ;138
|L1.352|
000160 2c07 CMP r4,#7 ;138
000162 dbf2 BLT |L1.330|
;;;142 }
;;;143 ch_CMD = Temp_Array[2]; //获取命令位
000164 f89d0002 LDRB r0,[sp,#2]
000168 492c LDR r1,|L1.540|
00016a 7008 STRB r0,[r1,#0]
;;;144 *p_Rate = Temp_Rate; //获取数据位
00016c 602e STR r6,[r5,#0]
|L1.366|
;;;145 }
;;;146 }
;;;147 return ch_CMD;
00016e 482b LDR r0,|L1.540|
000170 7800 LDRB r0,[r0,#0] ; ch_CMD
;;;148 }
000172 bdfe POP {r1-r7,pc}
;;;149 void UART_Transmit(unsigned char ch_Data)
ENDP
Display_A_String PROC
;;;160 }
;;;161 void Display_A_String(unsigned char *p_STR)
000174 b500 PUSH {lr}
;;;162 {
000176 4602 MOV r2,r0
;;;163 while(*p_STR)
000178 e003 B |L1.386|
|L1.378|
;;;164 {
;;;165 UART_Transmit(*p_STR ++);
00017a f8120b01 LDRB r0,[r2],#1
00017e f7fffffe BL UART_Transmit
|L1.386|
000182 7810 LDRB r0,[r2,#0] ;163
000184 2800 CMP r0,#0 ;163
000186 d1f8 BNE |L1.378|
;;;166 }
;;;167 }
000188 bd00 POP {pc}
;;;168 unsigned char Is_Buffer_New(unsigned char* Buffer, unsigned char Buffer_Length)
ENDP
Is_Buffer_New PROC
00018a b530 PUSH {r4,r5,lr}
;;;169 {
00018c 4602 MOV r2,r0
00018e 460b MOV r3,r1
;;;170 unsigned char i = 0;
000190 2100 MOVS r1,#0
;;;171 unsigned char Flag = 0;
000192 2000 MOVS r0,#0
;;;172 static unsigned char Temp_Buffer[30] = {0};
;;;173 {
;;;174 for(i = 0; i< Buffer_Length; i++)
000194 bf00 NOP
000196 e00a B |L1.430|
|L1.408|
;;;175 {
;;;176 if(Temp_Buffer[i] != Buffer[i])
000198 4c21 LDR r4,|L1.544|
00019a 5c64 LDRB r4,[r4,r1]
00019c 5c55 LDRB r5,[r2,r1]
00019e 42ac CMP r4,r5
0001a0 d003 BEQ |L1.426|
;;;177 {
;;;178 Temp_Buffer[i] = Buffer[i];
0001a2 5c54 LDRB r4,[r2,r1]
0001a4 4d1e LDR r5,|L1.544|
0001a6 546c STRB r4,[r5,r1]
;;;179 Flag = 1;
0001a8 2001 MOVS r0,#1
|L1.426|
0001aa 1c4c ADDS r4,r1,#1 ;174
0001ac b2e1 UXTB r1,r4 ;174
|L1.430|
0001ae 4299 CMP r1,r3 ;174
0001b0 dbf2 BLT |L1.408|
;;;180 }
;;;181 }
;;;182 }
;;;183 return Flag;
;;;184 }
0001b2 bd30 POP {r4,r5,pc}
;;;185
ENDP
Is_USART_ISR PROC
;;;186 unsigned int Is_USART_ISR(void)
0001b4 481b LDR r0,|L1.548|
;;;187 {
;;;188 return g_UART_ISR_CNT;
0001b6 6800 LDR r0,[r0,#0] ; g_UART_ISR_CNT
;;;189 }
0001b8 4770 BX lr
;;;190 ////////////////////////////////////////////////////////////////////////////////
ENDP
UART_Debug PROC
;;;191 void UART_Debug(unsigned char Debug_Data)
0001ba b500 PUSH {lr}
;;;192 {
0001bc 4602 MOV r2,r0
;;;193 UART_Transmit(0xaa);
0001be 20aa MOVS r0,#0xaa
0001c0 f7fffffe BL UART_Transmit
;;;194 UART_Transmit(Debug_Data);
0001c4 4610 MOV r0,r2
0001c6 f7fffffe BL UART_Transmit
;;;195 UART_Transmit(0x55);
0001ca 2055 MOVS r0,#0x55
0001cc f7fffffe BL UART_Transmit
;;;196 }
0001d0 bd00 POP {pc}
;;;197 ////////////////////////////////////////////////////////////////////////////////
ENDP
UART_SendData PROC
;;;198
;;;199 void UART_SendData(unsigned char* pbuf, unsigned char length)
0001d2 b510 PUSH {r4,lr}
;;;200 {
0001d4 4602 MOV r2,r0
0001d6 460c MOV r4,r1
;;;201 unsigned char i = 0;
0001d8 2300 MOVS r3,#0
;;;202 pbuf[6] = 0;
0001da 2000 MOVS r0,#0
0001dc 7190 STRB r0,[r2,#6]
;;;203 for(i = 1; i < 6; i ++)
0001de 2301 MOVS r3,#1
0001e0 e005 B |L1.494|
|L1.482|
;;;204 {
;;;205 pbuf[6] ^= pbuf[i];
0001e2 7990 LDRB r0,[r2,#6]
0001e4 5cd1 LDRB r1,[r2,r3]
0001e6 4048 EORS r0,r0,r1
0001e8 7190 STRB r0,[r2,#6]
0001ea 1c58 ADDS r0,r3,#1 ;203
0001ec b2c3 UXTB r3,r0 ;203
|L1.494|
0001ee 2b06 CMP r3,#6 ;203
0001f0 dbf7 BLT |L1.482|
;;;206 }
;;;207 for(i = 0; i < length; i ++)
0001f2 2300 MOVS r3,#0
0001f4 e004 B |L1.512|
|L1.502|
;;;208 {
;;;209 UART_Transmit(pbuf[i]);
0001f6 5cd0 LDRB r0,[r2,r3]
0001f8 f7fffffe BL UART_Transmit
0001fc 1c58 ADDS r0,r3,#1 ;207
0001fe b2c3 UXTB r3,r0 ;207
|L1.512|
000200 42a3 CMP r3,r4 ;207
000202 dbf8 BLT |L1.502|
;;;210 }
;;;211 }
000204 bd10 POP {r4,pc}
;;;212
ENDP
000206 0000 DCW 0x0000
|L1.520|
DCD PC_Array_Buffer
|L1.524|
DCD Index
|L1.528|
DCD Frame_Length
|L1.532|
DCD 0x40013804
|L1.536|
DCD 0x40013800
|L1.540|
DCD ch_CMD
|L1.544|
DCD Temp_Buffer
|L1.548|
DCD g_UART_ISR_CNT
AREA ||.bss||, DATA, NOINIT, ALIGN=0
PC_Array_Buffer
% 30
Temp_Buffer
% 30
AREA ||.data||, DATA, ALIGN=2
g_UART_ISR_CNT
DCD 0x00000000
Index
000004 00 DCB 0x00
Frame_Length
000005 00 DCB 0x00
ch_CMD
000006 00 DCB 0x00
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -