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

📄 usart2.lst

📁 基于MEG128芯片程序设计。主要实现LED显示等功能
💻 LST
字号:
__start:
__text_start:
      46 EFCF      LDI	R28,0xFF
      47 E1D0      LDI	R29,0x10
      48 BFCD      OUT	0x3D,R28
      49 BFDE      OUT	0x3E,R29
      4A 51C0      SUBI	R28,0x10
      4B 40D0      SBCI	R29,0
      4C EA0A      LDI	R16,0xAA
      4D 8308      STD	Y+0,R16
      4E 2400      CLR	R0
      4F E0E0      LDI	R30,0
      50 E0F1      LDI	R31,1
      51 E011      LDI	R17,1
      52 30E0      CPI	R30,0
      53 07F1      CPC	R31,R17
      54 F011      BEQ	0x0057
      55 9201      ST	R0,Z+
      56 CFFB      RJMP	0x0052
      57 8300      STD	Z+0,R16
      58 E8EC      LDI	R30,0x8C
      59 E0F0      LDI	R31,0
      5A E0A0      LDI	R26,0
      5B E0B1      LDI	R27,1
      5C E010      LDI	R17,0
      5D E000      LDI	R16,0
      5E BF0B      OUT	0x3B,R16
      5F 38EC      CPI	R30,0x8C
      60 07F1      CPC	R31,R17
      61 F021      BEQ	0x0066
      62 95C8      LPM
      63 9631      ADIW	R30,1
      64 920D      ST	R0,X+
      65 CFF9      RJMP	0x005F
      66 940E 00CA CALL	_main
_exit:
      68 CFFF      RJMP	_exit
_UART0_RX_interrupt:
  Temp                 --> R20
      69 920A      ST	R0,-Y
      6A 921A      ST	R1,-Y
      6B 922A      ST	R2,-Y
      6C 923A      ST	R3,-Y
      6D 924A      ST	R4,-Y
      6E 925A      ST	R5,-Y
      6F 926A      ST	R6,-Y
      70 927A      ST	R7,-Y
      71 928A      ST	R8,-Y
      72 929A      ST	R9,-Y
      73 930A      ST	R16,-Y
      74 931A      ST	R17,-Y
      75 932A      ST	R18,-Y
      76 933A      ST	R19,-Y
      77 934A      ST	R20,-Y
      78 938A      ST	R24,-Y
      79 939A      ST	R25,-Y
      7A 93AA      ST	R26,-Y
      7B 93BA      ST	R27,-Y
      7C 93EA      ST	R30,-Y
      7D 93FA      ST	R31,-Y
      7E B60F      IN	R0,0x3F
      7F 920A      ST	R0,-Y
      80 934A      ST	R20,-Y
FILE: E:\AVRPRJ\dy\USART2.c
(0001) #include <iom128v.h>
(0002) #include <macros.h>
(0003) #pragma interrupt_handler UART0_RX_interrupt:19
(0004) void UART0_RX_interrupt( void )           
(0005) {
(0006)    unsigned char Temp;
(0007)    Temp=UDR0;
      81 B14C      IN	R20,0x0C
(0008)    if(Temp=='b')Buzzer();
      82 3642      CPI	R20,0x62
      83 F409      BNE	0x0085
      84 D019      RCALL	_Buzzer
      85 9149      LD	R20,Y+
      86 9009      LD	R0,Y+
      87 BE0F      OUT	0x3F,R0
      88 91F9      LD	R31,Y+
      89 91E9      LD	R30,Y+
      8A 91B9      LD	R27,Y+
      8B 91A9      LD	R26,Y+
      8C 9199      LD	R25,Y+
      8D 9189      LD	R24,Y+
      8E 9149      LD	R20,Y+
      8F 9139      LD	R19,Y+
      90 9129      LD	R18,Y+
      91 9119      LD	R17,Y+
      92 9109      LD	R16,Y+
      93 9099      LD	R9,Y+
      94 9089      LD	R8,Y+
      95 9079      LD	R7,Y+
      96 9069      LD	R6,Y+
      97 9059      LD	R5,Y+
      98 9049      LD	R4,Y+
      99 9039      LD	R3,Y+
      9A 9029      LD	R2,Y+
      9B 9019      LD	R1,Y+
      9C 9009      LD	R0,Y+
      9D 9518      RETI
(0009) }
(0010) void Buzzer(void)
(0011) {
(0012)  	 PORTB&=0xfe;      			//开蜂鸣器
_Buzzer:
      9E B388      IN	R24,0x18
      9F 7F8E      ANDI	R24,0xFE
      A0 BB88      OUT	0x18,R24
(0013) 	delay(50);
      A1 E302      LDI	R16,0x32
      A2 E010      LDI	R17,0
      A3 D002      RCALL	_delay
(0014) 	PORTB|=0x01;             //关蜂鸣器
      A4 9AC0      SBI	0x18,0
      A5 9508      RET
_delay:
  i                    --> R20
  j                    --> R22
  n                    --> R16
      A6 940E 00D4 CALL	push_xgsetF000
(0015) }
(0016) void delay(int n)
(0017) {
(0018)   int i,j;
(0019)   for(i=0;i<n;i++)
      A8 2744      CLR	R20
      A9 2755      CLR	R21
      AA C00A      RJMP	0x00B5
(0020)    for(j=0;j<1000;j++) 
      AB 2766      CLR	R22
      AC 2777      CLR	R23
      AD 5F6F      SUBI	R22,0xFF
      AE 4F7F      SBCI	R23,0xFF
      AF 3E68      CPI	R22,0xE8
      B0 E0E3      LDI	R30,3
      B1 077E      CPC	R23,R30
      B2 F3D4      BLT	0x00AD
      B3 5F4F      SUBI	R20,0xFF
      B4 4F5F      SBCI	R21,0xFF
      B5 1740      CP	R20,R16
      B6 0751      CPC	R21,R17
      B7 F39C      BLT	0x00AB
      B8 940C 00D9 JMP	pop_xgsetF000
(0021)     ;
(0022) }
(0023) void USART_Transmit(char data)
(0024) {
(0025)  	 while(!(UCSR0A&(1<<UDRE0)))
_USART_Transmit:
  data                 --> R16
      BA 9B5D      SBIS	0x0B,5
      BB CFFE      RJMP	_USART_Transmit
(0026) 	 ;
(0027) 	 UDR0=data;
      BC B90C      OUT	0x0C,R16
      BD 9508      RET
(0028) 
(0029) }
(0030) void USART_Init(unsigned int baud)
(0031) {
(0032)  UBRR0H=(unsigned char)(baud>>8);
_USART_Init:
  baud                 --> R16
      BE 0118      MOVW	R2,R16
      BF 2C23      MOV	R2,R3
      C0 2433      CLR	R3
      C1 9220 0090 STS	0x0090,R2
(0033)  UBRR0L=(unsigned char)baud;
      C3 B909      OUT	0x09,R16
(0034)  UCSR0B=(1<<RXCIE0)|(1<<RXEN0)|(1<<TXEN0); //接收终端使能,发送和接受使能
      C4 E988      LDI	R24,0x98
      C5 B98A      OUT	0x0A,R24
(0035)  UCSR0C=(1<<UCSZ00)|(1<<UCSZ01);           //设置字符长度,一个停止位,八位数据
      C6 E086      LDI	R24,6
      C7 9380 0095 STS	0x0095,R24
      C9 9508      RET
(0036) }
(0037) main()
(0038) {
(0039)   DDRB=0xff;
_main:
      CA EF8F      LDI	R24,0xFF
      CB BB87      OUT	0x17,R24
(0040)   PORTB=0xff;
      CC BB88      OUT	0x18,R24
(0041)   USART_Init(51);
      CD E303      LDI	R16,0x33
      CE E010      LDI	R17,0
      CF DFEE      RCALL	_USART_Init
(0042)   USART_Transmit('s');
      D0 E703      LDI	R16,0x73
      D1 DFE8      RCALL	_USART_Transmit
(0043)   while(1);
FILE: <library>
      D2 CFFF      RJMP	0x00D2
      D3 9508      RET
push_xgsetF000:
      D4 937A      ST	R23,-Y
      D5 936A      ST	R22,-Y
      D6 935A      ST	R21,-Y
      D7 934A      ST	R20,-Y
      D8 9508      RET
pop_xgsetF000:
      D9 9149      LD	R20,Y+
      DA 9159      LD	R21,Y+
      DB 9169      LD	R22,Y+
      DC 9179      LD	R23,Y+
      DD 9508      RET

⌨️ 快捷键说明

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