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

📄 usart.s

📁 AVR单片机的电机测速程序
💻 S
字号:
	.module usart.c
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\www\桌面\motor_ce\usart.c
	.dbfunc e Usart_Tx _Usart_Tx fV
;           data -> R16
	.even
_Usart_Tx::
	.dbline -1
	.dbline 5
; #include "includes.h"
; //-------------------------------------------------------------
; //字符输出函数 		
; void Usart_Tx(unsigned char data)
; {	 
L2:
	.dbline 6
L3:
	.dbline 6
; while (!(UCSRA&(1<<UDRE)));
	sbis 0xb,5
	rjmp L2
	.dbline 7
; UDR=data;    
	out 0xc,R16
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r data 16 c
	.dbend
	.dbfunc e Usart_Rx _Usart_Rx fc
	.even
_Usart_Rx::
	.dbline -1
	.dbline 11
; }
; //字符输入函数 		
; unsigned char Usart_Rx(void)
; {
L6:
	.dbline 12
L7:
	.dbline 12
; while(!(UCSRA& (1<<RXC)));
	sbis 0xb,7
	rjmp L6
	.dbline 13
; return UDR;
	in R16,0xc
	.dbline -2
L5:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Usart_Str_Tx _Usart_Str_Tx fV
;              s -> R20,R21
	.even
_Usart_Str_Tx::
	xcall push_gset1
	movw R20,R16
	.dbline -1
	.dbline 17
; }		
; //字符串输出函数	   	
; void Usart_Str_Tx(char *s)
; {
	xjmp L11
L10:
	.dbline 19
	.dbline 20
	movw R30,R20
	ldd R16,z+0
	xcall _Usart_Tx
	.dbline 21
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 22
L11:
	.dbline 18
; while (*s)
	movw R30,R20
	ldd R2,z+0
	tst R2
	brne L10
	.dbline 23
; {
; Usart_Tx(*s);
; s++;
; }	
; Usart_Tx(0x0a);//回车换行
	ldi R16,10
	xcall _Usart_Tx
	.dbline 24
; Usart_Tx(0x0d);
	ldi R16,13
	xcall _Usart_Tx
	.dbline -2
L9:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r s 20 pc
	.dbend
	.dbfunc e Usart_Init _Usart_Init fV
	.even
_Usart_Init::
	.dbline -1
	.dbline 28
; }
; //------------------------------------------------------
; void Usart_Init(void)//9600,8,1,
; {
	.dbline 29
;  UCSRB = 0x00; //disable while setting baud rate
	clr R2
	out 0xa,R2
	.dbline 30
;  UCSRA = 0x00;
	out 0xb,R2
	.dbline 31
;  UCSRC = 0x86;
	ldi R24,134
	out 0x20,R24
	.dbline 34
; //UBRRL = 0x33; //set baud rate lo
; //UBRRH = 0x00; //set baud rate hi
; UBRRL = 0x0C; //set baud rate lo
	ldi R24,12
	out 0x9,R24
	.dbline 35
; UBRRH = 0x00; //set baud rate hi,38400
	out 0x20,R2
	.dbline 36
;  UCSRB = 0x18;
	ldi R24,24
	out 0xa,R24
	.dbline -2
L13:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Usart_Buffer_Tx _Usart_Buffer_Tx fV
;              i -> R20,R21
;         Buffer -> R22,R23
	.even
_Usart_Buffer_Tx::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 40
; }
; //----------------------------------------------------
; void Usart_Buffer_Tx(unsigned char Buffer[Buffer_Length])
; {
	.dbline 41
; unsigned int i=0;
	clr R20
	clr R21
	xjmp L16
L15:
	.dbline 43
	.dbline 44
	mov R16,R20
	xcall _Usart_Tx
	.dbline 45
	movw R30,R20
	add R30,R22
	adc R31,R23
	ldd R16,z+0
	xcall _Usart_Tx
	.dbline 46
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 47
	movw R30,R20
	add R30,R22
	adc R31,R23
	ldd R16,z+0
	xcall _Usart_Tx
	.dbline 49
	ldi R16,10
	xcall _Usart_Tx
	.dbline 50
	ldi R16,13
	xcall _Usart_Tx
	.dbline 51
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 52
L16:
	.dbline 42
; while(i<Buffer_Length)
	cpi R20,100
	ldi R30,0
	cpc R21,R30
	brlo L15
	.dbline -2
L14:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r Buffer 22 pc
	.dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -