⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rs485.txt

📁 嵌入式开发
💻 TXT
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.0 [Build 951] for uVision
; commandline ArmCC [--debug -c --asm --interleave -ors485.o --device=DARMP --apcs=interwork -O0 -IC:\Keil\ARM\INC\Philips RS485\RS485.c]

                          ARM

                          AREA ||.text.7||, CODE, READONLY, ALIGN=2

                  UART0_GetByte PROC
;;;13     	uint8 rcv_dat;
;;;14     	IO0CLR |=1<<31;
000000  e59f1188          LDR      r1,|L1.400|
000004  e591100c          LDR      r1,[r1,#0xc]
000008  e3811102          ORR      r1,r1,#0x80000000
00000c  e59f217c          LDR      r2,|L1.400|
000010  e582100c          STR      r1,[r2,#0xc]
;;;15     	while ((U0LSR & 0x01) == 0);
000014  e1a00000          MOV      r0,r0
                  |L1.24|
000018  e59f1174          LDR      r1,|L1.404|
00001c  e5d11014          LDRB     r1,[r1,#0x14]
000020  e3110001          TST      r1,#1
000024  0afffffb          BEQ      |L1.24|
;;;16     	rcv_dat = U0RBR;
000028  e59f1164          LDR      r1,|L1.404|
00002c  e5d10000          LDRB     r0,[r1,#0]
;;;17     	
;;;18     	return (rcv_dat);	
;;;19     }
000030  e12fff1e          BX       lr
                          ENDP

                  UART0_GetStr PROC
;;;29     void UART0_GetStr (uint8 *s, uint32 n)
;;;30     {
000034  e92d4010          PUSH     {r4,lr}
000038  e1a03000          MOV      r3,r0
00003c  e1a04001          MOV      r4,r1
;;;31     	for ( ; n>0; n--)
000040  ea000002          B        |L1.80|
;;;32     	{
;;;33     		*s++ = UART0_GetByte();
                  |L1.68|
000044  ebfffffe          BL       UART0_GetByte
000048  e4c30001          STRB     r0,[r3],#1
00004c  e2444001          SUB      r4,r4,#1              ;31
                  |L1.80|
000050  e3540000          CMP      r4,#0                 ;31
000054  1afffffa          BNE      |L1.68|               ;31
;;;34     	}
;;;35     }
000058  e8bd4010          POP      {r4,lr}
00005c  e12fff1e          BX       lr
                          ENDP

                  UART0_SendByte PROC
;;;45     {
;;;46         IO0SET |=1<<31;
000060  e59f1128          LDR      r1,|L1.400|
000064  e5911004          LDR      r1,[r1,#4]
000068  e3811102          ORR      r1,r1,#0x80000000
00006c  e59f211c          LDR      r2,|L1.400|
000070  e5821004          STR      r1,[r2,#4]
;;;47     	U0THR = dat;
000074  e2421907          SUB      r1,r2,#0x1c000
000078  e5c10000          STRB     r0,[r1,#0]
;;;48     	while ((U0LSR & 0x40) == 0);		// 等待数据发送完毕
00007c  e1a00000          MOV      r0,r0
                  |L1.128|
000080  e59f110c          LDR      r1,|L1.404|
000084  e5d11014          LDRB     r1,[r1,#0x14]
000088  e3110040          TST      r1,#0x40
00008c  0afffffb          BEQ      |L1.128|
;;;49     }
000090  e12fff1e          BX       lr
                          ENDP

                  UART0_SendStr PROC
;;;58     void UART0_SendStr (uint8 const *str)
;;;59     {
000094  e52de004          PUSH     {lr}
000098  e1a03000          MOV      r3,r0
;;;60     	while (1)
00009c  ea000005          B        |L1.184|
;;;61     	{
;;;62     		if (*str == '\0')	break;		// 遇到结束符,退出
                  |L1.160|
0000a0  e5d30000          LDRB     r0,[r3,#0]
0000a4  e3500000          CMP      r0,#0
0000a8  1a000000          BNE      |L1.176|
0000ac  ea000002          B        |L1.188|
;;;63     		UART0_SendByte(*str++);			// 发送数据
                  |L1.176|
0000b0  e4d30001          LDRB     r0,[r3],#1
0000b4  ebfffffe          BL       UART0_SendByte
                  |L1.184|
0000b8  eafffff8          B        |L1.160|              ;60
                  |L1.188|
0000bc  e1a00000          MOV      r0,r0                 ;62
;;;64     	}
;;;65     }
0000c0  e49de004          POP      {lr}
0000c4  e12fff1e          BX       lr
                          ENDP

                  UART1_GetByte PROC
;;;76     	uint8 rcv_dat;
;;;77     	IO0CLR |=1<<10;
0000c8  e59f10c0          LDR      r1,|L1.400|
0000cc  e591100c          LDR      r1,[r1,#0xc]
0000d0  e3811b01          ORR      r1,r1,#0x400
0000d4  e59f20b4          LDR      r2,|L1.400|
0000d8  e582100c          STR      r1,[r2,#0xc]
;;;78     	while ((U1LSR & 0x01) == 0);
0000dc  e1a00000          MOV      r0,r0
                  |L1.224|
0000e0  e59f10b0          LDR      r1,|L1.408|
0000e4  e5d11014          LDRB     r1,[r1,#0x14]
0000e8  e3110001          TST      r1,#1
0000ec  0afffffb          BEQ      |L1.224|
;;;79     	rcv_dat = U1RBR;
0000f0  e59f10a0          LDR      r1,|L1.408|
0000f4  e5d10000          LDRB     r0,[r1,#0]
;;;80     	
;;;81     	return (rcv_dat);	
;;;82     }
0000f8  e12fff1e          BX       lr
                          ENDP

                  UART1_GetStr PROC
;;;92     void UART1_GetStr (uint8 *s, uint32 n)
;;;93     {
0000fc  e92d4010          PUSH     {r4,lr}
000100  e1a03000          MOV      r3,r0
000104  e1a04001          MOV      r4,r1
;;;94     	for ( ; n>0; n--)
000108  ea000002          B        |L1.280|
;;;95     	{
;;;96     		*s++ = UART1_GetByte();
                  |L1.268|
00010c  ebfffffe          BL       UART1_GetByte
000110  e4c30001          STRB     r0,[r3],#1
000114  e2444001          SUB      r4,r4,#1              ;94
                  |L1.280|
000118  e3540000          CMP      r4,#0                 ;94
00011c  1afffffa          BNE      |L1.268|              ;94
;;;97     	}
;;;98     }
000120  e8bd4010          POP      {r4,lr}
000124  e12fff1e          BX       lr
                          ENDP

                  UART1_SendByte PROC
;;;108    {
;;;109        IO0SET |=1<<10;
000128  e59f1060          LDR      r1,|L1.400|
00012c  e5911004          LDR      r1,[r1,#4]
000130  e3811b01          ORR      r1,r1,#0x400
000134  e59f2054          LDR      r2,|L1.400|
000138  e5821004          STR      r1,[r2,#4]
;;;110    	U1THR = dat;
00013c  e2421906          SUB      r1,r2,#0x18000
000140  e5c10000          STRB     r0,[r1,#0]
;;;111    	while ((U1LSR & 0x40) == 0);		// 等待数据发送完毕
000144  e1a00000          MOV      r0,r0
                  |L1.328|
000148  e59f1048          LDR      r1,|L1.408|
00014c  e5d11014          LDRB     r1,[r1,#0x14]
000150  e3110040          TST      r1,#0x40
000154  0afffffb          BEQ      |L1.328|
;;;112    }
000158  e12fff1e          BX       lr
                          ENDP

                  UART1_SendStr PROC
;;;121    void UART1_SendStr (uint8 const *str)
;;;122    {
00015c  e52de004          PUSH     {lr}
000160  e1a03000          MOV      r3,r0
;;;123    	while (1)
000164  ea000005          B        |L1.384|
;;;124    	{
;;;125    		if (*str == '\0')	break;		// 遇到结束符,退出
                  |L1.360|
000168  e5d30000          LDRB     r0,[r3,#0]
00016c  e3500000          CMP      r0,#0
000170  1a000000          BNE      |L1.376|
000174  ea000002          B        |L1.388|
;;;126    		UART1_SendByte(*str++);			// 发送数据
                  |L1.376|
000178  e4d30001          LDRB     r0,[r3],#1
00017c  ebfffffe          BL       UART1_SendByte
                  |L1.384|
000180  eafffff8          B        |L1.360|              ;123
                  |L1.388|
000184  e1a00000          MOV      r0,r0                 ;125
;;;127    	}
;;;128    }
000188  e49de004          POP      {lr}
00018c  e12fff1e          BX       lr
                  |L1.400|
000190  e0028000          DCD      0xe0028000
                  |L1.404|
000194  e000c000          DCD      0xe000c000
                  |L1.408|
000198  e0010000          DCD      0xe0010000
                          ENDP


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -