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

📄 usart1.s

📁 不可多得的atmel公司canbus通讯程序(at90can128)
💻 S
字号:
	.module USART1.C
	.area text(rom, con, rel)
	.dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\USART1.C
	.area data(ram, con, rel)
	.dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\USART1.C
_USART1_sendPosi::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\USART1.C
	.dbsym e USART1_sendPosi _USART1_sendPosi c
_USART1_sendCount::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\USART1.C
	.dbsym e USART1_sendCount _USART1_sendCount c
	.area text(rom, con, rel)
	.dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\USART1.C
	.dbfunc e USART1_Init _USART1_Init fV
;              i -> <dead>
	.even
_USART1_Init::
	.dbline -1
	.dbline 14
; #define _USART1_H
; #include "AT90CAN128.H"
; 
; uint8 rec_Buf[16];
; uint8 volatile USART1_sendPosi =0;
; uint8 volatile USART1_sendCount=0;
; 
; //UART1 initialize
; // desired baud rate:9600
; // actual baud rate:9615 (0.2%)
; // char size: 8 bit
; // parity: Disabled
; void USART1_Init(void)
; {
	.dbline 17
; uint8 i;
; 
;  UCSR1B = 0x00; //disable while setting baud rate
	clr R2
	sts 201,R2
	.dbline 18
;  UCSR1A = 0x00;
	sts 200,R2
	.dbline 19
;  UCSR1C = 0x06;
	ldi R24,6
	sts 202,R24
	.dbline 20
;  UBRR1L = 0x33; //set baud rate lo单片机内部晶振=8M
	ldi R24,51
	sts 204,R24
	.dbline 21
;  UBRR1H = 0x00; //set baud rate hi
	sts 205,R2
	.dbline 22
;  UCSR1B = (1 << TXEN1) | (1 << TXCIE1); 
	ldi R24,72
	sts 201,R24
	.dbline -2
L3:
	.dbline 0 ; func end
	ret
	.dbsym l i 1 c
	.dbend
	.dbfunc e USART1_Begin_Send _USART1_Begin_Send fV
	.even
_USART1_Begin_Send::
	.dbline -1
	.dbline 27
; }
; 
; 
; void USART1_Begin_Send(void)
; {
	.dbline 28
; 	USART1_sendCount = 16;
	ldi R24,16
	sts _USART1_sendCount,R24
	.dbline 29
; 	USART1_sendPosi = 0;
	clr R2
	sts _USART1_sendPosi,R2
	.dbline 30
;    UDR1 = rec_Buf[USART1_sendPosi++];
	lds R2,_USART1_sendPosi
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts _USART1_sendPosi,R24
	ldi R24,<_rec_Buf
	ldi R25,>_rec_Buf
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts 206,R2
	.dbline -2
L4:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 136
	jmp _USART1_TX_ISR
	.area text(rom, con, rel)
	.dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\USART1.C
	.dbfunc e USART1_TX_ISR _USART1_TX_ISR fV
	.even
_USART1_TX_ISR::
	st -y,R2
	st -y,R3
	st -y,R24
	st -y,R25
	st -y,R30
	st -y,R31
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 36
; }
; 
; 
; #pragma interrupt_handler USART1_TX_ISR:iv_USART1_TX
; void USART1_TX_ISR(void) 
; {
	.dbline 37
; 	if (USART1_sendPosi < USART1_sendCount)
	lds R2,_USART1_sendCount
	lds R3,_USART1_sendPosi
	cp R3,R2
	brsh L6
X0:
	.dbline 38
; 			UDR1 = rec_Buf[USART1_sendPosi++];
	lds R2,_USART1_sendPosi
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts _USART1_sendPosi,R24
	ldi R24,<_rec_Buf
	ldi R25,>_rec_Buf
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts 206,R2
L6:
	.dbline -2
L5:
	.dbline 0 ; func end
	ld R2,y+
	out 0x3f,R2
	ld R31,y+
	ld R30,y+
	ld R25,y+
	ld R24,y+
	ld R3,y+
	ld R2,y+
	reti
	.dbend
	.area bss(ram, con, rel)
	.dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\USART1.C
_rec_Buf::
	.blkb 16
	.dbsym e rec_Buf _rec_Buf A[16:16]c
; }

⌨️ 快捷键说明

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