📄 串口校准发送测试.lst
字号:
__start:
__text_start:
001A EFCF LDI R28,0xFF
001B E0D2 LDI R29,2
001C BFCD OUT 0x3D,R28
001D BFDE OUT 0x3E,R29
001E 51C0 SUBI R28,0x10
001F 40D0 SBCI R29,0
0020 EA0A LDI R16,0xAA
0021 8308 STD Y+0,R16
0022 2400 CLR R0
0023 E0E0 LDI R30,0
0024 E0F1 LDI R31,1
0025 E011 LDI R17,1
0026 30E0 CPI R30,0
0027 07F1 CPC R31,R17
0028 F011 BEQ 0x002B
0029 9201 ST R0,Z+
002A CFFB RJMP 0x0026
002B 8300 STD Z+0,R16
002C E3E4 LDI R30,0x34
002D E0F0 LDI R31,0
002E E0A0 LDI R26,0
002F E0B1 LDI R27,1
0030 E010 LDI R17,0
0031 33E4 CPI R30,0x34
0032 07F1 CPC R31,R17
0033 F021 BEQ 0x0038
0034 95C8 LPM
0035 9631 ADIW R30,1
0036 920D ST R0,X+
0037 CFF9 RJMP 0x0031
0038 D021 RCALL _main
_exit:
0039 CFFF RJMP _exit
FILE: D:\串口校准发送测试\usart_test.c
(0001) #include "iom48v.h"
(0002) #include "macros.h"
(0003)
(0004) void uart0_init(void)
(0005) {
(0006) UCSR0A = 0x02; //使用波特率倍增,不使用多从机模式
_uart0_init:
003A E082 LDI R24,2
003B 938000C0 STS 0xC0,R24
(0007) UCSR0C = 0x06; //异步串口模式,禁止奇偶校验,1位停止位,8-bit桢模式
003D E086 LDI R24,6
003E 938000C2 STS 0xC2,R24
(0008) UBRR0L = 0x0C; //设置波特率,9600
0040 E08C LDI R24,0xC
0041 938000C4 STS 0xC4,R24
(0009) UBRR0H = 0x00;
0043 2422 CLR R2
0044 922000C5 STS 0xC5,R2
(0010) UCSR0B = 0x98; //允许接收完成中断使能,禁止发送完成中断,禁止发送寄存器空中断,允许接收,允许发送
0046 E988 LDI R24,0x98
0047 938000C1 STS 0xC1,R24
0049 9508 RET
_Delay_ms:
n --> R20
Time --> R16
004A D024 RCALL push_gset1
(0011) }
(0012)
(0013) void Delay_ms(unsigned int Time)
(0014) {
(0015) unsigned char n=0;
004B 2744 CLR R20
004C C008 RJMP 0x0055
(0016) while(Time>0)
(0017) {
(0018) for (n=1;n<187;n++)
004D E041 LDI R20,1
004E C002 RJMP 0x0051
(0019) {
(0020) NOP();
004F 0000 NOP
0050 9543 INC R20
0051 3B4B CPI R20,0xBB
0052 F3E0 BCS 0x004F
(0021) }
(0022) Time--;
0053 5001 SUBI R16,1
0054 4010 SBCI R17,0
0055 3000 CPI R16,0
0056 0701 CPC R16,R17
0057 F7A9 BNE 0x004D
0058 D019 RCALL pop_gset1
0059 9508 RET
(0023) }
(0024) }
(0025)
(0026) void main (void)
(0027) {
(0028) unsigned char SendData = 0xFF;
_main:
SendData --> R20
005A EF4F LDI R20,0xFF
(0029)
(0030) uart0_init();
005B DFDE RCALL _uart0_init
(0031)
(0032) do
(0033) {
(0034) while(!(UCSR0A&(1<<UDRE0)));
005C 902000C0 LDS R2,0xC0
005E FE25 SBRS R2,5
005F CFFC RJMP 0x005C
(0035) UDR0 = SendData;
0060 934000C6 STS 0xC6,R20
(0036) SendData--;
0062 954A DEC R20
(0037) // Delay_ms(5);
(0038) }
(0039) while(SendData != 0xFF);
0063 3F4F CPI R20,0xFF
0064 F7B9 BNE 0x005C
(0040)
(0041) while(1);
FILE: <library>
0065 CFFF RJMP 0x0065
0066 9508 RET
push_gset5:
0067 92FA ST R15,-Y
0068 92EA ST R14,-Y
push_gset4:
0069 92DA ST R13,-Y
006A 92CA ST R12,-Y
push_gset3:
006B 92BA ST R11,-Y
006C 92AA ST R10,-Y
push_gset2:
006D 937A ST R23,-Y
006E 936A ST R22,-Y
push_gset1:
006F 935A ST R21,-Y
0070 934A ST R20,-Y
0071 9508 RET
pop_gset1:
0072 E0E1 LDI R30,1
pop:
0073 9149 LD R20,Y+
0074 9159 LD R21,Y+
0075 FDE0 SBRC R30,0
0076 9508 RET
0077 9169 LD R22,Y+
0078 9179 LD R23,Y+
0079 FDE1 SBRC R30,1
007A 9508 RET
007B 90A9 LD R10,Y+
007C 90B9 LD R11,Y+
007D FDE2 SBRC R30,2
007E 9508 RET
007F 90C9 LD R12,Y+
0080 90D9 LD R13,Y+
0081 FDE3 SBRC R30,3
0082 9508 RET
0083 90E9 LD R14,Y+
0084 90F9 LD R15,Y+
0085 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -