📄 uart_back.lis
字号:
.module UART_Back.c
.area text(rom, con, rel)
0000 .dbfile E:\AVR单~1\NewProject\串口通信\ATmega128\数据回发\UART_Back.c
0000 .dbfunc e UART_init _UART_init fV
.even
0000 _UART_init::
0000 .dbline -1
0000 .dbline 13
0000 ; /****************************************************
0000 ; **晶振:内部7.3728MHz
0000 ; **实现功能:将从PC机接受的字符返回PC机
0000 ; **设置:波特率9600, 8 bit, 1 stop bit, 无校验
0000 ; ****************************************************/
0000 ; #include <iom128.h>
0000 ; #include <macros.h>
0000 ;
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ;
0000 ; void UART_init(void)
0000 ; {
0000 .dbline 14
0000 ; UCSR0A = 0x00; /*倍速 */
0000 2224 clr R2
0002 2BB8 out 0xb,R2
0004 .dbline 15
0004 ; UCSR0B = 0x18; /*允许接收和发送*/
0004 88E1 ldi R24,24
0006 8AB9 out 0xa,R24
0008 .dbline 16
0008 ; UCSR0C = 0x0E; /*8位数据,1位停止位,无校验位 */
0008 8EE0 ldi R24,14
000A 80939500 sts 149,R24
000E .dbline 17
000E ; UBRR0H = 0x00;
000E 20929000 sts 144,R2
0012 .dbline 18
0012 ; UBRR0L = 0x47; /*9600 */
0012 87E4 ldi R24,71
0014 89B9 out 0x9,R24
0016 .dbline -2
0016 L1:
0016 .dbline 0 ; func end
0016 0895 ret
0018 .dbend
0018 .dbfunc e UART_recive _UART_recive fc
.even
0018 _UART_recive::
0018 .dbline -1
0018 .dbline 22
0018 ; }
0018 ;
0018 ; uchar UART_recive(void)
0018 ; {
0018 L3:
0018 .dbline 23
0018 L4:
0018 .dbline 23
0018 ; while (!(UCSR0A&(1<<RXC0))); /* 等待接收数据*/
0018 5F9B sbis 0xb,7
001A FECF rjmp L3
001C .dbline 24
001C ; return UDR0; /* 获取并返回数据*/
001C 0CB1 in R16,0xc
001E .dbline -2
001E L2:
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbend
0020 .dbfunc e UART_transmit _UART_transmit fV
0020 ; data -> R16
.even
0020 _UART_transmit::
0020 .dbline -1
0020 .dbline 28
0020 ; }
0020 ;
0020 ; void UART_transmit(uchar data)
0020 ; {
0020 L7:
0020 .dbline 29
0020 L8:
0020 .dbline 29
0020 ; while(!(UCSR0A&(1<<UDRE0)));
0020 5D9B sbis 0xb,5
0022 FECF rjmp L7
0024 .dbline 30
0024 ; UDR0=data;
0024 0CB9 out 0xc,R16
0026 .dbline -2
0026 L6:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbsym r data 16 c
0028 .dbend
0028 .dbfunc e main _main fV
0028 ; j -> R20
.even
0028 _main::
0028 .dbline -1
0028 .dbline 34
0028 ; }
0028 ;
0028 ; void main(void)
0028 ; {
0028 .dbline 36
0028 ; uchar j;
0028 ; CLI();
0028 F894 cli
002A .dbline 37
002A ; WDR();
002A A895 wdr
002C .dbline 38
002C ; UART_init();
002C E9DF xcall _UART_init
002E .dbline 39
002E ; SEI();
002E 7894 sei
0030 03C0 xjmp L12
0032 L11:
0032 .dbline 41
0032 .dbline 42
0032 F2DF xcall _UART_recive
0034 402F mov R20,R16
0036 .dbline 43
0036 F4DF xcall _UART_transmit
0038 .dbline 44
0038 L12:
0038 .dbline 40
0038 FCCF xjmp L11
003A X0:
003A .dbline -2
003A L10:
003A .dbline 0 ; func end
003A 0895 ret
003C .dbsym r j 20 c
003C .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -