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

📄 xiangmu2.lst

📁 rewtr y vruutuyukyuj
💻 LST
📖 第 1 页 / 共 2 页
字号:
__start:
__text_start:
    0013 EDCF      LDI	R28,0xDF
    0014 E0D0      LDI	R29,0
    0015 BFCD      OUT	0x3D,R28
    0016 BFDE      OUT	0x3E,R29
    0017 51C0      SUBI	R28,0x10
    0018 40D0      SBCI	R29,0
    0019 EA0A      LDI	R16,0xAA
    001A 8308      STD	Y+0,R16
    001B 2400      CLR	R0
    001C E6E0      LDI	R30,0x60
    001D E0F0      LDI	R31,0
    001E E010      LDI	R17,0
    001F 36E1      CPI	R30,0x61
    0020 07F1      CPC	R31,R17
    0021 F011      BEQ	0x0024
    0022 9201      ST	R0,Z+
    0023 CFFB      RJMP	0x001F
    0024 8300      STD	Z+0,R16
    0025 E2E6      LDI	R30,0x26
    0026 E0F0      LDI	R31,0
    0027 E6A0      LDI	R26,0x60
    0028 E0B0      LDI	R27,0
    0029 E010      LDI	R17,0
    002A 32E6      CPI	R30,0x26
    002B 07F1      CPC	R31,R17
    002C F021      BEQ	0x0031
    002D 95C8      LPM
    002E 9631      ADIW	R30,1
    002F 920D      ST	R0,X+
    0030 CFF9      RJMP	0x002A
    0031 D05F      RCALL	_main
_exit:
    0032 CFFF      RJMP	_exit
FILE: F:\lesson\leson4.c
(0001) #include  <io2313v.h>
(0002) #include  <macros.h>
(0003) #define  uint   unsigned int 
(0004) #define  uchar  unsigned char
(0005) uchar   rdata;
(0006) 
(0007) 
(0008) 
(0009) void WDT_off(void)
(0010) {
(0011) //__disable_interrupt();
(0012) //__watchdog_reset();
(0013) //#asm("cli");
(0014) SREG &= ~0x80;
_WDT_off:
    0033 94F8      BCLR	7
(0015) // Clear WDRF in MCUSR 
(0016) MCUSR &= ~0x08;
    0034 B784      IN	R24,0x34
    0035 7F87      ANDI	R24,0xF7
    0036 BF84      OUT	0x34,R24
(0017) // Write logical one to WDCE and WDE
(0018) // Keep old prescaler setting to prevent unintentional time-out
(0019) WDTCSR |= 0x18;
    0037 B581      IN	R24,0x21
    0038 6188      ORI	R24,0x18
    0039 BD81      OUT	0x21,R24
(0020) // Turn off WDT 
(0021) WDTCSR = 0x00;
    003A 2422      CLR	R2
    003B BC21      OUT	0x21,R2
(0022) SREG |= 0x80;
    003C 9478      BSET	7
    003D 9508      RET
(0023) //#asm("sei");
(0024) //__enable_interrupt();
(0025) }    
(0026) 
(0027) void USART_Init(unsigned int  baud)
(0028) {
(0029) /* Set baud rate */
(0030) UBRRH = (unsigned char)(baud>>8);
_USART_Init:
  baud                 --> R16
    003E 2E20      MOV	R2,R16
    003F 2E31      MOV	R3,R17
    0040 2C23      MOV	R2,R3
    0041 2433      CLR	R3
    0042 B822      OUT	0x02,R2
(0031) UBRRL = (unsigned char)baud;
    0043 B909      OUT	0x09,R16
(0032) /* Enable receiver and transmitter */
(0033) UCSRB = 0x18;
    0044 E188      LDI	R24,0x18
    0045 B98A      OUT	0x0A,R24
(0034) /* Set frame format: 8data, 2stop bit */
(0035) UCSRC = 0x0E;
    0046 E08E      LDI	R24,0xE
    0047 B983      OUT	0x03,R24
    0048 9508      RET
(0036) //U2X=0;
(0037) }
(0038) 
(0039) 
(0040) void USART_Transmit( unsigned char data )
(0041) {
(0042) /* Wait for empty transmit buffer */
(0043) while ( !( UCSRA & (UCSRA&0x20)) );
_USART_Transmit:
  data                 --> R16
    0049 B18B      IN	R24,0x0B
    004A 7280      ANDI	R24,0x20
    004B B02B      IN	R2,0x0B
    004C 2228      AND	R2,R24
    004D F3D9      BEQ	0x0049
(0044) /* Put data into buffer, sends the data */
(0045) UDR = data;		 		 	   	   		  			 //Transmit 8  data  bits
    004E B90C      OUT	0x0C,R16
    004F 9508      RET
(0046) }
(0047) 
(0048) /*
(0049) void USART_Transmit( unsigned int data )
(0050) {
(0051) //Wait for empty transmit buffer 
(0052) while (!( UCSRA & (1<<UDRE)));
(0053) // Copy 9th bit to TXB8 
(0054) UCSRB &= ~(1<<TXB8);
(0055) if ( data & 0x0100 )
(0056) UCSRB |= (1<<TXB8);
(0057) // Put data into buffer, sends the data 
(0058) UDR = data;		 		 	   	   		  			//Transmit 9  data  bits
(0059) }
(0060) */
(0061) 
(0062) 
(0063) unsigned char USART_Receive( void )
(0064) {
(0065) // Wait for data to be received 
(0066) while ( !(UCSRA & (UCSRA&0x80)) );
_USART_Receive:
    0050 B18B      IN	R24,0x0B
    0051 7880      ANDI	R24,0x80
    0052 B02B      IN	R2,0x0B
    0053 2228      AND	R2,R24
    0054 F3D9      BEQ	0x0050
(0067) //Get and return received data from buffer 
(0068) return UDR;		 		  	   			   			//Receive  8  data  bits
    0055 B10C      IN	R16,0x0C
    0056 9508      RET
_delayms:
  i                    --> R20
  j                    --> R22
  ms                   --> R16
    0057 D131      RCALL	push_gset2
(0069) }
(0070) 
(0071) /*
(0072) unsigned int USART_Receive( void )
(0073) {
(0074) unsigned char status, resh, resl;
(0075) // Wait for data to be received 
(0076) while ( !(UCSRA & (1<<RXC)) );
(0077) // Get status and 9th bit, then data 
(0078) // from buffer 
(0079) status = UCSRA;
(0080) resh = UCSRB;
(0081) resl = UDR;
(0082) // If error, return -1 
(0083) if ( status & (1<<FE)|(1<<DOR)|(1<<UPE) )
(0084) return -1;
(0085) // Filter the 9th bit, then return 
(0086) resh = (resh >> 1) & 0x01;
(0087) return ((resh << 8) | resl);	   		//Receive   9 data bits
(0088) }
(0089) */
(0090) 
(0091) void  delayms(uint ms)
(0092) {
(0093) uint i,j;
(0094) for(i=0;i<ms;i++)
    0058 2744      CLR	R20
    0059 2755      CLR	R21
    005A C00B      RJMP	0x0066
(0095)   {
(0096)   for(j=0;j<1141;j++);
    005B 2766      CLR	R22
    005C 2777      CLR	R23
    005D C002      RJMP	0x0060
    005E 5F6F      SUBI	R22,0xFF
    005F 4F7F      SBCI	R23,0xFF
    0060 3765      CPI	R22,0x75
    0061 E0E4      LDI	R30,4
    0062 077E      CPC	R23,R30
    0063 F3D0      BCS	0x005E
    0064 5F4F      SUBI	R20,0xFF
    0065 4F5F      SBCI	R21,0xFF
    0066 1740      CP	R20,R16
    0067 0751      CPC	R21,R17
    0068 F390      BCS	0x005B
    0069 D117      RCALL	pop_gset2
    006A 9508      RET
_delayus:
  i                    --> R20
  us                   --> R16
    006B D11F      RCALL	push_gset1
(0097)   }
(0098) }
(0099) void  delayus(uint us)
(0100) {
(0101) 
(0102) uint i;
(0103)  
(0104)   for(i=0;i<us;i++)
    006C 2744      CLR	R20
    006D 2755      CLR	R21
    006E C006      RJMP	0x0075
(0105)   {
(0106)   NOP();NOP();NOP();NOP();
    006F 0000      NOP
    0070 0000      NOP
    0071 0000      NOP
    0072 0000      NOP
    0073 5F4F      SUBI	R20,0xFF
    0074 4F5F      SBCI	R21,0xFF
    0075 1740      CP	R20,R16
    0076 0751      CPC	R21,R17
    0077 F3B8      BCS	0x006F
    0078 D115      RCALL	pop_gset1
    0079 9508      RET
_senddata:
  i                    --> R20
  data                 --> R16
    007A D110      RCALL	push_gset1
(0107)   }
(0108) }
(0109) void  senddata(uint data)               //  dm13a(led 驱动子程序)
(0110) {
(0111) uchar i;
(0112) for(i=0;i<16;i++)
    007B 2744      CLR	R20
    007C C00D      RJMP	0x008A
(0113) {
(0114) PORTD&=~0x10;	
    007D 9894      CBI	0x12,4
(0115) NOP();
    007E 0000      NOP
(0116) if(data&0x8000)
    007F FF17      SBRS	R17,7
    0080 C002      RJMP	0x0083
(0117) PORTD|=0x20; 	 	  					        //置位操作
    0081 9A95      SBI	0x12,5
    0082 C001      RJMP	0x0084
(0118) else	
(0119) PORTD&=~0x20;									//清零操作
    0083 9895      CBI	0x12,5
(0120) NOP();
    0084 0000      NOP
(0121) PORTD|=0x10;
    0085 9A94      SBI	0x12,4
(0122) NOP();
    0086 0000      NOP
(0123) data=data<<1;
    0087 0F00      LSL	R16
    0088 1F11      ROL	R17
    0089 9543      INC	R20
    008A 3140      CPI	R20,0x10
    008B F388      BCS	0x007D
(0124) }		 		   	 	  				
(0125) PORTD|=0x08;
    008C 9A93      SBI	0x12,3
(0126) NOP();
    008D 0000      NOP
(0127) PORTD&=~0x08;
    008E 9893      CBI	0x12,3
    008F D0FE      RCALL	pop_gset1
    0090 9508      RET
_main:
  m                    --> R20
  j                    --> Y+0
  n                    --> R10
  k                    --> R12
  i                    --> R14
  h                    --> R22
    0091 9722      SBIW	R28,2
(0128) 
(0129) //PORTD|=(1<<PORTD5);		 		   	 	  					//置位操作
(0130) //PORTD&=~(1<<PORTD5);		 	   	 		   			  		//清零操作
(0131) }
(0132) 
(0133) void main() 
(0134) {
(0135) 
(0136) DDRD|=0x38;
    0092 B381      IN	R24,0x11
    0093 6388      ORI	R24,0x38
    0094 BB81      OUT	0x11,R24
(0137) DDRB|=0x40;
    0095 9ABE      SBI	0x17,6
(0138) 
(0139) WDT_off();
    0096 DF9C      RCALL	_WDT_off
(0140) 
(0141) USART_Init(9600);
    0097 E800      LDI	R16,0x80
    0098 E215      LDI	R17,0x25
    0099 DFA4      RCALL	_USART_Init
(0142) 
(0143) PORTB&=0xBF;
    009A B388      IN	R24,0x18
    009B 7B8F      ANDI	R24,0xBF
    009C BB88      OUT	0x18,R24
(0144) 
(0145) delayms(20);
    009D E104      LDI	R16,0x14
    009E E010      LDI	R17,0
    009F DFB7      RCALL	_delayms
(0146) delayms(20);
    00A0 E104      LDI	R16,0x14
    00A1 E010      LDI	R17,0
    00A2 DFB4      RCALL	_delayms
(0147) delayms(20);
    00A3 E104      LDI	R16,0x14
    00A4 E010      LDI	R17,0
    00A5 DFB1      RCALL	_delayms
(0148) 
(0149) 	  USART_Receive();
    00A6 DFA9      RCALL	_USART_Receive
(0150) 	  rdata=UDR;
    00A7 B02C      IN	R2,0x0C
    00A8 92200060  STS	rdata,R2
(0151) 	  switch(rdata)
    00AA 2D42      MOV	R20,R2
    00AB 2755      CLR	R21
    00AC 3442      CPI	R20,0x42
    00AD E0E0      LDI	R30,0
    00AE 075E      CPC	R21,R30
    00AF F409      BNE	0x00B1
    00B0 C03D      RJMP	0x00EE
    00B1 E482      LDI	R24,0x42
    00B2 E090      LDI	R25,0
    00B3 1784      CP	R24,R20
    00B4 0795      CPC	R25,R21
    00B5 F02C      BLT	0x00BB
    00B6 3347      CPI	R20,0x37
    00B7 E0E0      LDI	R30,0
    00B8 075E      CPC	R21,R30
    00B9 F0E9      BEQ	0x00D7
    00BA C0C3      RJMP	0x017E
    00BB 344D      CPI	R20,0x4D

⌨️ 快捷键说明

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