📄 usart.lis
字号:
.module usart.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\www\桌面\motor_ce\usart.c
0000 .dbfunc e Usart_Tx _Usart_Tx fV
0000 ; data -> R16
.even
0000 _Usart_Tx::
0000 .dbline -1
0000 .dbline 5
0000 ; #include "includes.h"
0000 ; //-------------------------------------------------------------
0000 ; //字符输出函数
0000 ; void Usart_Tx(unsigned char data)
0000 ; {
0000 L2:
0000 .dbline 6
0000 L3:
0000 .dbline 6
0000 ; while (!(UCSRA&(1<<UDRE)));
0000 5D9B sbis 0xb,5
0002 FECF rjmp L2
0004 .dbline 7
0004 ; UDR=data;
0004 0CB9 out 0xc,R16
0006 .dbline -2
0006 L1:
0006 .dbline 0 ; func end
0006 0895 ret
0008 .dbsym r data 16 c
0008 .dbend
0008 .dbfunc e Usart_Rx _Usart_Rx fc
.even
0008 _Usart_Rx::
0008 .dbline -1
0008 .dbline 11
0008 ; }
0008 ; //字符输入函数
0008 ; unsigned char Usart_Rx(void)
0008 ; {
0008 L6:
0008 .dbline 12
0008 L7:
0008 .dbline 12
0008 ; while(!(UCSRA& (1<<RXC)));
0008 5F9B sbis 0xb,7
000A FECF rjmp L6
000C .dbline 13
000C ; return UDR;
000C 0CB1 in R16,0xc
000E .dbline -2
000E L5:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbend
0010 .dbfunc e Usart_Str_Tx _Usart_Str_Tx fV
0010 ; s -> R20,R21
.even
0010 _Usart_Str_Tx::
0010 0E940000 xcall push_gset1
0014 A801 movw R20,R16
0016 .dbline -1
0016 .dbline 17
0016 ; }
0016 ; //字符串输出函数
0016 ; void Usart_Str_Tx(char *s)
0016 ; {
0016 05C0 xjmp L11
0018 L10:
0018 .dbline 19
0018 .dbline 20
0018 FA01 movw R30,R20
001A 0081 ldd R16,z+0
001C F1DF xcall _Usart_Tx
001E .dbline 21
001E 4F5F subi R20,255 ; offset = 1
0020 5F4F sbci R21,255
0022 .dbline 22
0022 L11:
0022 .dbline 18
0022 ; while (*s)
0022 FA01 movw R30,R20
0024 2080 ldd R2,z+0
0026 2220 tst R2
0028 B9F7 brne L10
002A .dbline 23
002A ; {
002A ; Usart_Tx(*s);
002A ; s++;
002A ; }
002A ; Usart_Tx(0x0a);//回车换行
002A 0AE0 ldi R16,10
002C E9DF xcall _Usart_Tx
002E .dbline 24
002E ; Usart_Tx(0x0d);
002E 0DE0 ldi R16,13
0030 E7DF xcall _Usart_Tx
0032 .dbline -2
0032 L9:
0032 0E940000 xcall pop_gset1
0036 .dbline 0 ; func end
0036 0895 ret
0038 .dbsym r s 20 pc
0038 .dbend
0038 .dbfunc e Usart_Init _Usart_Init fV
.even
0038 _Usart_Init::
0038 .dbline -1
0038 .dbline 28
0038 ; }
0038 ; //------------------------------------------------------
0038 ; void Usart_Init(void)//9600,8,1,
0038 ; {
0038 .dbline 29
0038 ; UCSRB = 0x00; //disable while setting baud rate
0038 2224 clr R2
003A 2AB8 out 0xa,R2
003C .dbline 30
003C ; UCSRA = 0x00;
003C 2BB8 out 0xb,R2
003E .dbline 31
003E ; UCSRC = 0x86;
003E 86E8 ldi R24,134
0040 80BD out 0x20,R24
0042 .dbline 34
0042 ; //UBRRL = 0x33; //set baud rate lo
0042 ; //UBRRH = 0x00; //set baud rate hi
0042 ; UBRRL = 0x0C; //set baud rate lo
0042 8CE0 ldi R24,12
0044 89B9 out 0x9,R24
0046 .dbline 35
0046 ; UBRRH = 0x00; //set baud rate hi,38400
0046 20BC out 0x20,R2
0048 .dbline 36
0048 ; UCSRB = 0x18;
0048 88E1 ldi R24,24
004A 8AB9 out 0xa,R24
004C .dbline -2
004C L13:
004C .dbline 0 ; func end
004C 0895 ret
004E .dbend
004E .dbfunc e Usart_Buffer_Tx _Usart_Buffer_Tx fV
004E ; i -> R20,R21
004E ; Buffer -> R22,R23
.even
004E _Usart_Buffer_Tx::
004E 0E940000 xcall push_gset2
0052 B801 movw R22,R16
0054 .dbline -1
0054 .dbline 40
0054 ; }
0054 ; //----------------------------------------------------
0054 ; void Usart_Buffer_Tx(unsigned char Buffer[Buffer_Length])
0054 ; {
0054 .dbline 41
0054 ; unsigned int i=0;
0054 4427 clr R20
0056 5527 clr R21
0058 14C0 xjmp L16
005A L15:
005A .dbline 43
005A .dbline 44
005A 042F mov R16,R20
005C D1DF xcall _Usart_Tx
005E .dbline 45
005E FA01 movw R30,R20
0060 E60F add R30,R22
0062 F71F adc R31,R23
0064 0081 ldd R16,z+0
0066 CCDF xcall _Usart_Tx
0068 .dbline 46
0068 4F5F subi R20,255 ; offset = 1
006A 5F4F sbci R21,255
006C .dbline 47
006C FA01 movw R30,R20
006E E60F add R30,R22
0070 F71F adc R31,R23
0072 0081 ldd R16,z+0
0074 C5DF xcall _Usart_Tx
0076 .dbline 49
0076 0AE0 ldi R16,10
0078 C3DF xcall _Usart_Tx
007A .dbline 50
007A 0DE0 ldi R16,13
007C C1DF xcall _Usart_Tx
007E .dbline 51
007E 4F5F subi R20,255 ; offset = 1
0080 5F4F sbci R21,255
0082 .dbline 52
0082 L16:
0082 .dbline 42
0082 ; while(i<Buffer_Length)
0082 4436 cpi R20,100
0084 E0E0 ldi R30,0
0086 5E07 cpc R21,R30
0088 40F3 brlo L15
008A .dbline -2
008A L14:
008A 0E940000 xcall pop_gset2
008E .dbline 0 ; func end
008E 0895 ret
0090 .dbsym r i 20 i
0090 .dbsym r Buffer 22 pc
0090 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -