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

📄 main.s

📁 M16控制,从键盘输入字符,当输入字符达到10个的时候,终端和LCD都显示所接收到的字符
💻 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 + -