📄 uart.lis
字号:
.module uart.c
.area text(rom, con, rel)
0000 .dbfile E:\新建文件夹\uart.c
0000 .dbfunc e Uart_init _Uart_init fV
.even
0000 _Uart_init::
0000 .dbline -1
0000 .dbline 5
0000 ; #include <iom8v.h>
0000 ; #include "uart.h"
0000 ;
0000 ; void Uart_init(void)
0000 ; {
0000 .dbline 6
0000 ; UCSRB=((1<<RXEN)|(1<<TXEN));//
0000 88E1 ldi R24,24
0002 8AB9 out 0xa,R24
0004 .dbline 7
0004 ; UBRRL=25;
0004 89E1 ldi R24,25
0006 89B9 out 0x9,R24
0008 .dbline 8
0008 ; UBRRH=0;//
0008 2224 clr R2
000A 20BC out 0x20,R2
000C .dbline 9
000C ; UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
000C 86E8 ldi R24,134
000E 80BD out 0x20,R24
0010 .dbline -2
0010 L1:
0010 .dbline 0 ; func end
0010 0895 ret
0012 .dbend
0012 .dbfunc e Send_abyte _Send_abyte fV
0012 ; abyte -> R16
.even
0012 _Send_abyte::
0012 .dbline -1
0012 .dbline 13
0012 ; }
0012 ;
0012 ; void Send_abyte(unsigned char abyte)
0012 ; {
0012 L3:
0012 .dbline 14
0012 L4:
0012 .dbline 14
0012 ; while(!(UCSRA&(1<<UDRE)));
0012 5D9B sbis 0xb,5
0014 FECF rjmp L3
0016 .dbline 15
0016 ; UDR=abyte;
0016 0CB9 out 0xc,R16
0018 .dbline -2
0018 L2:
0018 .dbline 0 ; func end
0018 0895 ret
001A .dbsym r abyte 16 c
001A .dbend
001A .dbfunc e Receive_abyte _Receive_abyte fc
.even
001A _Receive_abyte::
001A .dbline -1
001A .dbline 19
001A ; }
001A ;
001A ; unsigned char Receive_abyte(void)
001A ; {
001A L7:
001A .dbline 20
001A L8:
001A .dbline 20
001A ; while(!(UCSRA&(1<<RXC)));
001A 5F9B sbis 0xb,7
001C FECF rjmp L7
001E .dbline 21
001E ; return UDR;
001E 0CB1 in R16,0xc
0020 .dbline -2
0020 L6:
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbend
0022 .dbfunc e Prints _Prints fV
0022 ; i -> R20
0022 ; enter -> R22
0022 ; string -> R10,R11
.even
0022 _Prints::
0022 00D0 rcall push_gset3
0024 622F mov R22,R18
0026 5801 movw R10,R16
0028 .dbline -1
0028 .dbline 26
0028 ; }
0028 ;
0028 ;
0028 ; void Prints(unsigned char *string,unsigned char enter)
0028 ; {
0028 .dbline 28
0028 ; unsigned char i;
0028 ; i=0;
0028 4427 clr R20
002A 09C0 rjmp L12
002C X0:
002C .dbline 30
002C ; while(string[i]!=0) //判断字符串是否结束
002C ; {
002C L14:
002C .dbline 31
002C L15:
002C .dbline 31
002C 5D9B sbis 0xb,5
002E FECF rjmp L14
0030 .dbline 32
0030 E42F mov R30,R20
0032 FF27 clr R31
0034 EA0D add R30,R10
0036 FB1D adc R31,R11
0038 2080 ldd R2,z+0
003A 2CB8 out 0xc,R2
003C .dbline 33
003C 4395 inc R20
003E .dbline 34
003E L12:
003E .dbline 29
003E E42F mov R30,R20
0040 FF27 clr R31
0042 EA0D add R30,R10
0044 FB1D adc R31,R11
0046 2080 ldd R2,z+0
0048 2220 tst R2
004A 81F7 brne L15
004C .dbline 35
004C 6623 tst R22
004E 21F0 breq L17
0050 .dbline 36
0050 .dbline 37
0050 0AE0 ldi R16,10
0052 DFDF rcall _Send_abyte
0054 .dbline 38
0054 0DE0 ldi R16,13
0056 DDDF rcall _Send_abyte
0058 .dbline 39
0058 L17:
0058 .dbline -2
0058 L10:
0058 00D0 rcall pop_gset3
005A .dbline 0 ; func end
005A 0895 ret
005C .dbsym r i 20 c
005C .dbsym r enter 22 c
005C .dbsym r string 10 pc
005C .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -