📄 usart_test.lis
字号:
.module usart_test.c
.area text(rom, con, rel)
0000 .dbfile D:\串口校准发送测试\usart_test.c
0000 .dbfunc e uart0_init _uart0_init fV
.even
0000 _uart0_init::
0000 .dbline -1
0000 .dbline 5
0000 ; #include "iom48v.h"
0000 ; #include "macros.h"
0000 ;
0000 ; void uart0_init(void)
0000 ; {
0000 .dbline 6
0000 ; UCSR0A = 0x02; //使用波特率倍增,不使用多从机模式
0000 82E0 ldi R24,2
0002 8093C000 sts 192,R24
0006 .dbline 7
0006 ; UCSR0C = 0x06; //异步串口模式,禁止奇偶校验,1位停止位,8-bit桢模式
0006 86E0 ldi R24,6
0008 8093C200 sts 194,R24
000C .dbline 8
000C ; UBRR0L = 0x0C; //设置波特率,9600
000C 8CE0 ldi R24,12
000E 8093C400 sts 196,R24
0012 .dbline 9
0012 ; UBRR0H = 0x00;
0012 2224 clr R2
0014 2092C500 sts 197,R2
0018 .dbline 10
0018 ; UCSR0B = 0x98; //允许接收完成中断使能,禁止发送完成中断,禁止发送寄存器空中断,允许接收,允许发送
0018 88E9 ldi R24,152
001A 8093C100 sts 193,R24
001E .dbline -2
001E L1:
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbend
0020 .dbfunc e Delay_ms _Delay_ms fV
0020 ; n -> R20
0020 ; Time -> R16,R17
.even
0020 _Delay_ms::
0020 00D0 rcall push_gset1
0022 .dbline -1
0022 .dbline 14
0022 ; }
0022 ;
0022 ; void Delay_ms(unsigned int Time)
0022 ; {
0022 .dbline 15
0022 ; unsigned char n=0;
0022 4427 clr R20
0024 08C0 rjmp L4
0026 L3:
0026 .dbline 17
0026 ; while(Time>0)
0026 ; {
0026 .dbline 18
0026 ; for (n=1;n<187;n++)
0026 41E0 ldi R20,1
0028 02C0 rjmp L9
002A L6:
002A .dbline 19
002A .dbline 20
002A 0000 nop
002C .dbline 21
002C L7:
002C .dbline 18
002C 4395 inc R20
002E L9:
002E .dbline 18
002E 4B3B cpi R20,187
0030 E0F3 brlo L6
0032 .dbline 22
0032 0150 subi R16,1
0034 1040 sbci R17,0
0036 .dbline 23
0036 L4:
0036 .dbline 16
0036 0030 cpi R16,0
0038 0107 cpc R16,R17
003A A9F7 brne L3
003C X0:
003C .dbline -2
003C L2:
003C 00D0 rcall pop_gset1
003E .dbline 0 ; func end
003E 0895 ret
0040 .dbsym r n 20 c
0040 .dbsym r Time 16 i
0040 .dbend
0040 .dbfunc e main _main fV
0040 ; SendData -> R20
.even
0040 _main::
0040 .dbline -1
0040 .dbline 27
0040 ; {
0040 ; NOP();
0040 ; }
0040 ; Time--;
0040 ; }
0040 ; }
0040 ;
0040 ; void main (void)
0040 ; {
0040 .dbline 28
0040 ; unsigned char SendData = 0xFF;
0040 4FEF ldi R20,255
0042 .dbline 30
0042 ;
0042 ; uart0_init();
0042 DEDF rcall _uart0_init
0044 .dbline 33
0044 ;
0044 ; do
0044 ; {
0044 L14:
0044 .dbline 34
0044 L15:
0044 .dbline 34
0044 ; while(!(UCSR0A&(1<<UDRE0)));
0044 2090C000 lds R2,192
0048 25FE sbrs R2,5
004A FCCF rjmp L14
004C .dbline 35
004C ; UDR0 = SendData;
004C 4093C600 sts 198,R20
0050 .dbline 36
0050 ; SendData--;
0050 4A95 dec R20
0052 .dbline 38
0052 ; // Delay_ms(5);
0052 ; }
0052 L12:
0052 .dbline 39
0052 ; while(SendData != 0xFF);
0052 4F3F cpi R20,255
0054 B9F7 brne L15
0056 L17:
0056 .dbline 41
0056 L18:
0056 .dbline 41
0056 FFCF rjmp L17
0058 X1:
0058 .dbline -2
0058 L10:
0058 .dbline 0 ; func end
0058 0895 ret
005A .dbsym r SendData 20 c
005A .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -