?? usart.lis
字號:
.module usart.c
.area text(rom, con, rel)
0000 .dbfile E:\新建文件夾\usart_icc\cfile\usart.c
0000 .dbfunc e UsartInit _UsartInit fV
.even
0000 _UsartInit::
0000 .dbline -1
0000 .dbline 4
0000 ; #define USART_C
0000 ; #include "includes.h"
0000 ; void UsartInit(void)
0000 ; {
0000 .dbline 12
0000 ; // 晶振頻率 : 4.0MHz
0000 ; // 通信參數: 8 Data, 1 Stop, No Parity
0000 ; // 波特率:
0000 ; // UBRRL= 0x0C 19200;
0000 ; // UBRRL= 0x19 9600;
0000 ; // UBRRL= 0x33 4800;
0000 ; // UBRRL= 0x67 2400
0000 ; UCSRB |= (1<<RXEN)|(1<<TXEN)|(1<<RXCIE); //允許發送和接收,接收中斷使能
0000 8AB1 in R24,0xa
0002 8869 ori R24,152
0004 8AB9 out 0xa,R24
0006 .dbline 13
0006 ; UCSRC |= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //8位數據位+1位停止位
0006 80B5 in R24,0x20
0008 8668 ori R24,134
000A 80BD out 0x20,R24
000C .dbline 14
000C ; UBRRH = 0x00;
000C 2224 clr R2
000E 20BC out 0x20,R2
0010 .dbline 15
0010 ; UBRRL = 0x19;
0010 89E1 ldi R24,25
0012 89B9 out 0x9,R24
0014 .dbline -2
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
0016 .dbfunc e PutChar _PutChar fI
0016 ; c -> R20
.even
0016 _PutChar::
0016 4A93 st -y,R20
0018 402F mov R20,R16
001A .dbline -1
001A .dbline 20
001A ; //sei();
001A ; }
001A ;
001A ; int PutChar(char c)
001A ; {
001A .dbline 21
001A ; if(c == '\n')
001A 4A30 cpi R20,10
001C 11F4 brne L3
001E X0:
001E .dbline 22
001E ; {
001E .dbline 23
001E ; PutChar('\r');
001E 0DE0 ldi R16,13
0020 FADF xcall _PutChar
0022 .dbline 24
0022 ; }
0022 L3:
0022 .dbline 25
0022 ; UDR = c;
0022 4CB9 out 0xc,R20
0024 L5:
0024 .dbline 26
0024 ; while(!(UCSRA &(1<<UDRE)));
0024 L6:
0024 .dbline 26
0024 5D9B sbis 0xb,5
0026 FECF rjmp L5
0028 X1:
0028 .dbline 27
0028 ; UCSRA |= (1<<UDRE);
0028 5D9A sbi 0xb,5
002A .dbline 28
002A ; return 0;
002A 0027 clr R16
002C 1127 clr R17
002E .dbline -2
002E L2:
002E .dbline 0 ; func end
002E 4991 ld R20,y+
0030 0895 ret
0032 .dbsym r c 20 c
0032 .dbend
0032 .dbfunc e SendNbyte _SendNbyte fV
0032 ; w -> R10
0032 ; L -> R12
0032 ; p -> R14,R15
.even
0032 _SendNbyte::
0032 0E940000 xcall push_xgset00FC
0036 C22E mov R12,R18
0038 7801 movw R14,R16
003A .dbline -1
003A .dbline 33
003A ; }
003A ;
003A ;
003A ; void SendNbyte(unsigned char *p,unsigned char L)
003A ; {
003A .dbline 35
003A ; unsigned char w;
003A ; for(w=0;w<L;w++)
003A AA24 clr R10
003C 07C0 xjmp L12
003E L9:
003E .dbline 36
003E ; {
003E .dbline 40
003E ; // UDR = *(p+w);
003E ; // while(!(UCSRA &(1<<UDRE)));
003E ; //UCSRA |= (1<<UDRE);
003E ; PutChar(*(p+w));
003E EA2D mov R30,R10
0040 FF27 clr R31
0042 EE0D add R30,R14
0044 FF1D adc R31,R15
0046 0081 ldd R16,z+0
0048 E6DF xcall _PutChar
004A .dbline 41
004A ; }
004A L10:
004A .dbline 35
004A A394 inc R10
004C L12:
004C .dbline 35
004C AC14 cp R10,R12
004E B8F3 brlo L9
0050 X2:
0050 .dbline -2
0050 L8:
0050 .dbline 0 ; func end
0050 0C940000 xjmp pop_xgset00FC
0054 .dbsym r w 10 c
0054 .dbsym r L 12 c
0054 .dbsym r p 14 pc
0054 .dbend
0054 .dbfunc e PutStr _PutStr fV
0054 ; Str -> R20,R21
.even
0054 _PutStr::
0054 4A93 st -y,R20
0056 5A93 st -y,R21
0058 A801 movw R20,R16
005A .dbline -1
005A .dbline 46
005A ;
005A ; }
005A ;
005A ; void PutStr(unsigned char *Str)
005A ; {
005A 05C0 xjmp L15
005C L14:
005C .dbline 48
005C ; while(*Str != '\0')
005C ; {
005C .dbline 49
005C ; PutChar(*Str);
005C FA01 movw R30,R20
005E 0081 ldd R16,z+0
0060 DADF xcall _PutChar
0062 .dbline 50
0062 ; Str++;
0062 4F5F subi R20,255 ; offset = 1
0064 5F4F sbci R21,255
0066 .dbline 51
0066 ; }
0066 L15:
0066 .dbline 47
0066 FA01 movw R30,R20
0068 2080 ldd R2,z+0
006A 2220 tst R2
006C B9F7 brne L14
006E X3:
006E .dbline -2
006E L13:
006E .dbline 0 ; func end
006E 5991 ld R21,y+
0070 4991 ld R20,y+
0072 0895 ret
0074 .dbsym r Str 20 pc
0074 .dbend
0074 ; }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -