📄 usart1.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 + -