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

📄 usart1.s

📁 AVR单片机串口异步通信,通过电脑串口助手使电脑和单片机运行简单的数据通讯
💻 S
字号:
	.module usart1.c
	.area data(ram, con, rel)
_strings::
	.blkb 19
	.area idata
	.byte 180,243,209,167,201,250,181,231,215,211,180,180,208,194,208,173
	.byte 187,225,0
	.area data(ram, con, rel)
	.dbfile F:\LX\USART\usart1.c
	.dbsym e strings _strings A[19:19]c
	.area text(rom, con, rel)
	.dbfile F:\LX\USART\usart1.c
	.dbfunc e main _main fV
;            rec -> <dead>
;              i -> R20
	.even
_main::
	.dbline -1
	.dbline 11
; #include<iom16v.h>
; #define key (PIND&0x04)          //定义按键PD2
; /*****************函数原型声明************************/
; void USART_Init(unsigned int baud);
; void USART_Transmit(unsigned char dat);
; void delayms(unsigned int t);
; unsigned char USART_Receive(void);
; unsigned char strings[]="大学生电子创新协会";
; /******************主函数****************************/
; void main(void)
;  { unsigned char rec,i;
	.dbline 12
;     PORTB=0xff;
	ldi R24,255
	out 0x18,R24
	.dbline 13
;     DDRB=0xff;
	out 0x17,R24
	.dbline 14
;     PORTD=0x07;
	ldi R24,7
	out 0x12,R24
	.dbline 15
; 	DDRD=0x02;
	ldi R24,2
	out 0x11,R24
	.dbline 16
;     USART_Init(71);//波特为9600,外部晶振11.0592
	ldi R16,71
	ldi R17,0
	xcall _USART_Init
	.dbline 17
; 	for(i=0;i<18;i++)
	clr R20
	xjmp L5
L2:
	.dbline 18
	ldi R24,<_strings
	ldi R25,>_strings
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	xcall _USART_Transmit
L3:
	.dbline 17
	inc R20
L5:
	.dbline 17
	cpi R20,18
	brlo L2
L6:
	.dbline 20
	.dbline 34
L7:
	.dbline 19
	xjmp L6
X0:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym l rec 1 c
	.dbsym r i 20 c
	.dbend
	.dbfunc e USART_Init _USART_Init fV
;           baud -> R16,R17
	.even
_USART_Init::
	.dbline -1
	.dbline 38
;    USART_Transmit(strings[i]);
;     while(1)
; 	{ /* 	
; 	  if(key==0){    //按键按下发送一字节数据
; 	     delayms(10);
; 		 if(key==0){
; 		 while(!key);
; 		 for(i=0;i<18;i++)
; 		 USART_Transmit(strings[i]);
; 		        }
; 	      }
;     if(UCSRA&(1<<RXC))    //如果接收缓存区有数据*********
;   {
;    rec=USART_Receive(); 
;    USART_Transmit(rec); 
;          }*/
;    }		 
; }	
; /******************USART初始化***********************/    
; void USART_Init(unsigned int baud)
;  {
	.dbline 40
;   //UBRRH=(unsigned char)(baud/256);
;   UBRRL=(unsigned char)baud;  //设定波特率
	out 0x9,R16
	.dbline 41
;   UCSRB=0x18;                 //使能接收和发送
	ldi R24,24
	out 0xa,R24
	.dbline 42
;   UCSRC=0x8e;                 //设置帧格式8数据位,2停止位
	ldi R24,142
	out 0x20,R24
	.dbline -2
L9:
	.dbline 0 ; func end
	ret
	.dbsym r baud 16 i
	.dbend
	.dbfunc e USART_Transmit _USART_Transmit fV
;            dat -> R16
	.even
_USART_Transmit::
	.dbline -1
	.dbline 46
;  }
; /************发送函数****************************/
; void USART_Transmit(unsigned char dat)
;  {
L11:
	.dbline 47
L12:
	.dbline 47
;    while(!(UCSRA&(1<<UDRE)));
	sbis 0xb,5
	rjmp L11
	.dbline 48
;    UDR=dat;
	out 0xc,R16
	.dbline -2
L10:
	.dbline 0 ; func end
	ret
	.dbsym r dat 16 c
	.dbend
	.dbfunc e USART_Receive _USART_Receive fc
	.even
_USART_Receive::
	.dbline -1
	.dbline 52
;  }
; /************接收函数*****************************/
; unsigned char USART_Receive(void)
;  {
L15:
	.dbline 53
L16:
	.dbline 53
;   while(!(UCSRA&(1<<RXC)));
	sbis 0xb,7
	rjmp L15
	.dbline 54
;   return UDR;
	in R16,0xc
	.dbline -2
L14:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delayms _delayms fV
;              i -> R20,R21
;              j -> R22,R23
;              t -> R16,R17
	.even
_delayms::
	xcall push_gset2
	.dbline -1
	.dbline 58
;  }
; /**********延时*********************************/
; void delayms(unsigned int t)
;  {
	.dbline 60
;    unsigned int i,j;
;    for(i=0;i<t;i++)
	clr R20
	clr R21
	xjmp L22
L19:
	.dbline 61
	clr R22
	clr R23
	xjmp L26
L23:
	.dbline 61
L24:
	.dbline 61
	subi R22,255  ; offset = 1
	sbci R23,255
L26:
	.dbline 61
	cpi R22,100
	ldi R30,0
	cpc R23,R30
	brlo L23
L20:
	.dbline 60
	subi R20,255  ; offset = 1
	sbci R21,255
L22:
	.dbline 60
	cp R20,R16
	cpc R21,R17
	brlo L19
	.dbline -2
L18:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r j 22 i
	.dbsym r t 16 i
	.dbend

⌨️ 快捷键说明

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