📄 uart.lst
字号:
__start:
__text_start:
0031 E5CF LDI R28,0x5F
0032 E0D4 LDI R29,4
0033 BFCD OUT 0x3D,R28
0034 BFDE OUT 0x3E,R29
0035 51C0 SUBI R28,0x10
0036 40D0 SBCI R29,0
0037 EA0A LDI R16,0xAA
0038 8308 STD Y+0,R16
0039 2400 CLR R0
003A E6ED LDI R30,0x6D
003B E0F0 LDI R31,0
003C E010 LDI R17,0
003D 36EF CPI R30,0x6F
003E 07F1 CPC R31,R17
003F F011 BEQ 0x0042
0040 9201 ST R0,Z+
0041 CFFB RJMP 0x003D
0042 8300 STD Z+0,R16
0043 E5E4 LDI R30,0x54
0044 E0F0 LDI R31,0
0045 E6A0 LDI R26,0x60
0046 E0B0 LDI R27,0
0047 E010 LDI R17,0
0048 36E1 CPI R30,0x61
0049 07F1 CPC R31,R17
004A F021 BEQ 0x004F
004B 95C8 LPM
004C 9631 ADIW R30,1
004D 920D ST R0,X+
004E CFF9 RJMP 0x0048
004F 940E0058 CALL _main
_exit:
0051 CFFF RJMP _exit
FILE: D:\AVR源程序\IccAVR\UartTest\uart.c
(0001) /*****************************************
(0002) 串行口测试程序
(0003) 输入数据:无
(0004) 输出:程序复位后先向串口发送"Hellow Word!",之后每从串口收到一个字符就把它从串口发送出去
(0005) 作者:
(0006) CPU: M16L 晶振:片外8M
(0007) 修改时间:2004-08-02
(0008) *****************************************/
(0009)
(0010) #include "iom16.h"
(0011) #include "stdio.h"
(0012) #include "macros.h" // 常用的宏定义
(0013) #define uchar unsigned char
(0014) #define uint unsigned int
(0015)
(0016)
(0017) void cpu_init(void)
(0018) {
(0019) CLI();
_cpu_init:
0052 94F8 BCLR 7
(0020) UBRR = 0x33; // 波特率9600
0053 E383 LDI R24,0x33
0054 B989 OUT 0x09,R24
(0021) UCR = 0x18;
0055 E188 LDI R24,0x18
0056 B98A OUT 0x0A,R24
0057 9508 RET
(0022) }
(0023)
(0024) void main(void)
(0025) {
(0026) cpu_init();
_main:
0058 DFF9 RCALL _cpu_init
(0027) puts("Hellow Word!");
0059 E600 LDI R16,0x60
005A E010 LDI R17,0
005B 940E009F CALL _puts
005D C006 RJMP 0x0064
(0028) while(1)
(0029) {
(0030) while(!(USR&0x80));
005E 9B5F SBIS 0x0B,7
005F CFFE RJMP 0x005E
(0031) UDR=UDR;
0060 B02C IN R2,0x0C
0061 B82C OUT 0x0C,R2
(0032) while(!(USR&0X40));
FILE: <library>
0062 9B5E SBIS 0x0B,6
0063 CFFE RJMP 0x0062
0064 CFF9 RJMP 0x005E
0065 9508 RET
pop_gset2:
0066 E0E2 LDI R30,2
0067 940C0075 JMP pop
push_gset5:
0069 92FA ST R15,-Y
006A 92EA ST R14,-Y
push_gset4:
006B 92DA ST R13,-Y
006C 92CA ST R12,-Y
push_gset3:
006D 92BA ST R11,-Y
006E 92AA ST R10,-Y
push_gset2:
006F 937A ST R23,-Y
0070 936A ST R22,-Y
push_gset1:
0071 935A ST R21,-Y
0072 934A ST R20,-Y
0073 9508 RET
pop_gset1:
0074 E0E1 LDI R30,1
pop:
0075 9149 LD R20,Y+
0076 9159 LD R21,Y+
0077 FDE0 SBRC R30,0
0078 9508 RET
0079 9169 LD R22,Y+
007A 9179 LD R23,Y+
007B FDE1 SBRC R30,1
007C 9508 RET
007D 90A9 LD R10,Y+
007E 90B9 LD R11,Y+
007F FDE2 SBRC R30,2
0080 9508 RET
0081 90C9 LD R12,Y+
0082 90D9 LD R13,Y+
0083 FDE3 SBRC R30,3
0084 9508 RET
0085 90E9 LD R14,Y+
0086 90F9 LD R15,Y+
0087 9508 RET
_putchar:
0088 940E0071 CALL push_gset1
008A 2F40 MOV R20,R16
008B 9020006D LDS R2,_textmode
008D 9030006E LDS R3,_textmode+1
008F 2022 TST R2
0090 F411 BNE 0x0093
0091 2033 TST R3
0092 F021 BEQ 0x0097
0093 304A CPI R20,0xA
0094 F411 BNE 0x0097
0095 E00D LDI R16,0xD
0096 DFF1 RCALL _putchar
0097 9B5D SBIS 0x0B,5
0098 CFFE RJMP 0x0097
0099 B94C OUT 0x0C,R20
009A 2F04 MOV R16,R20
009B 2711 CLR R17
009C 940E0074 CALL pop_gset1
009E 9508 RET
_puts:
009F 940E006F CALL push_gset2
00A1 2F60 MOV R22,R16
00A2 2F71 MOV R23,R17
00A3 2744 CLR R20
00A4 2755 CLR R21
00A5 C009 RJMP 0x00AF
00A6 2FE6 MOV R30,R22
00A7 2FF7 MOV R31,R23
00A8 8100 LDD R16,Z+0
00A9 940E0088 CALL _putchar
00AB 5F4F SUBI R20,0xFF
00AC 4F5F SBCI R21,0xFF
00AD 5F6F SUBI R22,0xFF
00AE 4F7F SBCI R23,0xFF
00AF 2FE6 MOV R30,R22
00B0 2FF7 MOV R31,R23
00B1 8020 LDD R2,Z+0
00B2 2022 TST R2
00B3 F791 BNE 0x00A6
00B4 E00A LDI R16,0xA
00B5 940E0088 CALL _putchar
00B7 E001 LDI R16,1
00B8 E010 LDI R17,0
00B9 940E0066 CALL pop_gset2
00BB 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -