⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usart.s

📁 AVR单片机系统开发经典实例部分源程序
💻 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 + -