📄 uart.lis
字号:
.module uart.c
.area data(ram, con, rel)
0000 _baud::
0000 .blkb 1
.area idata
0000 2D .byte 45
.area data(ram, con, rel)
0001 .dbfile C:\bak\YM200\uart\uart.c
0001 .dbsym e baud _baud c
.area text(rom, con, rel)
0000 .dbfile C:\bak\YM200\uart\uart.c
0000 .dbfunc e USART_Init _USART_Init fV
.even
0000 _USART_Init::
0000 .dbline -1
0000 .dbline 11
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #include<stdio.h>
0000 ; unsigned char baud=45; //baud=9600bps
0000 ; /*-----------------------------------------------------------
0000 ; USART_Init :UART初始化函数
0000 ; 输入参数 :无
0000 ; 输出参数 :无
0000 ; ------------------------------------------------------------*/
0000 ; void USART_Init(void)
0000 ; {
0000 .dbline 13
0000 ; /* 设置波特率*/
0000 ; UBRRH = (unsigned char)(baud>>8);
0000 20900000 lds R2,_baud
0004 3324 clr R3
0006 232C mov R2,R3
0008 3324 clr R3
000A 27FC sbrc R2,7
000C 3094 com R3
000E 20BC out 0x20,R2
0010 .dbline 14
0010 ; UBRRL = (unsigned char)baud;
0010 20900000 lds R2,_baud
0014 29B8 out 0x9,R2
0016 .dbline 16
0016 ; /* 设置帧格式: 8 个数据位, 2 个停止位*/
0016 ; UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
0016 8EE8 ldi R24,142
0018 80BD out 0x20,R24
001A .dbline 18
001A ; /* 接收器与发送器使能*/
001A ; UCSRB = (1<<RXEN)|(1<<TXEN);
001A 88E1 ldi R24,24
001C 8AB9 out 0xa,R24
001E .dbline -2
001E L1:
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbend
0020 .dbfunc e main _main fV
0020 ; temp -> R20
.even
0020 _main::
0020 .dbline -1
0020 .dbline 22
0020 ; }
0020 ;
0020 ; void main(void)
0020 ; {
0020 .dbline 24
0020 ; unsigned char temp;
0020 ; USART_Init();
0020 EFDF xcall _USART_Init
0022 .dbline 25
0022 ; puts("Hello World!\n");
0022 00E0 ldi R16,<L3
0024 10E0 ldi R17,>L3
0026 0E940000 xcall _puts
002A .dbline 26
002A ; putchar(0x0d);
002A 0DE0 ldi R16,13
002C 0E940000 xcall _putchar
0030 .dbline 27
0030 ; putchar(0x0a);
0030 0AE0 ldi R16,10
0032 0E940000 xcall _putchar
0036 .dbline 28
0036 ; printf("Please Input in Tx_windows");
0036 00E0 ldi R16,<L4
0038 10E0 ldi R17,>L4
003A 0E940000 xcall _printf
003E .dbline 29
003E ; putchar(0x0a);
003E 0AE0 ldi R16,10
0040 0E940000 xcall _putchar
0044 .dbline 30
0044 ; putchar(0x0d);
0044 0DE0 ldi R16,13
0046 0E940000 xcall _putchar
004A 0DC0 xjmp L6
004C L5:
004C .dbline 32
004C ; while (1)
004C ; {
004C .dbline 33
004C ; temp=getchar();
004C 0E940000 xcall _getchar
0050 402F mov R20,R16
0052 .dbline 34
0052 ; if (temp!=0)
0052 0023 tst R16
0054 41F0 breq L8
0056 .dbline 35
0056 ; {
0056 .dbline 36
0056 ; putchar(temp);
0056 0E940000 xcall _putchar
005A .dbline 37
005A ; if(temp==0x0d)
005A 4D30 cpi R20,13
005C 19F4 brne L10
005E .dbline 38
005E ; putchar(0x0a);
005E 0AE0 ldi R16,10
0060 0E940000 xcall _putchar
0064 L10:
0064 .dbline 39
0064 ; temp=0;
0064 4427 clr R20
0066 .dbline 40
0066 ; }
0066 L8:
0066 .dbline 41
0066 L6:
0066 .dbline 31
0066 F2CF xjmp L5
0068 X0:
0068 .dbline -2
0068 L2:
0068 .dbline 0 ; func end
0068 0895 ret
006A .dbsym r temp 20 c
006A .dbend
.area data(ram, con, rel)
0001 .dbfile C:\bak\YM200\uart\uart.c
0001 L4:
0001 .blkb 27
.area idata
0001 506C6561736520496E70757420696E20 .byte 'P,'l,'e,'a,'s,'e,32,'I,'n,'p,'u,'t,32,'i,'n,32
0011 54785F77696E646F777300 .byte 'T,'x,95,'w,'i,'n,'d,'o,'w,'s,0
.area data(ram, con, rel)
001C .dbfile C:\bak\YM200\uart\uart.c
001C L3:
001C .blkb 14
.area idata
001C 48656C6C6F20576F726C64210A00 .byte 'H,'e,'l,'l,'o,32,'W,'o,'r,'l,'d,33,10,0
.area data(ram, con, rel)
002A .dbfile C:\bak\YM200\uart\uart.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -