📄 usart1_m128.lis
字号:
.module Usart1_M128.c
.area text(rom, con, rel)
0000 .dbfile E:\__test\_RTL8019_M128_struct_Test\Usart1_M128.c
.area data(ram, con, rel)
0000 .dbfile E:\__test\_RTL8019_M128_struct_Test\Usart1_M128.c
0000 _RX_data::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile E:\__test\_RTL8019_M128_struct_Test\Usart1_M128.c
0001 .blkb 5
.area idata
0001 0000000000 .byte 0,0,0,0,0
.area data(ram, con, rel)
0006 .dbfile E:\__test\_RTL8019_M128_struct_Test\Usart1_M128.c
0006 .dbsym e RX_data _RX_data A[6:6]c
0006 _RX_data2::
0006 .blkb 1
.area idata
0006 00 .byte 0
.area data(ram, con, rel)
0007 .dbfile E:\__test\_RTL8019_M128_struct_Test\Usart1_M128.c
0007 .blkb 5
.area idata
0007 0000000000 .byte 0,0,0,0,0
.area data(ram, con, rel)
000C .dbfile E:\__test\_RTL8019_M128_struct_Test\Usart1_M128.c
000C .dbsym e RX_data2 _RX_data2 A[6:6]c
000C _flg_Received::
000C .blkb 1
.area idata
000C 00 .byte 0
.area data(ram, con, rel)
000D .dbfile E:\__test\_RTL8019_M128_struct_Test\Usart1_M128.c
000D .dbsym e flg_Received _flg_Received c
.area text(rom, con, rel)
0000 .dbfile E:\__test\_RTL8019_M128_struct_Test\Usart1_M128.c
0000 .dbfunc e UART1_Init _UART1_Init fV
.even
0000 _UART1_Init::
0000 .dbline -1
0000 .dbline 11
0000 ; #include <string.h>
0000 ;
0000 ; #include "Usart1_M128.h"
0000 ;
0000 ; unsigned char RX_data[RX_SIZE]={0}; //串口接收缓冲区
0000 ; unsigned char RX_data2[RX_SIZE]={0}; //串口接收缓冲区
0000 ; volatile unsigned int iNum; //串口接收字符计数
0000 ; unsigned char flg_Received=0; //已接收一个卡号
0000 ;
0000 ; void UART1_Init(void)
0000 ; {
0000 .dbline 12
0000 ; UCSR1B = (1<<RXCIE1)| (1<<RXEN1) |(1<<TXEN1); //允许串口发送和接收,并响应接收完成中断
0000 88E9 ldi R24,152
0002 80939A00 sts 154,R24
0006 .dbline 13
0006 ; UBRR1L = BAUD; //波特率为9600(7.3728MHz晶振)
0006 8FE2 ldi R24,47
0008 80939900 sts 153,R24
000C .dbline 14
000C ; UBRR1H = 0;
000C 2224 clr R2
000E 20929800 sts 152,R2
0012 .dbline 15
0012 ; UCSR1C = (1<<UCSZ11)|(1<<UCSZ10); //8位数据+1位stop位, 异步模式
0012 86E0 ldi R24,6
0014 80939D00 sts 157,R24
0018 .dbline -2
0018 L1:
0018 .dbline 0 ; func end
0018 0895 ret
001A .dbend
.area vector(rom, abs)
.org 120
0078 0C940D00 jmp _UART1_Receive
.area text(rom, con, rel)
001A .dbfile E:\__test\_RTL8019_M128_struct_Test\Usart1_M128.c
001A .dbfunc e UART1_Receive _UART1_Receive fV
001A ; cRec -> R10
.even
001A _UART1_Receive::
001A 0A92 st -y,R0
001C 1A92 st -y,R1
001E 2A92 st -y,R2
0020 3A92 st -y,R3
0022 4A92 st -y,R4
0024 5A92 st -y,R5
0026 6A92 st -y,R6
0028 7A92 st -y,R7
002A 8A92 st -y,R8
002C 9A92 st -y,R9
002E AA92 st -y,R10
0030 0A93 st -y,R16
0032 1A93 st -y,R17
0034 2A93 st -y,R18
0036 3A93 st -y,R19
0038 8A93 st -y,R24
003A 9A93 st -y,R25
003C AA93 st -y,R26
003E BA93 st -y,R27
0040 EA93 st -y,R30
0042 FA93 st -y,R31
0044 0FB6 in R0,0x3f
0046 0A92 st -y,R0
0048 AA92 st -y,R10
004A 2297 sbiw R28,2
004C .dbline -1
004C .dbline 20
004C ; }
004C ;
004C ; #pragma interrupt_handler UART1_Receive: iv_USART1_RX
004C ; void UART1_Receive(void)
004C ; {
004C .dbline 23
004C ; unsigned char cRec;
004C ;
004C ; cRec= UDR1;
004C A0909C00 lds R10,156
0050 .dbline 25
0050 ;
0050 ; RX_data[iNum++]=cRec;
0050 20900000 lds R2,_iNum
0054 30900100 lds R3,_iNum+1
0058 C101 movw R24,R2
005A 0196 adiw R24,1
005C 90930100 sts _iNum+1,R25
0060 80930000 sts _iNum,R24
0064 80E0 ldi R24,<_RX_data
0066 90E0 ldi R25,>_RX_data
0068 F101 movw R30,R2
006A E80F add R30,R24
006C F91F adc R31,R25
006E A082 std z+0,R10
0070 .dbline 28
0070 ;
0070 ; //每接收RX_SIZE=6个字符显示一次
0070 ; if (iNum==RX_SIZE)
0070 80910000 lds R24,_iNum
0074 90910100 lds R25,_iNum+1
0078 8630 cpi R24,6
007A E0E0 ldi R30,0
007C 9E07 cpc R25,R30
007E 99F4 brne L3
0080 X0:
0080 .dbline 29
0080 ; {
0080 .dbline 30
0080 ; memcpy(RX_data2,RX_data,RX_SIZE);
0080 86E0 ldi R24,6
0082 90E0 ldi R25,0
0084 9983 std y+1,R25
0086 8883 std y+0,R24
0088 20E0 ldi R18,<_RX_data
008A 30E0 ldi R19,>_RX_data
008C 00E0 ldi R16,<_RX_data2
008E 10E0 ldi R17,>_RX_data2
0090 0E940000 xcall _memcpy
0094 .dbline 31
0094 ; flg_Received=1;
0094 81E0 ldi R24,1
0096 80930C00 sts _flg_Received,R24
009A .dbline 32
009A ; iNum=0;
009A 2224 clr R2
009C 3324 clr R3
009E 30920100 sts _iNum+1,R3
00A2 20920000 sts _iNum,R2
00A6 .dbline 33
00A6 ; }
00A6 L3:
00A6 .dbline 35
00A6 ;
00A6 ; RX_data[0]=cRec;
00A6 A0920000 sts _RX_data,R10
00AA .dbline 36
00AA ; flg_Received=1;
00AA 81E0 ldi R24,1
00AC 80930C00 sts _flg_Received,R24
00B0 .dbline -2
00B0 L2:
00B0 .dbline 0 ; func end
00B0 2296 adiw R28,2
00B2 A990 ld R10,y+
00B4 0990 ld R0,y+
00B6 0FBE out 0x3f,R0
00B8 F991 ld R31,y+
00BA E991 ld R30,y+
00BC B991 ld R27,y+
00BE A991 ld R26,y+
00C0 9991 ld R25,y+
00C2 8991 ld R24,y+
00C4 3991 ld R19,y+
00C6 2991 ld R18,y+
00C8 1991 ld R17,y+
00CA 0991 ld R16,y+
00CC A990 ld R10,y+
00CE 9990 ld R9,y+
00D0 8990 ld R8,y+
00D2 7990 ld R7,y+
00D4 6990 ld R6,y+
00D6 5990 ld R5,y+
00D8 4990 ld R4,y+
00DA 3990 ld R3,y+
00DC 2990 ld R2,y+
00DE 1990 ld R1,y+
00E0 0990 ld R0,y+
00E2 1895 reti
00E4 .dbsym r cRec 10 c
00E4 .dbend
00E4 .dbfunc e UART1_PutChar _UART1_PutChar fV
00E4 ; c -> R16
.even
00E4 _UART1_PutChar::
00E4 .dbline -1
00E4 .dbline 40
00E4 ; }
00E4 ;
00E4 ; void UART1_PutChar(unsigned char c) //字符输出函数
00E4 ; {
00E4 L6:
00E4 .dbline 41
00E4 ; while (!(UCSR1A&(1 << UDRE1))); //判断上次发送有没有完成
00E4 L7:
00E4 .dbline 41
00E4 20909B00 lds R2,155
00E8 25FE sbrs R2,5
00EA FCCF rjmp L6
00EC X1:
00EC .dbline 42
00EC ; UDR1 = c;
00EC 00939C00 sts 156,R16
00F0 .dbline -2
00F0 L5:
00F0 .dbline 0 ; func end
00F0 0895 ret
00F2 .dbsym r c 16 c
00F2 .dbend
00F2 .dbfunc e UART1_Puts _UART1_Puts fV
00F2 ; s -> R10,R11
.even
00F2 _UART1_Puts::
00F2 AA92 st -y,R10
00F4 BA92 st -y,R11
00F6 5801 movw R10,R16
00F8 .dbline -1
00F8 .dbline 46
00F8 ; }
00F8 ;
00F8 ; void UART1_Puts(unsigned char *s)
00F8 ; {
00F8 04C0 xjmp L11
00FA L10:
00FA .dbline 48
00FA ; while (*s)
00FA ; {
00FA .dbline 49
00FA ; UART1_PutChar(*s++);
00FA F501 movw R30,R10
00FC 0191 ld R16,Z+
00FE 5F01 movw R10,R30
0100 F1DF xcall _UART1_PutChar
0102 .dbline 50
0102 ; }
0102 L11:
0102 .dbline 47
0102 F501 movw R30,R10
0104 2080 ldd R2,z+0
0106 2220 tst R2
0108 C1F7 brne L10
010A X2:
010A .dbline -2
010A L9:
010A .dbline 0 ; func end
010A B990 ld R11,y+
010C A990 ld R10,y+
010E 0895 ret
0110 .dbsym r s 10 pc
0110 .dbend
0110 .dbfunc e UART1_PutBytes _UART1_PutBytes fV
0110 ; i -> R10
0110 ; ilen -> R14
0110 ; s -> R12,R13
.even
0110 _UART1_PutBytes::
0110 0E940000 xcall push_xgset00FC
0114 E22E mov R14,R18
0116 6801 movw R12,R16
0118 .dbline -1
0118 .dbline 55
0118 ; }
0118 ;
0118 ; //串口输出字节
0118 ; void UART1_PutBytes(unsigned char *s, unsigned char ilen)
0118 ; {
0118 .dbline 58
0118 ; unsigned char i;
0118 ;
0118 ; for(i=0;i<ilen;i++)
0118 AA24 clr R10
011A 05C0 xjmp L17
011C L14:
011C .dbline 59
011C ; {
011C .dbline 60
011C ; UART1_PutChar(*s++);
011C F601 movw R30,R12
011E 0191 ld R16,Z+
0120 6F01 movw R12,R30
0122 E0DF xcall _UART1_PutChar
0124 .dbline 61
0124 ; }
0124 L15:
0124 .dbline 58
0124 A394 inc R10
0126 L17:
0126 .dbline 58
0126 AE14 cp R10,R14
0128 C8F3 brlo L14
012A X3:
012A .dbline -2
012A L13:
012A .dbline 0 ; func end
012A 0C940000 xjmp pop_xgset00FC
012E .dbsym r i 10 c
012E .dbsym r ilen 14 c
012E .dbsym r s 12 pc
012E .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\__test\_RTL8019_M128_struct_Test\Usart1_M128.c
0000 _iNum::
0000 .blkb 2
0002 .dbsym e iNum _iNum i
0002 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -