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

📄 lesson1.lst

📁 rewtr y vruutuyukyuj
💻 LST
字号:
__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 36E0      CPI	R30,0x60
    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 D0BB      RCALL	_main
_exit:
    0032 CFFF      RJMP	_exit
FILE: F:\lesson\leson2.c
(0001) #include  <io2313v.h>
(0002) #include  <macros.h>
(0003) #define  uint   unsigned int 
(0004) #define  uchar  unsigned char
(0005) //#define LED_SET     PORTD |= (1 << PD5)            //位置高
(0006) //#define LED_CLR     PORTD &= ~(1 << PD5)           //位置低
(0007) //#define LED_COM     PORTD ^= (1 << PD5)            //位取反
(0008) //#define LED_R       PIND & (1 << PD5)              //位读取
(0009) 
(0010) 
(0011) void WDT_off(void)
(0012) {
(0013) //__disable_interrupt();
(0014) //__watchdog_reset();
(0015) //#asm("cli");
(0016) SREG &= ~(1 << (SREG&0x80));
_WDT_off:
    0033 B71F      IN	R17,0x3F
    0034 7810      ANDI	R17,0x80
    0035 E001      LDI	R16,1
    0036 D104      RCALL	lsl8
    0037 2E20      MOV	R2,R16
    0038 9420      COM	R2
    0039 B63F      IN	R3,0x3F
    003A 2032      AND	R3,R2
    003B BE3F      OUT	0x3F,R3
(0017) // Clear WDRF in MCUSR 
(0018) MCUSR &= ~(1<<(MCUSR&0x08));
    003C B714      IN	R17,0x34
    003D 7018      ANDI	R17,0x8
    003E E001      LDI	R16,1
    003F D0FB      RCALL	lsl8
    0040 2E20      MOV	R2,R16
    0041 9420      COM	R2
    0042 B634      IN	R3,0x34
    0043 2032      AND	R3,R2
    0044 BE34      OUT	0x34,R3
(0019) // Write logical one to WDCE and WDE
(0020) // Keep old prescaler setting to prevent unintentional time-out
(0021) WDTCSR |= (1<<(WDTCSR&0x10)) | (1<<(WDTCSR&0x08));
    0045 B511      IN	R17,0x21
    0046 7018      ANDI	R17,0x8
    0047 E001      LDI	R16,1
    0048 D0F2      RCALL	lsl8
    0049 2E20      MOV	R2,R16
    004A B511      IN	R17,0x21
    004B 7110      ANDI	R17,0x10
    004C E001      LDI	R16,1
    004D D0ED      RCALL	lsl8
    004E 2E30      MOV	R3,R16
    004F 2832      OR	R3,R2
    0050 B421      IN	R2,0x21
    0051 2823      OR	R2,R3
    0052 BC21      OUT	0x21,R2
(0022) // Turn off WDT 
(0023) WDTCSR = 0x00;
    0053 2422      CLR	R2
    0054 BC21      OUT	0x21,R2
(0024) SREG |= (1 << (SREG&0x80));
    0055 B71F      IN	R17,0x3F
    0056 7810      ANDI	R17,0x80
    0057 E001      LDI	R16,1
    0058 D0E2      RCALL	lsl8
    0059 B62F      IN	R2,0x3F
    005A 2A20      OR	R2,R16
    005B BE2F      OUT	0x3F,R2
    005C 9508      RET
_USART_Init:
  baud                 --> R20
    005D D0C6      RCALL	push_gset1
    005E 2F40      MOV	R20,R16
    005F 2F51      MOV	R21,R17
(0025) //#asm("sei");
(0026) //__enable_interrupt();
(0027) }    
(0028) 
(0029) void USART_Init(unsigned int  baud)
(0030) {
(0031) /* Set baud rate */
(0032) UBRRH = (unsigned char)(baud>>8);
    0060 2E24      MOV	R2,R20
    0061 2E35      MOV	R3,R21
    0062 2C23      MOV	R2,R3
    0063 2433      CLR	R3
    0064 B822      OUT	0x02,R2
(0033) UBRRL = (unsigned char)baud;
    0065 B949      OUT	0x09,R20
(0034) /* Enable receiver and transmitter */
(0035) UCSRB = (1<<(UCSRB&0x10))|(1<<(UCSRB&0x08));
    0066 B11A      IN	R17,0x0A
    0067 7018      ANDI	R17,0x8
    0068 E001      LDI	R16,1
    0069 D0D1      RCALL	lsl8
    006A 2E20      MOV	R2,R16
    006B B11A      IN	R17,0x0A
    006C 7110      ANDI	R17,0x10
    006D E001      LDI	R16,1
    006E D0CC      RCALL	lsl8
    006F 2E30      MOV	R3,R16
    0070 2832      OR	R3,R2
    0071 B83A      OUT	0x0A,R3
(0036) /* Set frame format: 8data, 2stop bit */
(0037) UCSRC = (1<<(UCSRC&0x08))|(3<<(UCSRC&0x02));
    0072 B113      IN	R17,0x03
    0073 7012      ANDI	R17,2
    0074 E003      LDI	R16,3
    0075 D0C5      RCALL	lsl8
    0076 2E20      MOV	R2,R16
    0077 B113      IN	R17,0x03
    0078 7018      ANDI	R17,0x8
    0079 E001      LDI	R16,1
    007A D0C0      RCALL	lsl8
    007B 2E30      MOV	R3,R16
    007C 2832      OR	R3,R2
    007D B833      OUT	0x03,R3
    007E D0A8      RCALL	pop_gset1
    007F 9508      RET
_USART_Transmit:
  data                 --> R20
    0080 D0A3      RCALL	push_gset1
    0081 2F40      MOV	R20,R16
(0038) //U2X=0;
(0039) }
(0040) 
(0041) 
(0042) void USART_Transmit( unsigned char data )
(0043) {
(0044) /* Wait for empty transmit buffer */
(0045) while ( !( UCSRA & (1<<(UCSRA&0x20))) );
    0082 B11B      IN	R17,0x0B
    0083 7210      ANDI	R17,0x20
    0084 E001      LDI	R16,1
    0085 D0B5      RCALL	lsl8
    0086 B02B      IN	R2,0x0B
    0087 2220      AND	R2,R16
    0088 F3C9      BEQ	0x0082
(0046) /* Put data into buffer, sends the data */
(0047) UDR = data;		 		 	   	   		  			 //Transmit 8  data  bits
    0089 B94C      OUT	0x0C,R20
    008A D09C      RCALL	pop_gset1
    008B 9508      RET
(0048) }
(0049) 
(0050) /*
(0051) void USART_Transmit( unsigned int data )
(0052) {
(0053) //Wait for empty transmit buffer 
(0054) while (!( UCSRA & (1<<UDRE)));
(0055) // Copy 9th bit to TXB8 
(0056) UCSRB &= ~(1<<TXB8);
(0057) if ( data & 0x0100 )
(0058) UCSRB |= (1<<TXB8);
(0059) // Put data into buffer, sends the data 
(0060) UDR = data;		 		 	   	   		  			//Transmit 9  data  bits
(0061) }
(0062) */
(0063) 
(0064) 
(0065) unsigned char USART_Receive( void )
(0066) {
(0067) // Wait for data to be received 
(0068) while ( !(UCSRA & (1<<(UCSRA&0x80))) );
_USART_Receive:
    008C B11B      IN	R17,0x0B
    008D 7810      ANDI	R17,0x80
    008E E001      LDI	R16,1
    008F D0AB      RCALL	lsl8
    0090 B02B      IN	R2,0x0B
    0091 2220      AND	R2,R16
    0092 F3C9      BEQ	0x008C
(0069) //Get and return received data from buffer 
(0070) return UDR;		 		  	   			   			//Receive  8  data  bits
    0093 B10C      IN	R16,0x0C
    0094 9508      RET
_delay:
  i                    --> R20
  j                    --> R22
  ms                   --> R16
    0095 D08C      RCALL	push_gset2
(0071) }
(0072) 
(0073) /*
(0074) unsigned int USART_Receive( void )
(0075) {
(0076) unsigned char status, resh, resl;
(0077) // Wait for data to be received 
(0078) while ( !(UCSRA & (1<<RXC)) );
(0079) // Get status and 9th bit, then data 
(0080) // from buffer 
(0081) status = UCSRA;
(0082) resh = UCSRB;
(0083) resl = UDR;
(0084) // If error, return -1 
(0085) if ( status & (1<<FE)|(1<<DOR)|(1<<UPE) )
(0086) return -1;
(0087) // Filter the 9th bit, then return 
(0088) resh = (resh >> 1) & 0x01;
(0089) return ((resh << 8) | resl);	   		//Receive   9 data bits
(0090) }
(0091) */
(0092) 
(0093) void  delay(uint ms)
(0094) {
(0095) uint i,j;
(0096) for(i=0;i<ms;i++)
    0096 2744      CLR	R20
    0097 2755      CLR	R21
    0098 C00B      RJMP	0x00A4
(0097)   {
(0098)   for(j=0;j<1141;j++);
    0099 2766      CLR	R22
    009A 2777      CLR	R23
    009B C002      RJMP	0x009E
    009C 5F6F      SUBI	R22,0xFF
    009D 4F7F      SBCI	R23,0xFF
    009E 3765      CPI	R22,0x75
    009F E0E4      LDI	R30,4
    00A0 077E      CPC	R23,R30
    00A1 F3D0      BCS	0x009C
    00A2 5F4F      SUBI	R20,0xFF
    00A3 4F5F      SBCI	R21,0xFF
    00A4 1740      CP	R20,R16
    00A5 0751      CPC	R21,R17
    00A6 F390      BCS	0x0099
    00A7 D072      RCALL	pop_gset2
    00A8 9508      RET
_senddata:
  i                    --> R20
  data                 --> R22
    00A9 D078      RCALL	push_gset2
    00AA 2F60      MOV	R22,R16
    00AB 2F71      MOV	R23,R17
(0099)   }
(0100) }
(0101) 
(0102) void  senddata(uint data)
(0103) {
(0104) uchar i;
(0105) for(i=0;i<15;i++)
    00AC 2744      CLR	R20
    00AD C028      RJMP	0x00D6
(0106) {
(0107) PORTD&=~(1<<(PORTD&0x10));	
    00AE B312      IN	R17,0x12
    00AF 7110      ANDI	R17,0x10
    00B0 E001      LDI	R16,1
    00B1 D089      RCALL	lsl8
    00B2 2E20      MOV	R2,R16
    00B3 9420      COM	R2
    00B4 B232      IN	R3,0x12
    00B5 2032      AND	R3,R2
    00B6 BA32      OUT	0x12,R3
(0108) NOP();
    00B7 0000      NOP
(0109) if(data&0x8000)
    00B8 FF77      SBRS	R23,7
    00B9 C008      RJMP	0x00C2
(0110) PORTD|=(1<<(PORTD&0x20)); 	 	  					//置位操作
    00BA B312      IN	R17,0x12
    00BB 7210      ANDI	R17,0x20
    00BC E001      LDI	R16,1
    00BD D07D      RCALL	lsl8
    00BE B222      IN	R2,0x12
    00BF 2A20      OR	R2,R16
    00C0 BA22      OUT	0x12,R2
    00C1 C009      RJMP	0x00CB
(0111) else	
(0112) PORTD&=~(1<<(PORTD&0x20));									//清零操作
    00C2 B312      IN	R17,0x12
    00C3 7210      ANDI	R17,0x20
    00C4 E001      LDI	R16,1
    00C5 D075      RCALL	lsl8
    00C6 2E20      MOV	R2,R16
    00C7 9420      COM	R2
    00C8 B232      IN	R3,0x12
    00C9 2032      AND	R3,R2
    00CA BA32      OUT	0x12,R3
(0113) 
(0114) PORTD|=(1<<(PORTD&0x10));
    00CB B312      IN	R17,0x12
    00CC 7110      ANDI	R17,0x10
    00CD E001      LDI	R16,1
    00CE D06C      RCALL	lsl8
    00CF B222      IN	R2,0x12
    00D0 2A20      OR	R2,R16
    00D1 BA22      OUT	0x12,R2
(0115) NOP();
    00D2 0000      NOP
(0116) data=data<<1;
    00D3 0F66      LSL	R22
    00D4 1F77      ROL	R23
    00D5 9543      INC	R20
    00D6 304F      CPI	R20,0xF
    00D7 F2B0      BCS	0x00AE
(0117) }		 		   	 	  				
(0118) PORTD|=(1<<(PORTD&0x08));
    00D8 B312      IN	R17,0x12
    00D9 7018      ANDI	R17,0x8
    00DA E001      LDI	R16,1
    00DB D05F      RCALL	lsl8
    00DC B222      IN	R2,0x12
    00DD 2A20      OR	R2,R16
    00DE BA22      OUT	0x12,R2
(0119) NOP();
    00DF 0000      NOP
(0120) NOP();
    00E0 0000      NOP
(0121) NOP();
    00E1 0000      NOP
(0122) PORTD&=~(1<<(PORTD&0x08));
    00E2 B312      IN	R17,0x12
    00E3 7018      ANDI	R17,0x8
    00E4 E001      LDI	R16,1
    00E5 D055      RCALL	lsl8
    00E6 2E20      MOV	R2,R16
    00E7 9420      COM	R2
    00E8 B232      IN	R3,0x12
    00E9 2032      AND	R3,R2
    00EA BA32      OUT	0x12,R3
    00EB D02E      RCALL	pop_gset2
    00EC 9508      RET
(0123) 
(0124) 
(0125) //PORTD|=(1<<PORTD5);		 		   	 	  					//置位操作
(0126) //PORTD&=~(1<<PORTD5);		 	   	 		   			  		//清零操作
(0127) }
(0128) 
(0129) void main() 
(0130) {
(0131) uchar i;
(0132) uint  j=0x0001;
_main:
  k                    --> R20
  i                    --> R10
  j                    --> R22
    00ED E061      LDI	R22,1
    00EE E070      LDI	R23,0
(0133) uint  k=0x7fff;
    00EF EF4F      LDI	R20,0xFF
    00F0 E75F      LDI	R21,0x7F
(0134) 
(0135) DDRD=0x38;
    00F1 E388      LDI	R24,0x38
    00F2 BB81      OUT	0x11,R24
(0136) 
(0137) WDT_off();
    00F3 DF3F      RCALL	_WDT_off
(0138) USART_Init(9600);
    00F4 E800      LDI	R16,0x80
    00F5 E215      LDI	R17,0x25
    00F6 DF66      RCALL	_USART_Init
    00F7 C020      RJMP	0x0118
(0139) 
(0140) while(1)
(0141) {      
(0142)         
(0143)  		USART_Transmit(0x55);
    00F8 E505      LDI	R16,0x55
    00F9 DF86      RCALL	_USART_Transmit
(0144) 		
(0145) 		for(i=0;i<15;i++)
    00FA 24AA      CLR	R10
    00FB C00B      RJMP	0x0107
(0146) 		{
(0147) 		senddata(j);
    00FC 2F06      MOV	R16,R22
    00FD 2F17      MOV	R17,R23
    00FE DFAA      RCALL	_senddata
(0148) 		delay(200);
    00FF EC08      LDI	R16,0xC8
    0100 E010      LDI	R17,0
    0101 DF93      RCALL	_delay
(0149) 		j=j<<1;
    0102 0F66      LSL	R22
    0103 1F77      ROL	R23
(0150) 		j=j+1;
    0104 5F6F      SUBI	R22,0xFF
    0105 4F7F      SBCI	R23,0xFF
    0106 94A3      INC	R10
    0107 2D8A      MOV	R24,R10
    0108 308F      CPI	R24,0xF
    0109 F390      BCS	0x00FC
(0151) 		}
(0152) 		
(0153) 		for(i=0;i<15;i++)
    010A 24AA      CLR	R10
    010B C009      RJMP	0x0115
(0154) 		{
(0155) 		senddata(k);
    010C 2F04      MOV	R16,R20
    010D 2F15      MOV	R17,R21
    010E DF9A      RCALL	_senddata
(0156) 		delay(200);
    010F EC08      LDI	R16,0xC8
    0110 E010      LDI	R17,0
    0111 DF83      RCALL	_delay
(0157) 		k=k>>1;
FILE: <library>
    0112 9556      LSR	R21
    0113 9547      ROR	R20
    0114 94A3      INC	R10
    0115 2D8A      MOV	R24,R10
    0116 308F      CPI	R24,0xF
    0117 F3A0      BCS	0x010C
    0118 CFDF      RJMP	0x00F8
    0119 9508      RET
pop_gset2:
    011A E0E2      LDI	R30,2
    011B C00C      RJMP	pop
push_gset5:
    011C 92FA      ST	R15,-Y
    011D 92EA      ST	R14,-Y
push_gset4:
    011E 92DA      ST	R13,-Y
    011F 92CA      ST	R12,-Y
push_gset3:
    0120 92BA      ST	R11,-Y
    0121 92AA      ST	R10,-Y
push_gset2:
    0122 937A      ST	R23,-Y
    0123 936A      ST	R22,-Y
push_gset1:
    0124 935A      ST	R21,-Y
    0125 934A      ST	R20,-Y
    0126 9508      RET
pop_gset1:
    0127 E0E1      LDI	R30,1
pop:
    0128 9149      LD	R20,Y+
    0129 9159      LD	R21,Y+
    012A FDE0      SBRC	R30,0
    012B 9508      RET
    012C 9169      LD	R22,Y+
    012D 9179      LD	R23,Y+
    012E FDE1      SBRC	R30,1
    012F 9508      RET
    0130 90A9      LD	R10,Y+
    0131 90B9      LD	R11,Y+
    0132 FDE2      SBRC	R30,2
    0133 9508      RET
    0134 90C9      LD	R12,Y+
    0135 90D9      LD	R13,Y+
    0136 FDE3      SBRC	R30,3
    0137 9508      RET
    0138 90E9      LD	R14,Y+
    0139 90F9      LD	R15,Y+
    013A 9508      RET
lsl8:
    013B 2311      TST	R17
    013C F019      BEQ	0x0140
    013D 0F00      LSL	R16
    013E 951A      DEC	R17
    013F CFFB      RJMP	lsl8
    0140 9508      RET

⌨️ 快捷键说明

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