?? uart.s
字號:
.module uart.c
.area text(rom, con, rel)
.dbfile D:\AVRchengcu\PS2--AVR\uart.c
.dbfunc e init_USART _init_USART fV
.even
_init_USART::
.dbline -1
.dbline 11
; #include <iom16v.h>
; #include <macros.h>
; //常量定義
; #define BAUDRATE 9600 //波特率
; #define F_CPU 16000000 //這個已經在makefile里面定義了
;
;
;
;
; void init_USART(void)//USART 初始化
; {
.dbline 12
; UCSRC = (1<<URSEL) | 0x06;
ldi R24,134
out 0x20,R24
.dbline 13
; UBRRL= (F_CPU/BAUDRATE/16-1)%256;
ldi R24,103
out 0x9,R24
.dbline 14
; UBRRH= (F_CPU/BAUDRATE/16-1)/256;
clr R2
out 0x20,R2
.dbline 15
; UCSRA = 0x00;
out 0xb,R2
.dbline 16
; UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
ldi R24,152
out 0xa,R24
.dbline -2
.dbline 17
; }
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e put_c _put_c fV
; c -> R16
.even
_put_c::
.dbline -1
.dbline 20
;
; void put_c(unsigned char c) //發送采用查詢方式
; {
L3:
.dbline 21
L4:
.dbline 21
; while( !(UCSRA & (1<<UDRE)) );
sbis 0xb,5
rjmp L3
.dbline 22
; UDR=c;
out 0xc,R16
.dbline -2
.dbline 23
; }
L2:
.dbline 0 ; func end
ret
.dbsym r c 16 c
.dbend
.dbfunc e put_s _put_s fV
; ptr -> R20,R21
.even
_put_s::
rcall push_gset1
mov R20,R16
mov R21,R17
.dbline -1
.dbline 26
;
; void put_s(unsigned char *ptr)
; {
rjmp L8
L7:
.dbline 28
.dbline 29
mov R30,R20
mov R31,R21
ld R16,Z+
mov R20,R30
mov R21,R31
rcall _put_c
.dbline 30
L8:
.dbline 27
; while (*ptr)
mov R30,R20
mov R31,R21
ldd R2,z+0
tst R2
brne L7
.dbline 31
; {
; put_c(*ptr++);
; }
; put_c(0x0D);
ldi R16,13
rcall _put_c
.dbline 32
; put_c(0x0A); //結尾發送回車換行
ldi R16,10
rcall _put_c
.dbline -2
.dbline 33
; }
L6:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r ptr 20 pc
.dbend
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -