📄 uart.lis
字号:
.module uart.c
.area text(rom, con, rel)
0000 .dbfile E:\ICCAVR\project\AVRMEG~3\icc\019-BOOT\uart.c
0000 .dbfunc e uart0_init _uart0_init fV
.even
0000 _uart0_init::
0000 .dbline -1
0000 .dbline 4
0000 ; #include "init.h"
0000 ;
0000 ; /*串口初始化函数*/
0000 ; void uart0_init(void) {
0000 .dbline 6
0000 ;
0000 ; UCSR0A = 0x00;
0000 2224 clr R2
0002 2BB8 out 0xb,R2
0004 .dbline 7
0004 ; UCSR0B = (1 << TXEN0) | (1 << RXEN0); /*允许接收和发送*/
0004 88E1 ldi R24,24
0006 8AB9 out 0xa,R24
0008 .dbline 8
0008 ; UCSR0C = (1 << UCSZ01) | (1 << UCSZ00); /*8位数据、1 位停止、异步、无校验*/
0008 86E0 ldi R24,6
000A 80939500 sts 149,R24
000E .dbline 9
000E ; UBRR0H = 0;
000E 20929000 sts 144,R2
0012 .dbline 10
0012 ; UBRR0L = 1; /*波特率115200*/
0012 81E0 ldi R24,1
0014 89B9 out 0x9,R24
0016 .dbline -2
0016 L1:
0016 .dbline 0 ; func end
0016 0895 ret
0018 .dbend
0018 .dbfunc e putChar _putChar fV
0018 ; i -> R16
.even
0018 _putChar::
0018 .dbline -1
0018 .dbline 14
0018 ; }
0018 ;
0018 ; /*数据发送,查询方式*/
0018 ; void putChar(unsigned char i) {
0018 L3:
0018 .dbline 16
0018 L4:
0018 .dbline 16
0018 ;
0018 ; while (!(UCSR0A & (1<<UDRE0))); /* 等待发送缓冲器为空*/
0018 5D9B sbis 0xb,5
001A FECF rjmp L3
001C .dbline 17
001C ; UDR0 = i; /* 发送数据*/
001C 0CB9 out 0xc,R16
001E .dbline -2
001E L2:
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbsym r i 16 c
0020 .dbend
0020 .dbfunc e getChar _getChar fc
.even
0020 _getChar::
0020 .dbline -1
0020 .dbline 21
0020 ; }
0020 ;
0020 ; /*数据接收,等待查询方式*/
0020 ; unsigned char getChar(void) {
0020 12C0 xjmp L8
0022 L7:
0022 .dbline 23
0022 ;
0022 ; while (!(UCSR0A & (1<<RXC0))) { /* 等待接收数据*/
0022 .dbline 24
0022 ; if (TCNT1 > 3000) { /*以下6行代码为指示灯显示*/
0022 88EB ldi R24,3000
0024 9BE0 ldi R25,11
0026 2CB4 in R2,0x2c
0028 3DB4 in R3,0x2d
002A 8215 cp R24,R2
002C 9305 cpc R25,R3
002E 58F4 brsh L10
0030 .dbline 24
0030 .dbline 25
0030 ; TCNT1 = 0x00;
0030 2224 clr R2
0032 3324 clr R3
0034 3DBC out 0x2d,R3
0036 2CBC out 0x2c,R2
0038 .dbline 26
0038 ; PORTB ^= (1 << PB7);
0038 80E8 ldi R24,128
003A 90E0 ldi R25,0
003C 28B2 in R2,0x18
003E 3324 clr R3
0040 2826 eor R2,R24
0042 3926 eor R3,R25
0044 28BA out 0x18,R2
0046 .dbline 27
0046 ; }
0046 L10:
0046 .dbline 28
0046 L8:
0046 .dbline 23
0046 5F9B sbis 0xb,7
0048 ECCF rjmp L7
004A .dbline 29
004A ; }
004A ; PORTB ^= (1 << PB7);
004A 80E8 ldi R24,128
004C 90E0 ldi R25,0
004E 28B2 in R2,0x18
0050 3324 clr R3
0052 2826 eor R2,R24
0054 3926 eor R3,R25
0056 28BA out 0x18,R2
0058 .dbline 30
0058 ; return UDR0; /* 获取并返回数据*/
0058 0CB1 in R16,0xc
005A .dbline -2
005A L6:
005A .dbline 0 ; func end
005A 0895 ret
005C .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -