?? uart_test.s
字號:
.module uart_test.c
.area text(rom, con, rel)
.dbfile F:\avrprojs\uart_test\uart_test.c
.dbfunc e delay _delay fV
; i -> y+0
.even
_delay::
rcall push_gset2
sbiw R28,4
.dbline -1
.dbline 4
; #include <iom48v.h>
;
; void delay(void)
; {
.dbline 6
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
std z+0,R20
std z+1,R21
std z+2,R22
std z+3,R23
rjmp L5
L2:
.dbline 6
L3:
.dbline 6
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
L5:
.dbline 6
; unsigned long i;
; for(i=0;i<11142;i++);
ldi R20,134
ldi R21,43
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brlo L2
.dbline -2
L1:
adiw R28,4
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l i 0 l
.dbend
.dbfunc e uart0_init _uart0_init fV
.even
_uart0_init::
.dbline -1
.dbline 10
; }
;
; void uart0_init(void)
; {
.dbline 12
;
; UCSR0B = 0x00; //disable while setting baud rate
clr R2
sts 193,R2
.dbline 13
; UCSR0A = 0x00;
sts 192,R2
.dbline 14
; UCSR0C = 0x0E;
ldi R24,14
sts 194,R24
.dbline 15
; UBRR0L = 0x6; //set baud rate lo
ldi R24,6
sts 196,R24
.dbline 16
; UBRR0H = 0x00; //set baud rate hi
sts 197,R2
.dbline 17
; UCSR0B = 0x08;
ldi R24,8
sts 193,R24
.dbline -2
L6:
.dbline 0 ; func end
ret
.dbend
.dbfunc e sendchar _sendchar fV
; c -> R16
.even
_sendchar::
.dbline -1
.dbline 25
; // UBRR0 =0x33;
; // UCSR0B=0x08;
; // UCSR0C=0x0e;
; // UBRR0L=0x6;
; }
;
; void sendchar(unsigned char c)
; {
.dbline 27
; // while(!(UCSR0A&0x40));
; UDR0=c;
sts 198,R16
L8:
.dbline 28
L9:
.dbline 28
; while(!(UCSR0A&0x40));
lds R2,192
sbrs R2,6
rjmp L8
.dbline -2
L7:
.dbline 0 ; func end
ret
.dbsym r c 16 c
.dbend
.dbfunc e main _main fI
; i -> R20,R21
.even
_main::
.dbline -1
.dbline 32
; }
;
; main()
; {
.dbline 34
; int i;
; uart0_init();
rcall _uart0_init
rjmp L13
L12:
.dbline 36
; while(1)
; {
.dbline 37
; delay();
rcall _delay
.dbline 39
;
; sendchar('0'+i);
mov R16,R20
subi R16,208 ; offset = 48
sbci R17,255
rcall _sendchar
.dbline 40
; i=i+1;
subi R20,255 ; offset = 1
sbci R21,255
.dbline 41
; if(i>=10)
cpi R20,10
ldi R30,0
cpc R21,R30
brlt L15
.dbline 42
; i=0;
clr R20
clr R21
L15:
.dbline 43
L13:
.dbline 35
rjmp L12
X0:
.dbline -2
L11:
.dbline 0 ; func end
ret
.dbsym r i 20 I
.dbend
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -