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

📄 usart1.lst

📁 AVR单片机串口异步通信,通过电脑串口助手使电脑和单片机运行简单的数据通讯
💻 LST
字号:
__start:
__text_start:
    0034 E5CF      LDI	R28,0x5F
    0035 E0D4      LDI	R29,4
    0036 BFCD      OUT	0x3D,R28
    0037 BFDE      OUT	0x3E,R29
    0038 51C0      SUBI	R28,0x10
    0039 40D0      SBCI	R29,0
    003A EA0A      LDI	R16,0xAA
    003B 8308      STD	Y+0,R16
    003C 2400      CLR	R0
    003D E7E3      LDI	R30,0x73
    003E E0F0      LDI	R31,0
    003F E010      LDI	R17,0
    0040 37E3      CPI	R30,0x73
    0041 07F1      CPC	R31,R17
    0042 F011      BEQ	0x0045
    0043 9201      ST	R0,Z+
    0044 CFFB      RJMP	0x0040
    0045 8300      STD	Z+0,R16
    0046 E5E4      LDI	R30,0x54
    0047 E0F0      LDI	R31,0
    0048 E6A0      LDI	R26,0x60
    0049 E0B0      LDI	R27,0
    004A E010      LDI	R17,0
    004B 36E7      CPI	R30,0x67
    004C 07F1      CPC	R31,R17
    004D F021      BEQ	0x0052
    004E 95C8      LPM
    004F 9631      ADIW	R30,1
    0050 920D      ST	R0,X+
    0051 CFF9      RJMP	0x004B
    0052 940E0055  CALL	_main
_exit:
    0054 CFFF      RJMP	_exit
FILE: F:\LX\USART\usart1.c
(0001) #include<iom16v.h>
(0002) #define key (PIND&0x04)          //定义按键PD2
(0003) /*****************函数原型声明************************/
(0004) void USART_Init(unsigned int baud);
(0005) void USART_Transmit(unsigned char dat);
(0006) void delayms(unsigned int t);
(0007) unsigned char USART_Receive(void);
(0008) unsigned char strings[]="大学生电子创新协会";
(0009) /******************主函数****************************/
(0010) void main(void)
(0011)  { unsigned char rec,i;
(0012)     PORTB=0xff;
_main:
  rec                  --> Y+1
  i                    --> R20
    0055 EF8F      LDI	R24,0xFF
    0056 BB88      OUT	0x18,R24
(0013)     DDRB=0xff;
    0057 BB87      OUT	0x17,R24
(0014)     PORTD=0x07;
    0058 E087      LDI	R24,7
    0059 BB82      OUT	0x12,R24
(0015) 	DDRD=0x02;
    005A E082      LDI	R24,2
    005B BB81      OUT	0x11,R24
(0016)     USART_Init(71);//波特为9600,外部晶振11.0592
    005C E407      LDI	R16,0x47
    005D E010      LDI	R17,0
    005E D00F      RCALL	_USART_Init
(0017) 	for(i=0;i<18;i++)
    005F 2744      CLR	R20
    0060 C009      RJMP	0x006A
(0018)    USART_Transmit(strings[i]);
    0061 E680      LDI	R24,0x60
    0062 E090      LDI	R25,0
    0063 2FE4      MOV	R30,R20
    0064 27FF      CLR	R31
    0065 0FE8      ADD	R30,R24
    0066 1FF9      ADC	R31,R25
    0067 8100      LDD	R16,Z+0
    0068 D00B      RCALL	_USART_Transmit
    0069 9543      INC	R20
    006A 3142      CPI	R20,0x12
    006B F3A8      BCS	0x0061
(0019)     while(1)
    006C CFFF      RJMP	0x006C
    006D 9508      RET
(0020) 	{ /* 	
(0021) 	  if(key==0){    //按键按下发送一字节数据
(0022) 	     delayms(10);
(0023) 		 if(key==0){
(0024) 		 while(!key);
(0025) 		 for(i=0;i<18;i++)
(0026) 		 USART_Transmit(strings[i]);
(0027) 		        }
(0028) 	      }
(0029)     if(UCSRA&(1<<RXC))    //如果接收缓存区有数据*********
(0030)   {
(0031)    rec=USART_Receive(); 
(0032)    USART_Transmit(rec); 
(0033)          }*/
(0034)    }		 
(0035) }	
(0036) /******************USART初始化***********************/    
(0037) void USART_Init(unsigned int baud)
(0038)  {
(0039)   //UBRRH=(unsigned char)(baud/256);
(0040)   UBRRL=(unsigned char)baud;  //设定波特率
_USART_Init:
  baud                 --> R16
    006E B909      OUT	0x09,R16
(0041)   UCSRB=0x18;                 //使能接收和发送
    006F E188      LDI	R24,0x18
    0070 B98A      OUT	0x0A,R24
(0042)   UCSRC=0x8e;                 //设置帧格式8数据位,2停止位
    0071 E88E      LDI	R24,0x8E
    0072 BD80      OUT	0x20,R24
    0073 9508      RET
(0043)  }
(0044) /************发送函数****************************/
(0045) void USART_Transmit(unsigned char dat)
(0046)  {
(0047)    while(!(UCSRA&(1<<UDRE)));
_USART_Transmit:
  dat                  --> R16
    0074 9B5D      SBIS	0x0B,5
    0075 CFFE      RJMP	_USART_Transmit
(0048)    UDR=dat;
    0076 B90C      OUT	0x0C,R16
    0077 9508      RET
(0049)  }
(0050) /************接收函数*****************************/
(0051) unsigned char USART_Receive(void)
(0052)  {
(0053)   while(!(UCSRA&(1<<RXC)));
_USART_Receive:
    0078 9B5F      SBIS	0x0B,7
    0079 CFFE      RJMP	_USART_Receive
(0054)   return UDR;
    007A B10C      IN	R16,0x0C
    007B 9508      RET
_delayms:
  i                    --> R20
  j                    --> R22
  t                    --> R16
    007C 940E009B  CALL	push_gset2
(0055)  }
(0056) /**********延时*********************************/
(0057) void delayms(unsigned int t)
(0058)  {
(0059)    unsigned int i,j;
(0060)    for(i=0;i<t;i++)
    007E 2744      CLR	R20
    007F 2755      CLR	R21
    0080 C00B      RJMP	0x008C
(0061)     for(j=0;j<100;j++);
FILE: <library>
    0081 2766      CLR	R22
    0082 2777      CLR	R23
    0083 C002      RJMP	0x0086
    0084 5F6F      SUBI	R22,0xFF
    0085 4F7F      SBCI	R23,0xFF
    0086 3664      CPI	R22,0x64
    0087 E0E0      LDI	R30,0
    0088 077E      CPC	R23,R30
    0089 F3D0      BCS	0x0084
    008A 5F4F      SUBI	R20,0xFF
    008B 4F5F      SBCI	R21,0xFF
    008C 1740      CP	R20,R16
    008D 0751      CPC	R21,R17
    008E F390      BCS	0x0081
    008F 940E0092  CALL	pop_gset2
    0091 9508      RET
pop_gset2:
    0092 E0E2      LDI	R30,2
    0093 940C00A1  JMP	pop
push_gset5:
    0095 92FA      ST	R15,-Y
    0096 92EA      ST	R14,-Y
push_gset4:
    0097 92DA      ST	R13,-Y
    0098 92CA      ST	R12,-Y
push_gset3:
    0099 92BA      ST	R11,-Y
    009A 92AA      ST	R10,-Y
push_gset2:
    009B 937A      ST	R23,-Y
    009C 936A      ST	R22,-Y
push_gset1:
    009D 935A      ST	R21,-Y
    009E 934A      ST	R20,-Y
    009F 9508      RET
pop_gset1:
    00A0 E0E1      LDI	R30,1
pop:
    00A1 9149      LD	R20,Y+
    00A2 9159      LD	R21,Y+
    00A3 FDE0      SBRC	R30,0
    00A4 9508      RET
    00A5 9169      LD	R22,Y+
    00A6 9179      LD	R23,Y+
    00A7 FDE1      SBRC	R30,1
    00A8 9508      RET
    00A9 90A9      LD	R10,Y+
    00AA 90B9      LD	R11,Y+
    00AB FDE2      SBRC	R30,2
    00AC 9508      RET
    00AD 90C9      LD	R12,Y+
    00AE 90D9      LD	R13,Y+
    00AF FDE3      SBRC	R30,3
    00B0 9508      RET
    00B1 90E9      LD	R14,Y+
    00B2 90F9      LD	R15,Y+
    00B3 9508      RET

⌨️ 快捷键说明

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