⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.lis

📁 ATEMEL AVR128 BOOT程序
💻 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 + -