?? usart.s
字號:
.module usart.c
.area text(rom, con, rel)
.dbfile usart.c
.dbfunc e usart_init _usart_init fV
.even
_usart_init::
.dbline -1
.dbline 5
; /*上位機發送一個數據,下位返回相同的數據,在中斷中接收數據,并發送數據*/
; #include <iom16v.h>
; #include <macros.h>
; void usart_init(void)
; {
.dbline 6
; UBRR=0X33;//fosc=8mhz,波特率9600
ldi R24,51
out 0x9,R24
.dbline 7
; UCSRA=0X20;
ldi R24,32
out 0xb,R24
.dbline 8
; UCSRC=0X86;
ldi R24,134
out 0x20,R24
.dbline 9
; UCSRB=0X98;
ldi R24,152
out 0xa,R24
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 44
jmp _usart_receive
.area text(rom, con, rel)
.dbfile usart.c
.dbfunc e usart_receive _usart_receive fV
; d -> R16
.even
_usart_receive::
st -y,R16
st -y,R24
in R16,0x3f
st -y,R16
.dbline -1
.dbline 13
; }
; #pragma interrupt_handler usart_receive:12
; void usart_receive(void)
; {
.dbline 15
; unsigned char d;
; d=UDR;
in R16,0xc
.dbline 16
; UDR=0xff;
ldi R24,255
out 0xc,R24
L3:
.dbline 18
L4:
.dbline 17
; while(!(UCSRA&(1<<TXC)))
sbis 0xb,6
rjmp L3
.dbline -2
L2:
ld R16,y+
out 0x3f,R16
ld R24,y+
ld R16,y+
.dbline 0 ; func end
reti
.dbsym r d 16 c
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 22
; ;
;
; }
; void main(void)
; {
.dbline 23
; CLI();
cli
.dbline 24
; usart_init();
xcall _usart_init
.dbline 25
; SEI();
sei
L7:
.dbline 26
L8:
.dbline 26
xjmp L7
X0:
.dbline -2
L6:
.dbline 0 ; func end
ret
.dbend
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -