📄 uart.lst
字号:
__start:
__text_start:
0044 E5CF LDI R28,0x5F
0045 E0D4 LDI R29,4
0046 BFCD OUT 0x3D,R28
0047 BFDE OUT 0x3E,R29
0048 51C0 SUBI R28,0x10
0049 40D0 SBCI R29,0
004A EA0A LDI R16,0xAA
004B 8308 STD Y+0,R16
004C 2400 CLR R0
004D E9E4 LDI R30,0x94
004E E0F0 LDI R31,0
004F E010 LDI R17,0
0050 39E6 CPI R30,0x96
0051 07F1 CPC R31,R17
0052 F011 BEQ 0x0055
0053 9201 ST R0,Z+
0054 CFFB RJMP 0x0050
0055 8300 STD Z+0,R16
0056 E5E4 LDI R30,0x54
0057 E0F0 LDI R31,0
0058 E6A0 LDI R26,0x60
0059 E0B0 LDI R27,0
005A E010 LDI R17,0
005B 38E8 CPI R30,0x88
005C 07F1 CPC R31,R17
005D F021 BEQ 0x0062
005E 95C8 LPM
005F 9631 ADIW R30,1
0060 920D ST R0,X+
0061 CFF9 RJMP 0x005B
0062 940E0065 CALL _main
_exit:
0064 CFFF RJMP _exit
FILE: E:\MYDOCU~1\ICCAVR_Directory\uart\uart.c
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) #include <stdio.h>
(0004)
(0005) //函数声明
(0006) void uart0_init(void);
(0007)
(0008) void main(void)
(0009) {
(0010) unsigned char temp;
(0011) uart0_init();
_main:
temp --> R20
0065 D020 RCALL _uart0_init
(0012) puts("UART TEST");//发送字符串
0066 E80A LDI R16,0x8A
0067 E010 LDI R17,0
0068 940E00CF CALL _puts
(0013) puts("www.ouravr.com");
006A E70B LDI R16,0x7B
006B E010 LDI R17,0
006C 940E00CF CALL _puts
(0014) putchar('\r');
006E E00D LDI R16,0xD
006F 940E00B3 CALL _putchar
(0015) putchar('\n');
0071 E00A LDI R16,0xA
0072 940E00B3 CALL _putchar
0074 C00F RJMP 0x0084
(0016) while(1)
(0017) {
(0018) temp=getchar();
0075 940E00CA CALL _getchar
0077 2F40 MOV R20,R16
(0019) putchar(temp);
0078 940E00B3 CALL _putchar
(0020) puts(" had been sent to the MCU!");
007A E600 LDI R16,0x60
007B E010 LDI R17,0
007C 940E00CF CALL _puts
(0021) putchar('\r');
007E E00D LDI R16,0xD
007F 940E00B3 CALL _putchar
(0022) putchar('\n');
0081 E00A LDI R16,0xA
0082 940E00B3 CALL _putchar
0084 CFF0 RJMP 0x0075
0085 9508 RET
(0023) }
(0024) }
(0025) //UART初始化,软件生成,使能接收和发送,8数据位,1停止位,偶校验,19.2K波特率
(0026) void uart0_init(void)
(0027) {
(0028) UCSRB = 0x00; //disable while setting baud rate
_uart0_init:
0086 2422 CLR R2
0087 B82A OUT 0x0A,R2
(0029) UCSRA = 0x00;
0088 B82B OUT 0x0B,R2
(0030) UCSRC = BIT(URSEL) | 0x26;
0089 EA86 LDI R24,0xA6
008A BD80 OUT 0x20,R24
(0031) UBRRL = 0x0C; //set baud rate lo
008B E08C LDI R24,0xC
008C B989 OUT 0x09,R24
(0032) UBRRH = 0x00; //set baud rate hi
008D BC20 OUT 0x20,R2
(0033) UCSRB = 0x18;
FILE: <library>
008E E188 LDI R24,0x18
008F B98A OUT 0x0A,R24
0090 9508 RET
pop_gset2:
0091 E0E2 LDI R30,2
0092 940C00A0 JMP pop
push_gset5:
0094 92FA ST R15,-Y
0095 92EA ST R14,-Y
push_gset4:
0096 92DA ST R13,-Y
0097 92CA ST R12,-Y
push_gset3:
0098 92BA ST R11,-Y
0099 92AA ST R10,-Y
push_gset2:
009A 937A ST R23,-Y
009B 936A ST R22,-Y
push_gset1:
009C 935A ST R21,-Y
009D 934A ST R20,-Y
009E 9508 RET
pop_gset1:
009F E0E1 LDI R30,1
pop:
00A0 9149 LD R20,Y+
00A1 9159 LD R21,Y+
00A2 FDE0 SBRC R30,0
00A3 9508 RET
00A4 9169 LD R22,Y+
00A5 9179 LD R23,Y+
00A6 FDE1 SBRC R30,1
00A7 9508 RET
00A8 90A9 LD R10,Y+
00A9 90B9 LD R11,Y+
00AA FDE2 SBRC R30,2
00AB 9508 RET
00AC 90C9 LD R12,Y+
00AD 90D9 LD R13,Y+
00AE FDE3 SBRC R30,3
00AF 9508 RET
00B0 90E9 LD R14,Y+
00B1 90F9 LD R15,Y+
00B2 9508 RET
_putchar:
00B3 940E009C CALL push_gset1
00B5 2F40 MOV R20,R16
00B6 90200094 LDS R2,_textmode
00B8 90300095 LDS R3,_textmode+1
00BA 2022 TST R2
00BB F411 BNE 0x00BE
00BC 2033 TST R3
00BD F021 BEQ 0x00C2
00BE 304A CPI R20,0xA
00BF F411 BNE 0x00C2
00C0 E00D LDI R16,0xD
00C1 DFF1 RCALL _putchar
00C2 9B5D SBIS 0x0B,5
00C3 CFFE RJMP 0x00C2
00C4 B94C OUT 0x0C,R20
00C5 2F04 MOV R16,R20
00C6 2711 CLR R17
00C7 940E009F CALL pop_gset1
00C9 9508 RET
_getchar:
00CA 9B5F SBIS 0x0B,7
00CB CFFE RJMP _getchar
00CC B10C IN R16,0x0C
00CD 2711 CLR R17
00CE 9508 RET
_puts:
00CF 940E009A CALL push_gset2
00D1 2F60 MOV R22,R16
00D2 2F71 MOV R23,R17
00D3 2744 CLR R20
00D4 2755 CLR R21
00D5 C009 RJMP 0x00DF
00D6 2FE6 MOV R30,R22
00D7 2FF7 MOV R31,R23
00D8 8100 LDD R16,Z+0
00D9 940E00B3 CALL _putchar
00DB 5F4F SUBI R20,0xFF
00DC 4F5F SBCI R21,0xFF
00DD 5F6F SUBI R22,0xFF
00DE 4F7F SBCI R23,0xFF
00DF 2FE6 MOV R30,R22
00E0 2FF7 MOV R31,R23
00E1 8020 LDD R2,Z+0
00E2 2022 TST R2
00E3 F791 BNE 0x00D6
00E4 E00A LDI R16,0xA
00E5 940E00B3 CALL _putchar
00E7 E001 LDI R16,1
00E8 E010 LDI R17,0
00E9 940E0091 CALL pop_gset2
00EB 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -