📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile E:\新建文件夹\usart_icc\cfile\main.c
.area data(ram, con, rel)
.dbfile E:\新建文件夹\usart_icc\cfile\main.c
_data::
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile E:\新建文件夹\usart_icc\cfile\main.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile E:\新建文件夹\usart_icc\cfile\main.c
.dbfile E:\新建文件夹\usart_icc\includes\main.h
.dbsym e data _data A[4:4]c
_CNT::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\新建文件夹\usart_icc\includes\main.h
.dbsym e CNT _CNT c
_RsBytes::
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile E:\新建文件夹\usart_icc\includes\main.h
.dbfile E:\新建文件夹\usart_icc\cfile\main.c
.dbsym e RsBytes _RsBytes I
_flag::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\新建文件夹\usart_icc\cfile\main.c
.dbsym e flag _flag c
.area text(rom, con, rel)
.dbfile E:\新建文件夹\usart_icc\cfile\main.c
.dbfunc e main _main fV
; msg -> R20,R21
.even
_main::
sbiw R28,2
.dbline -1
.dbline 15
; #define MAIN_C
; #include "includes.h"
; /***************************/
; /*串口通信*/
; /*晶振为4MHz*/
; /*波特率为9600bps*/
; /*发送采用查询方式,中断采用接收方式*/
; /*当收到的字符达到所定义的长度时,则在LCD上显示收到的字符*/
; /***************************/
; #define BufSize 1
; unsigned char RsBuf[BufSize]; //定义接收缓冲器
; int RsBytes = 0;
; unsigned char flag = 0;
; void main(void)
; {
.dbline 16
; unsigned char *msg = "Usart Test!\n";
ldi R20,<L2
ldi R21,>L2
.dbline 17
; SREG |= (1<<7); //使能全局中断
bset 7
.dbline 18
; UsartInit();
xcall _UsartInit
.dbline 19
; Init_LCD();
xcall _Init_LCD
.dbline 20
; SendNbyte(msg,12);
ldi R18,12
movw R16,R20
xcall _SendNbyte
.dbline 21
; PutStr("Test Ok\n");
ldi R16,<L3
ldi R17,>L3
xcall _PutStr
.dbline 22
; LCD_DisplayString(1,1,"Usart Test!");
ldi R24,<L4
ldi R25,>L4
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,1
xcall _LCD_DisplayString
.dbline 23
; delay_nms(2000);
ldi R16,2000
ldi R17,7
xcall _delay_nms
.dbline 24
; LCD_Clear();
xcall _LCD_Clear
.dbline 25
; LCD_DisplayString(1,1,"Recive is :");
ldi R24,<L5
ldi R25,>L5
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,1
xcall _LCD_DisplayString
xjmp L7
L6:
.dbline 27
; while(1)
; {
.dbline 28
; if(flag)
lds R2,_flag
tst R2
breq L9
X0:
.dbline 29
; {
.dbline 30
; PutStr(RsBuf);
ldi R16,<_RsBuf
ldi R17,>_RsBuf
xcall _PutStr
.dbline 31
; LCD_DisplayString(2,1,RsBuf);
ldi R24,<_RsBuf
ldi R25,>_RsBuf
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,2
xcall _LCD_DisplayString
.dbline 32
; PutChar('\n');
ldi R16,10
xcall _PutChar
.dbline 33
; flag = 0;
clr R2
sts _flag,R2
.dbline 34
; }
L9:
.dbline 35
; }
L7:
.dbline 26
xjmp L6
X1:
.dbline -2
L1:
.dbline 0 ; func end
adiw R28,2
ret
.dbsym r msg 20 pc
.dbend
.area vector(rom, abs)
.org 44
jmp _uart0_rx_isr
.area text(rom, con, rel)
.dbfile E:\新建文件夹\usart_icc\cfile\main.c
.dbfunc e uart0_rx_isr _uart0_rx_isr fV
.even
_uart0_rx_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 43
; }
;
; //接收中断子程序
; #pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
; void uart0_rx_isr(void)
; //#pragma vector = USART_RXC_vect
; //__interrupt void RXC_isr( void )
; {
.dbline 44
; RsBuf[RsBytes] = UDR;
ldi R24,<_RsBuf
ldi R25,>_RsBuf
lds R30,_RsBytes
lds R31,_RsBytes+1
add R30,R24
adc R31,R25
in R2,0xc
std z+0,R2
.dbline 45
; RsBytes ++;
lds R24,_RsBytes
lds R25,_RsBytes+1
adiw R24,1
sts _RsBytes+1,R25
sts _RsBytes,R24
.dbline 47
; //PutChar(RsBuf[RsBytes]); //回显
; if(RsBytes > BufSize)
ldi R24,1
ldi R25,0
lds R2,_RsBytes
lds R3,_RsBytes+1
cp R24,R2
cpc R25,R3
brge L12
X2:
.dbline 48
; {
.dbline 49
; flag = 1;
sts _flag,R24
.dbline 50
; RsBytes = 0;
clr R2
clr R3
sts _RsBytes+1,R3
sts _RsBytes,R2
.dbline 51
; }
L12:
.dbline -2
L11:
.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 E:\新建文件夹\usart_icc\cfile\main.c
_RsBuf::
.blkb 1
.dbsym e RsBuf _RsBuf A[1:1]c
_KeyDown::
.blkb 1
.dbfile E:\新建文件夹\usart_icc\includes\main.h
.dbsym e KeyDown _KeyDown c
_KeyUp::
.blkb 1
.dbsym e KeyUp _KeyUp c
.area data(ram, con, rel)
.dbfile E:\新建文件夹\usart_icc\includes\main.h
L5:
.blkb 12
.area idata
.byte 'R,'e,'c,'i,'v,'e,32,'i,'s,32,58,0
.area data(ram, con, rel)
.dbfile E:\新建文件夹\usart_icc\includes\main.h
L4:
.blkb 12
.area idata
.byte 'U,'s,'a,'r,'t,32,'T,'e,'s,'t,33,0
.area data(ram, con, rel)
.dbfile E:\新建文件夹\usart_icc\includes\main.h
L3:
.blkb 9
.area idata
.byte 'T,'e,'s,'t,32,'O,'k,10,0
.area data(ram, con, rel)
.dbfile E:\新建文件夹\usart_icc\includes\main.h
L2:
.blkb 13
.area idata
.byte 'U,'s,'a,'r,'t,32,'T,'e,'s,'t,33,10,0
.area data(ram, con, rel)
.dbfile E:\新建文件夹\usart_icc\includes\main.h
; }
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -