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

📄 usart2.lst

📁 AVR单片机串口异步通信,通过电脑串口助手使电脑和单片机运行简单的数据通讯
💻 LST
字号:
__start:
__text_start:
    002A E5CF      LDI	R28,0x5F
    002B E0D4      LDI	R29,4
    002C BFCD      OUT	0x3D,R28
    002D BFDE      OUT	0x3E,R29
    002E 51C0      SUBI	R28,0x10
    002F 40D0      SBCI	R29,0
    0030 EA0A      LDI	R16,0xAA
    0031 8308      STD	Y+0,R16
    0032 2400      CLR	R0
    0033 E6E0      LDI	R30,0x60
    0034 E0F0      LDI	R31,0
    0035 E010      LDI	R17,0
    0036 36E0      CPI	R30,0x60
    0037 07F1      CPC	R31,R17
    0038 F011      BEQ	0x003B
    0039 9201      ST	R0,Z+
    003A CFFB      RJMP	0x0036
    003B 8300      STD	Z+0,R16
    003C E5E4      LDI	R30,0x54
    003D E0F0      LDI	R31,0
    003E E6A0      LDI	R26,0x60
    003F E0B0      LDI	R27,0
    0040 E010      LDI	R17,0
    0041 35E4      CPI	R30,0x54
    0042 07F1      CPC	R31,R17
    0043 F021      BEQ	0x0048
    0044 95C8      LPM
    0045 9631      ADIW	R30,1
    0046 920D      ST	R0,X+
    0047 CFF9      RJMP	0x0041
    0048 940E0059  CALL	_main
_exit:
    004A CFFF      RJMP	_exit
_uart0_rx_isr:
  dat                  --> R20
    004B 940E00BE  CALL	push_lset
    004D 940E00A7  CALL	push_gset1
FILE: F:\LX\USART\usart2.c
(0001) #include<iom16v.h>
(0002) #include <macros.h>
(0003) #define key (PIND&0x04)          //定义按键PD2
(0004) /*****************函数原型声明************************/
(0005) void USART_Init(unsigned int baud);     
(0006) void USART_Transmit(unsigned char dat);
(0007) void delayms(unsigned int t);
(0008) unsigned char USART_Receive(void);
(0009) /******************接收中断函数****************************/
(0010) #pragma interrupt_handler uart0_rx_isr:12
(0011) void uart0_rx_isr(void)
(0012) { unsigned char dat;
(0013)    if(UCSRA&(1<<RXC)){         //把要接收的数据全部接收
    004F 9B5F      SBIS	0x0B,7
    0050 C003      RJMP	0x0054
(0014)    dat=UDR; 
    0051 B14C      IN	R20,0x0C
(0015)    USART_Transmit(dat);
    0052 2F04      MOV	R16,R20
    0053 D02A      RCALL	_USART_Transmit
(0016)    }
    0054 940E00AA  CALL	pop_gset1
    0056 940E00D5  CALL	pop_lset
    0058 9518      RETI
(0017) }	
(0018) /*****************************************************/
(0019) void main(void)
(0020) { unsigned char rec;
(0021)     PORTB=0xff;
_main:
  rec                  --> Y+1
    0059 EF8F      LDI	R24,0xFF
    005A BB88      OUT	0x18,R24
(0022)     DDRB=0xff;
    005B BB87      OUT	0x17,R24
(0023)     PORTD=0x07;
    005C E087      LDI	R24,7
    005D BB82      OUT	0x12,R24
(0024) 	DDRD=0x02;
    005E E082      LDI	R24,2
    005F BB81      OUT	0x11,R24
(0025) 	UCSRA=0x00;
    0060 2422      CLR	R2
    0061 B82B      OUT	0x0B,R2
(0026)     USART_Init(71);            //波特为9600,外部晶振11.0592
    0062 E407      LDI	R16,0x47
    0063 E010      LDI	R17,0
    0064 D00F      RCALL	_USART_Init
(0027) 	SEI();
    0065 9478      BSET	7
    0066 C00B      RJMP	0x0072
(0028)     while(1)
(0029) 	{ 	
(0030) 	   if(key==0)
    0067 9982      SBIC	0x10,2
    0068 C009      RJMP	0x0072
(0031) 	     {                     //按键按下发送一字节数据
(0032) 	     delayms(10);
    0069 E00A      LDI	R16,0xA
    006A E010      LDI	R17,0
    006B D01A      RCALL	_delayms
(0033) 		 if(key==0){
    006C 9982      SBIC	0x10,2
    006D C004      RJMP	0x0072
(0034) 		 while(!key);
    006E 9B82      SBIS	0x10,2
    006F CFFE      RJMP	0x006E
(0035) 		 USART_Transmit(0x22);
    0070 E202      LDI	R16,0x22
    0071 D00C      RCALL	_USART_Transmit
    0072 CFF4      RJMP	0x0067
    0073 9508      RET
(0036) 		           }
(0037) 	     }
(0038)      }		 
(0039) }
(0040) 
(0041) /******************USART初始化***********************/    
(0042) void USART_Init(unsigned int baud)
(0043)  {
(0044)   UBRRH=(unsigned char)(baud>>8);
_USART_Init:
  baud                 --> R16
    0074 0118      MOVW	R2,R16
    0075 2C23      MOV	R2,R3
    0076 2433      CLR	R3
    0077 BC20      OUT	0x20,R2
(0045)   UBRRL=(unsigned char)baud;  //设定波特率
    0078 B909      OUT	0x09,R16
(0046)   UCSRB=0x98;                 //使能接收和发送,开接收中断
    0079 E988      LDI	R24,0x98
    007A B98A      OUT	0x0A,R24
(0047)   UCSRC=0x8e;                 //设置帧格式8数据位,2停止位
    007B E88E      LDI	R24,0x8E
    007C BD80      OUT	0x20,R24
    007D 9508      RET
(0048)  }
(0049) /************发送函数****************************/
(0050) void USART_Transmit(unsigned char dat)
(0051)  {
(0052)    while(!(UCSRA&(1<<UDRE)));
_USART_Transmit:
  dat                  --> R16
    007E 9B5D      SBIS	0x0B,5
    007F CFFE      RJMP	_USART_Transmit
(0053)    UDR=dat;
    0080 B90C      OUT	0x0C,R16
    0081 9508      RET
(0054)  }
(0055) /************接收函数*****************************/
(0056) unsigned char USART_Receive(void)
(0057)  {
(0058)   while(!(UCSRA&(1<<RXC)));
_USART_Receive:
    0082 9B5F      SBIS	0x0B,7
    0083 CFFE      RJMP	_USART_Receive
(0059)   return UDR;
    0084 B10C      IN	R16,0x0C
    0085 9508      RET
_delayms:
  i                    --> R20
  j                    --> R22
  t                    --> R16
    0086 940E00A5  CALL	push_gset2
(0060)  }
(0061) /**********延时*********************************/
(0062) void delayms(unsigned int t)
(0063)  {
(0064)    unsigned int i,j;
(0065)    for(i=0;i<t;i++)
    0088 2744      CLR	R20
    0089 2755      CLR	R21
    008A C00B      RJMP	0x0096
(0066)     for(j=0;j<100;j++);
FILE: <library>
    008B 2766      CLR	R22
    008C 2777      CLR	R23
    008D C002      RJMP	0x0090
    008E 5F6F      SUBI	R22,0xFF
    008F 4F7F      SBCI	R23,0xFF
    0090 3664      CPI	R22,0x64
    0091 E0E0      LDI	R30,0
    0092 077E      CPC	R23,R30
    0093 F3D0      BCS	0x008E
    0094 5F4F      SUBI	R20,0xFF
    0095 4F5F      SBCI	R21,0xFF
    0096 1740      CP	R20,R16
    0097 0751      CPC	R21,R17
    0098 F390      BCS	0x008B
    0099 940E009C  CALL	pop_gset2
    009B 9508      RET
pop_gset2:
    009C E0E2      LDI	R30,2
    009D 940C00AB  JMP	pop
push_gset5:
    009F 92FA      ST	R15,-Y
    00A0 92EA      ST	R14,-Y
push_gset4:
    00A1 92DA      ST	R13,-Y
    00A2 92CA      ST	R12,-Y
push_gset3:
    00A3 92BA      ST	R11,-Y
    00A4 92AA      ST	R10,-Y
push_gset2:
    00A5 937A      ST	R23,-Y
    00A6 936A      ST	R22,-Y
push_gset1:
    00A7 935A      ST	R21,-Y
    00A8 934A      ST	R20,-Y
    00A9 9508      RET
pop_gset1:
    00AA E0E1      LDI	R30,1
pop:
    00AB 9149      LD	R20,Y+
    00AC 9159      LD	R21,Y+
    00AD FDE0      SBRC	R30,0
    00AE 9508      RET
    00AF 9169      LD	R22,Y+
    00B0 9179      LD	R23,Y+
    00B1 FDE1      SBRC	R30,1
    00B2 9508      RET
    00B3 90A9      LD	R10,Y+
    00B4 90B9      LD	R11,Y+
    00B5 FDE2      SBRC	R30,2
    00B6 9508      RET
    00B7 90C9      LD	R12,Y+
    00B8 90D9      LD	R13,Y+
    00B9 FDE3      SBRC	R30,3
    00BA 9508      RET
    00BB 90E9      LD	R14,Y+
    00BC 90F9      LD	R15,Y+
    00BD 9508      RET
push_lset:
    00BE 93FA      ST	R31,-Y
    00BF 93EA      ST	R30,-Y
    00C0 93BA      ST	R27,-Y
    00C1 93AA      ST	R26,-Y
    00C2 939A      ST	R25,-Y
    00C3 938A      ST	R24,-Y
    00C4 933A      ST	R19,-Y
    00C5 932A      ST	R18,-Y
    00C6 931A      ST	R17,-Y
    00C7 930A      ST	R16,-Y
    00C8 929A      ST	R9,-Y
    00C9 928A      ST	R8,-Y
    00CA 927A      ST	R7,-Y
    00CB 926A      ST	R6,-Y
    00CC 925A      ST	R5,-Y
    00CD 924A      ST	R4,-Y
    00CE 923A      ST	R3,-Y
    00CF 922A      ST	R2,-Y
    00D0 921A      ST	R1,-Y
    00D1 920A      ST	R0,-Y
    00D2 B60F      IN	R0,0x3F
    00D3 920A      ST	R0,-Y
    00D4 9508      RET
pop_lset:
    00D5 9009      LD	R0,Y+
    00D6 BE0F      OUT	0x3F,R0
    00D7 9009      LD	R0,Y+
    00D8 9019      LD	R1,Y+
    00D9 9029      LD	R2,Y+
    00DA 9039      LD	R3,Y+
    00DB 9049      LD	R4,Y+
    00DC 9059      LD	R5,Y+
    00DD 9069      LD	R6,Y+
    00DE 9079      LD	R7,Y+
    00DF 9089      LD	R8,Y+
    00E0 9099      LD	R9,Y+
    00E1 9109      LD	R16,Y+
    00E2 9119      LD	R17,Y+
    00E3 9129      LD	R18,Y+
    00E4 9139      LD	R19,Y+
    00E5 9189      LD	R24,Y+
    00E6 9199      LD	R25,Y+
    00E7 91A9      LD	R26,Y+
    00E8 91B9      LD	R27,Y+
    00E9 91E9      LD	R30,Y+
    00EA 91F9      LD	R31,Y+
    00EB 9508      RET

⌨️ 快捷键说明

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