📄 usart.s
字号:
.module Usart.c
.area text(rom, con, rel)
.dbfile C:\AVR\M\1\Usart.c
.dbfunc e Usart_Init _Usart_Init fV
; baud -> R16,R17
.even
_Usart_Init::
.dbline -1
.dbline 14
; #include "Usart.h"
;
; //定义fosc频率
; #define fosc 16000000
;
;
; //---------------------------------
; //
; // USART初始化函数
; // baud:波特率
; //
; //---------------------------------
; void Usart_Init(unsigned int baud)
; {
.dbline 15
; UCSR1B = 0x00; //disable while setting baud rate
clr R2
sts 154,R2
.dbline 16
; UCSR1A = 0x00;
sts 155,R2
.dbline 17
; UCSR1C = BIT(UCSZ11) | 0x06;
ldi R24,6
sts 157,R24
.dbline 18
; UBRR1L = 0x2F; //set baud rate lo
ldi R24,47
sts 153,R24
.dbline 19
; UBRR1H = 0x00; //set baud rate hi
sts 152,R2
.dbline 20
; UCSR1B = 0x18;
ldi R24,24
sts 154,R24
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r baud 16 i
.dbend
.dbfunc e Usart_Transmit _Usart_Transmit fV
; data -> R16
.even
_Usart_Transmit::
.dbline -1
.dbline 31
; }
;
;
; //-----------------------------------
; //
; // USART发送函数
; // data:要发送的数据
; //
; //-----------------------------------
; void Usart_Transmit(unsigned char data)
; {
L3:
.dbline 32
L4:
.dbline 32
; while(!(UCSR1A&(1<<UDRE1)));
lds R2,155
sbrs R2,5
rjmp L3
.dbline 33
; UDR1=data;
sts 156,R16
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbsym r data 16 c
.dbend
.dbfunc e Usart_Receive _Usart_Receive fc
.even
_Usart_Receive::
.dbline -1
.dbline 44
; }
;
;
; //-----------------------------------
; //
; // USART接收函数
; // UDR:返回的数据
; //
; //-----------------------------------
; unsigned char Usart_Receive(void)
; {
L7:
.dbline 45
L8:
.dbline 45
; while(!(UCSR1A&(1<<RXC1)));
lds R2,155
sbrs R2,7
rjmp L7
.dbline 46
; return UDR1;
lds R16,156
.dbline -2
L6:
.dbline 0 ; func end
ret
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -