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

📄 int0.lst

📁 单片机红外控制发射与接收,红外发射是一种常用的控制方式
💻 LST
字号:
__start:
__text_start:
    0033 E5CF      LDI	R28,0x5F
    0034 E0D4      LDI	R29,4
    0035 BFCD      OUT	0x3D,R28
    0036 BFDE      OUT	0x3E,R29
    0037 51C0      SUBI	R28,0x10
    0038 40D0      SBCI	R29,0
    0039 EA0A      LDI	R16,0xAA
    003A 8308      STD	Y+0,R16
    003B 2400      CLR	R0
    003C E7E2      LDI	R30,0x72
    003D E0F0      LDI	R31,0
    003E E010      LDI	R17,0
    003F 37E2      CPI	R30,0x72
    0040 07F1      CPC	R31,R17
    0041 F011      BEQ	0x0044
    0042 9201      ST	R0,Z+
    0043 CFFB      RJMP	0x003F
    0044 8300      STD	Z+0,R16
    0045 E5E4      LDI	R30,0x54
    0046 E0F0      LDI	R31,0
    0047 E6A0      LDI	R26,0x60
    0048 E0B0      LDI	R27,0
    0049 E010      LDI	R17,0
    004A 36E6      CPI	R30,0x66
    004B 07F1      CPC	R31,R17
    004C F021      BEQ	0x0051
    004D 95C8      LPM
    004E 9631      ADIW	R30,1
    004F 920D      ST	R0,X+
    0050 CFF9      RJMP	0x004A
    0051 940E00EC  CALL	_main
_exit:
    0053 CFFF      RJMP	_exit
FILE: C:\DOCUME~1\Administrator\桌面\新建文~2\INT0\delay.h
(0001) #include <iom16v.h>
(0002) 
(0003) 
(0004) void delay_1us(void)             
(0005)   {
(0006)    asm("nop");
_delay_1us:
    0054 0000      NOP
    0055 9508      RET
_delay_nus:
  i                    --> R20
  n                    --> R22
    0056 940E0104  CALL	push_gset2
    0058 01B8      MOVW	R22,R16
(0007)   }
(0008) 
(0009) void delay_nus(unsigned int n)  
(0010)   {
(0011)    unsigned int i=0;
    0059 2744      CLR	R20
    005A 2755      CLR	R21
(0012)    for (i=0;i<n;i++)
    005B C003      RJMP	0x005F
(0013)    delay_1us();
    005C DFF7      RCALL	_delay_1us
    005D 5F4F      SUBI	R20,0xFF
    005E 4F5F      SBCI	R21,0xFF
    005F 1746      CP	R20,R22
    0060 0757      CPC	R21,R23
    0061 F3D0      BCS	0x005C
    0062 940E00FB  CALL	pop_gset2
    0064 9508      RET
(0014)   }
(0015)   
(0016) void delay_1ms(void)         
(0017)   {
(0018)    unsigned int i;
(0019)    for (i=0;i<1140;i++);
_delay_1ms:
  i                    --> R16
    0065 2700      CLR	R16
    0066 2711      CLR	R17
    0067 C002      RJMP	0x006A
    0068 5F0F      SUBI	R16,0xFF
    0069 4F1F      SBCI	R17,0xFF
    006A 3704      CPI	R16,0x74
    006B E0E4      LDI	R30,4
    006C 071E      CPC	R17,R30
    006D F3D0      BCS	0x0068
    006E 9508      RET
_delay:
  i                    --> R20
  n                    --> R22
    006F 940E0104  CALL	push_gset2
    0071 01B8      MOVW	R22,R16
(0020)   }
(0021)   
(0022) void delay(unsigned int n)   
(0023)   {
(0024)    unsigned int i=0;
    0072 2744      CLR	R20
    0073 2755      CLR	R21
(0025)    for (i=0;i<n;i++)
    0074 C003      RJMP	0x0078
(0026)    delay_1ms();
    0075 DFEF      RCALL	_delay_1ms
    0076 5F4F      SUBI	R20,0xFF
    0077 4F5F      SBCI	R21,0xFF
    0078 1746      CP	R20,R22
    0079 0757      CPC	R21,R23
    007A F3D0      BCS	0x0075
    007B 940E00FB  CALL	pop_gset2
    007D 9508      RET
FILE: C:\DOCUME~1\Administrator\桌面\新建文~2\INT0\INT0.c
(0001) //ICC-AVR application builder : 2007-5-18 9:57:24
(0002) // Target : M16
(0003) // Crystal: 8.0000Mhz
(0004) 
(0005) #include <iom16v.h>
(0006) #include <macros.h>
(0007) #include"delay.h"
(0008) #define uchar	unsigned char
(0009) #define uint	unsigned int
(0010)  
(0011)  uchar temp=0;
(0012) unsigned char abc[17]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,
(0013)                         0xee,0x3e,0x9c,0x7a,0x9e,0x8e,0x00};
(0014) 
(0015) 
(0016) //----------------SPI初始化------------//
(0017) void SPI_init(void)
(0018) {
(0019)  DDRB&=0xbf;
_SPI_init:
    007E B387      IN	R24,0x17
    007F 7B8F      ANDI	R24,0xBF
    0080 BB87      OUT	0x17,R24
(0020)  SPCR=(1<<SPE)|(1<<DORD)|(1<<MSTR)|(1<<SPR1);
    0081 E782      LDI	R24,0x72
    0082 B98D      OUT	0x0D,R24
    0083 9508      RET
(0021) }
(0022) //-------------------SPI发送数据-----------//
(0023) void SPI_send(unsigned char i)
(0024) {
(0025)  SPDR=i;
_SPI_send:
  i                    --> R16
    0084 B90F      OUT	0x0F,R16
(0026)  while((SPSR&0x80)==0x00);
    0085 9B77      SBIS	0x0E,7
    0086 CFFE      RJMP	0x0085
    0087 9508      RET
(0027) }
(0028) 
(0029) 
(0030) void port_init(void)
(0031) {
(0032)  PORTA = 0x00;
_port_init:
    0088 2422      CLR	R2
    0089 BA2B      OUT	0x1B,R2
(0033)  DDRA  = 0xFF;
    008A EF8F      LDI	R24,0xFF
    008B BB8A      OUT	0x1A,R24
(0034)  PORTB = 0x00;
    008C BA28      OUT	0x18,R2
(0035)  DDRB  = 0xFF;
    008D BB87      OUT	0x17,R24
(0036)  PORTC = 0x00; //m103 output only
    008E BA25      OUT	0x15,R2
(0037)  DDRC  = 0x00;
    008F BA24      OUT	0x14,R2
(0038)  PORTD = 0x00;
    0090 BA22      OUT	0x12,R2
(0039)  DDRD  = 0x00;
    0091 BA21      OUT	0x11,R2
    0092 9508      RET
_int0_isr:
  i                    --> R20
    0093 940E011D  CALL	push_lset
    0095 940E0106  CALL	push_gset1
(0040) }
(0041) 
(0042) #pragma interrupt_handler int0_isr:2
(0043) void int0_isr(void)
(0044) {
(0045)    uchar i;
(0046)    
(0047)    CLI();
    0097 94F8      BCLR	7
(0048)    {
(0049)        for(i=0;i<5;i++)
    0098 2744      CLR	R20
    0099 C009      RJMP	0x00A3
(0050) 	       {
(0051) 		      delay_nus(1000);
    009A EE08      LDI	R16,0xE8
    009B E013      LDI	R17,3
    009C DFB9      RCALL	_delay_nus
(0052) 		      if((PIND&0X04)==0X04)
    009D B380      IN	R24,0x10
    009E 7084      ANDI	R24,4
    009F 3084      CPI	R24,4
    00A0 F409      BNE	0x00A2
(0053) 			        {
(0054) 			          return;
    00A1 C045      RJMP	0x00E7
    00A2 9543      INC	R20
    00A3 3045      CPI	R20,5
    00A4 F3A8      BCS	0x009A
(0055) 			        }
(0056) 		   }
(0057) 		while((PIND&0X04)!=0X04);//等待高电平
    00A5 B380      IN	R24,0x10
    00A6 7084      ANDI	R24,4
    00A7 3084      CPI	R24,4
    00A8 F7E1      BNE	0x00A5
(0058) 		delay_nus(2900);//延时4.8ms
    00A9 E504      LDI	R16,0x54
    00AA E01B      LDI	R17,0xB
    00AB DFAA      RCALL	_delay_nus
(0059) 		for(i=0;i<8;i++)
    00AC 2744      CLR	R20
    00AD C021      RJMP	0x00CF
(0060) 		    { 
(0061) 		      while((PIND&0X04)!=0X04);//等待高电平
    00AE B380      IN	R24,0x10
    00AF 7084      ANDI	R24,4
    00B0 3084      CPI	R24,4
    00B1 F7E1      BNE	0x00AE
(0062) 		      delay_nus(480);//延时480us
    00B2 EE00      LDI	R16,0xE0
    00B3 E011      LDI	R17,1
    00B4 DFA1      RCALL	_delay_nus
(0063) 		      if(PIND&0X04)
    00B5 9B82      SBIS	0x10,2
    00B6 C00E      RJMP	0x00C5
(0064) 		                {
(0065) 						  temp=temp>>1;
    00B7 90200060  LDS	R2,temp
    00B9 9426      LSR	R2
    00BA 92200060  STS	temp,R2
(0066) 			              delay_nus(200);//
    00BC EC08      LDI	R16,0xC8
    00BD E010      LDI	R17,0
    00BE DF97      RCALL	_delay_nus
(0067) 						  temp|=0x80;		//数据写入1	 
    00BF 91800060  LDS	R24,temp
    00C1 6880      ORI	R24,0x80
    00C2 93800060  STS	temp,R24
(0068) 			             }
    00C4 C009      RJMP	0x00CE
(0069) 	            else
(0070) 		                 {
(0071) 						   temp=temp>>1;
    00C5 90200060  LDS	R2,temp
    00C7 9426      LSR	R2
    00C8 92200060  STS	temp,R2
(0072) 			               temp&=0x7f;   //数据写入0
    00CA 2D82      MOV	R24,R2
    00CB 778F      ANDI	R24,0x7F
    00CC 93800060  STS	temp,R24
    00CE 9543      INC	R20
    00CF 3048      CPI	R20,0x8
    00D0 F2E8      BCS	0x00AE
(0073) 			             }
(0074) 		    }
(0075) 		
(0076)    }
(0077)      while((PIND&0X04)!=0X04);//等待高电平
    00D1 B380      IN	R24,0x10
    00D2 7084      ANDI	R24,4
    00D3 3084      CPI	R24,4
    00D4 F7E1      BNE	0x00D1
(0078)     delay_nus(480);//延时480us
    00D5 EE00      LDI	R16,0xE0
    00D6 E011      LDI	R17,1
    00D7 DF7E      RCALL	_delay_nus
(0079)   
(0080)    if(!(PIND&0X04))
    00D8 9982      SBIC	0x10,2
    00D9 C001      RJMP	0x00DB
(0081) 		             
(0082) 		 {
(0083) 		  return;
    00DA C00C      RJMP	0x00E7
(0084) 	     }
(0085) 	/*if(temp==0x06)
(0086) 	{
(0087) 	  PORTA=temp;
(0088) 	  SPI_send(abc[temp]);
(0089) 	 
(0090) 	  
(0091) 	}*/
(0092) 	else
(0093) 	{				  
(0094) 	 PORTA=temp; 
    00DB 90200060  LDS	R2,temp
    00DD BA2B      OUT	0x1B,R2
(0095) 	 SPI_send(abc[temp]);
    00DE E681      LDI	R24,0x61
    00DF E090      LDI	R25,0
    00E0 2DE2      MOV	R30,R2
    00E1 27FF      CLR	R31
    00E2 0FE8      ADD	R30,R24
    00E3 1FF9      ADC	R31,R25
    00E4 8100      LDD	R16,Z+0
    00E5 DF9E      RCALL	_SPI_send
(0096) 	 
(0097) 	}
(0098)     SEI();
    00E6 9478      BSET	7
    00E7 940E0109  CALL	pop_gset1
    00E9 940E0134  CALL	pop_lset
    00EB 9518      RETI
(0099) }
(0100) 
(0101) //call this routine to initialize all peripherals
(0102) void main(void)
(0103) {
(0104)  //stop errant interrupts until set up
(0105)  CLI(); //disable all interrupts
_main:
    00EC 94F8      BCLR	7
(0106)  port_init();
    00ED DF9A      RCALL	_port_init
(0107)  SPI_init();
    00EE DF8F      RCALL	_SPI_init
(0108)  MCUCR = 0x02;
    00EF E082      LDI	R24,2
    00F0 BF85      OUT	0x35,R24
(0109)  GICR  = 0x40;
    00F1 E480      LDI	R24,0x40
    00F2 BF8B      OUT	0x3B,R24
(0110)  TIMSK = 0x00; //timer interrupt sources
    00F3 2422      CLR	R2
    00F4 BE29      OUT	0x39,R2
(0111)  SPI_send(abc[16]);
    00F5 91000071  LDS	R16,0x71
    00F7 DF8C      RCALL	_SPI_send
(0112)  SEI(); //re-enable interrupts
    00F8 9478      BSET	7
(0113)  //all peripherals are now initialized
(0114)  while(1)
FILE: <library>
    00F9 CFFF      RJMP	0x00F9
    00FA 9508      RET
pop_gset2:
    00FB E0E2      LDI	R30,2
    00FC 940C010A  JMP	pop
push_gset5:
    00FE 92FA      ST	R15,-Y
    00FF 92EA      ST	R14,-Y
push_gset4:
    0100 92DA      ST	R13,-Y
    0101 92CA      ST	R12,-Y
push_gset3:
    0102 92BA      ST	R11,-Y
    0103 92AA      ST	R10,-Y
push_gset2:
    0104 937A      ST	R23,-Y
    0105 936A      ST	R22,-Y
push_gset1:
    0106 935A      ST	R21,-Y
    0107 934A      ST	R20,-Y
    0108 9508      RET
pop_gset1:
    0109 E0E1      LDI	R30,1
pop:
    010A 9149      LD	R20,Y+
    010B 9159      LD	R21,Y+
    010C FDE0      SBRC	R30,0
    010D 9508      RET
    010E 9169      LD	R22,Y+
    010F 9179      LD	R23,Y+
    0110 FDE1      SBRC	R30,1
    0111 9508      RET
    0112 90A9      LD	R10,Y+
    0113 90B9      LD	R11,Y+
    0114 FDE2      SBRC	R30,2
    0115 9508      RET
    0116 90C9      LD	R12,Y+
    0117 90D9      LD	R13,Y+
    0118 FDE3      SBRC	R30,3
    0119 9508      RET
    011A 90E9      LD	R14,Y+
    011B 90F9      LD	R15,Y+
    011C 9508      RET
push_lset:
    011D 93FA      ST	R31,-Y
    011E 93EA      ST	R30,-Y
    011F 93BA      ST	R27,-Y
    0120 93AA      ST	R26,-Y
    0121 939A      ST	R25,-Y
    0122 938A      ST	R24,-Y
    0123 933A      ST	R19,-Y
    0124 932A      ST	R18,-Y
    0125 931A      ST	R17,-Y
    0126 930A      ST	R16,-Y
    0127 929A      ST	R9,-Y
    0128 928A      ST	R8,-Y
    0129 927A      ST	R7,-Y
    012A 926A      ST	R6,-Y
    012B 925A      ST	R5,-Y
    012C 924A      ST	R4,-Y
    012D 923A      ST	R3,-Y
    012E 922A      ST	R2,-Y
    012F 921A      ST	R1,-Y
    0130 920A      ST	R0,-Y
    0131 B60F      IN	R0,0x3F
    0132 920A      ST	R0,-Y
    0133 9508      RET
pop_lset:
    0134 9009      LD	R0,Y+
    0135 BE0F      OUT	0x3F,R0
    0136 9009      LD	R0,Y+
    0137 9019      LD	R1,Y+
    0138 9029      LD	R2,Y+
    0139 9039      LD	R3,Y+
    013A 9049      LD	R4,Y+
    013B 9059      LD	R5,Y+
    013C 9069      LD	R6,Y+
    013D 9079      LD	R7,Y+
    013E 9089      LD	R8,Y+
    013F 9099      LD	R9,Y+
    0140 9109      LD	R16,Y+
    0141 9119      LD	R17,Y+
    0142 9129      LD	R18,Y+
    0143 9139      LD	R19,Y+
    0144 9189      LD	R24,Y+
    0145 9199      LD	R25,Y+
    0146 91A9      LD	R26,Y+
    0147 91B9      LD	R27,Y+
    0148 91E9      LD	R30,Y+
    0149 91F9      LD	R31,Y+
    014A 9508      RET

⌨️ 快捷键说明

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