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

📄 irremote.lst

📁 ICCAVR环境下
💻 LST
📖 第 1 页 / 共 2 页
字号:
    00E0 BB81      OUT	0x11,R24
(0090) 	init_USART();      
    00E1 DFEB      RCALL	_init_USART
(0091) 	MCUCSR &=~(1<<ISC2);         //falling edge interrupt
    00E2 B784      IN	R24,0x34
    00E3 7B8F      ANDI	R24,0xBF
    00E4 BF84      OUT	0x34,R24
(0092) 	GIFR=(1<<INTF2);             //写1清除标志位,在使能中断前最好先把对应的标志位清除,以免误触发
    00E5 E280      LDI	R24,0x20
    00E6 BF8A      OUT	0x3A,R24
(0093)     GICR=(1<<INT2);	         //使能INT2外部中断
    00E7 BF8B      OUT	0x3B,R24
(0094)     SEI();						//使能全局中断
    00E8 9478      BSET	7
(0095) 	flag=0;
    00E9 2422      CLR	R2
    00EA 92200061  STS	flag,R2
    00EC C009      RJMP	0x00F6
(0096) 	while(1)
(0097) 	{
(0098) 		if(flag==1)
    00ED 91800061  LDS	R24,flag
    00EF 3081      CPI	R24,1
    00F0 F421      BNE	0x00F5
(0099) 		{
(0100) 		  display(code);
    00F1 91000060  LDS	R16,code
    00F3 DF8A      RCALL	_display
(0101) 		}
    00F4 C001      RJMP	0x00F6
(0102) 		else
(0103) 		{
(0104) 		 displayerror();
    00F5 DFB5      RCALL	_displayerror
    00F6 CFF6      RJMP	0x00ED
    00F7 9508      RET
_int2pro:
  k                    --> R20
  aa                   --> Y+0
  i                    --> R10
  dm                   --> R22
  j                    --> R12
    00F8 940E01BC  CALL	push_lset
    00FA 940E019F  CALL	push_gset4
    00FC 9722      SBIW	R28,2
(0105) 	    }
(0106) 		
(0107) 	}
(0108) }
(0109) 
(0110) /**********************************************************************
(0111) function: ext2 interrupt service function 
(0112) **********************************************************************/
(0113) #pragma interrupt_handler int2pro: iv_INT2
(0114) void int2pro(void) //INT2中断服务程序
(0115) {
(0116)   unsigned char i,j,k,dm=0,aa[2];
    00FD 2766      CLR	R22
(0117)    for(k=0;k<10;k++)            //重复10次,目的是检测在9毫秒内如果出现高电平就退出解码程序
    00FE 2744      CLR	R20
    00FF C054      RJMP	0x0154
(0118)   {                              //aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
(0119)     
(0120)     delay0_9ms();                   //延时0.9毫秒
    0100 DFBD      RCALL	_delay0_9ms
(0121)     if ((PINB&(1<<IR))==(1<<IR))
    0101 B386      IN	R24,0x16
    0102 7084      ANDI	R24,4
    0103 3084      CPI	R24,4
    0104 F411      BNE	0x0107
(0122)            {k=10;break;}    //延时0.9毫秒后判断PB2脚是否出现高电平如果有就退出解码程序
    0105 E04A      LDI	R20,0xA
    0106 C050      RJMP	0x0157
(0123)     else if(k==9)                //重复10次?
    0107 3049      CPI	R20,0x9
    0108 F009      BEQ	0x010A
    0109 C049      RJMP	0x0153
(0124)     {                     //bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
(0125)             while((PINB&(1<<IR))==0);       //等待高电平避开9毫秒低电平引导脉冲
    010A 9BB2      SBIS	0x16,2
    010B CFFE      RJMP	0x010A
(0126)             delay4_5ms();           //延时4.5毫秒避开4.5毫秒的结果码
    010C DFB5      RCALL	_delay4_5ms
(0127) 
(0128) 			
(0129) /********************************************
(0130) //26位的用户码,前13位数据码,后13位数据反码
(0131) *********************************************/
(0132)               for(j=1;j<=26;j++)//每组数据为26位
    010D 24CC      CLR	R12
    010E 94C3      INC	R12
    010F C00B      RJMP	0x011B
(0133)                 {                 
(0134)                  while((PINB&(1<<IR))==0);  //
    0110 9BB2      SBIS	0x16,2
    0111 CFFE      RJMP	0x0110
(0135)                  delay0_9ms();
    0112 DFAB      RCALL	_delay0_9ms
(0136)                   if((PINB&(1<<IR))==(1<<IR))
    0113 B386      IN	R24,0x16
    0114 7084      ANDI	R24,4
    0115 3084      CPI	R24,4
    0116 F419      BNE	0x011A
(0137)                    {
(0138) 					   delay_nms(1);
    0117 E001      LDI	R16,1
    0118 E010      LDI	R17,0
    0119 DF55      RCALL	_delay_nms
    011A 94C3      INC	R12
    011B E18A      LDI	R24,0x1A
    011C 158C      CP	R24,R12
    011D F790      BCC	0x0110
(0139) 	               }
(0140)                 }
(0141) 
(0142) 
(0143) /***************************************************
(0144) //16位的用户码,前8位数据码,后8位数据反码
(0145) ****************************************************/
(0146) 
(0147) 			  for(i=0;i<2;i++)     
    011E 24AA      CLR	R10
    011F C023      RJMP	0x0143
(0148)                {                
(0149)                  for(j=1;j<=8;j++)//每组数据为8位
    0120 24CC      CLR	R12
    0121 94C3      INC	R12
    0122 C015      RJMP	0x0138
(0150)                 {                
(0151)                  while((PINB&(1<<IR))==0);  //
    0123 9BB2      SBIS	0x16,2
    0124 CFFE      RJMP	0x0123
(0152)                  delay0_9ms();
    0125 DF98      RCALL	_delay0_9ms
(0153)                   if((PINB&(1<<IR))==(1<<IR))
    0126 B386      IN	R24,0x16
    0127 7084      ANDI	R24,4
    0128 3084      CPI	R24,4
    0129 F449      BNE	0x0133
(0154)                    {
(0155) 				     delay_nms(1);
    012A E001      LDI	R16,1
    012B E010      LDI	R17,0
    012C DF42      RCALL	_delay_nms
(0156)                      dm=dm|0x80;
    012D 6860      ORI	R22,0x80
(0157)                      if(j<8) dm=dm>>1;           //数据"1",右移一个"1",一共7次
    012E 2D8C      MOV	R24,R12
    012F 3088      CPI	R24,0x8
    0130 F430      BCC	0x0137
    0131 9566      LSR	R22
(0158)                    }                
    0132 C004      RJMP	0x0137
(0159)                   else  if(j<8) dm=dm>>1;          //数据"0",一共7次
    0133 2D8C      MOV	R24,R12
    0134 3088      CPI	R24,0x8
    0135 F408      BCC	0x0137
    0136 9566      LSR	R22
    0137 94C3      INC	R12
    0138 E088      LDI	R24,0x8
    0139 158C      CP	R24,R12
    013A F740      BCC	0x0123
(0160)                 }                    
(0161)              aa[i]=dm;
    013B 01CE      MOVW	R24,R28
    013C 2DEA      MOV	R30,R10
    013D 27FF      CLR	R31
    013E 0FE8      ADD	R30,R24
    013F 1FF9      ADC	R31,R25
    0140 8360      STD	Z+0,R22
(0162)              dm=0;
    0141 2766      CLR	R22
    0142 94A3      INC	R10
    0143 2D8A      MOV	R24,R10
    0144 3082      CPI	R24,2
    0145 F2D0      BCS	0x0120
(0163)                } 
(0164) 			  if(aa[0]=~aa[1])
    0146 8029      LDD	R2,Y+1
    0147 9420      COM	R2
    0148 8228      STD	Y+0,R2
    0149 2022      TST	R2
    014A F041      BEQ	0x0153
(0165) 			  {  
(0166)                code=aa[0];
    014B 92200060  STS	code,R2
(0167) 			   flag=1; 
    014D E081      LDI	R24,1
    014E 93800061  STS	flag,R24
(0168) 			   put_c(code);    
FILE: <library>
    0150 91000060  LDS	R16,code
    0152 DF76      RCALL	_put_c
    0153 9543      INC	R20
    0154 304A      CPI	R20,0xA
    0155 F408      BCC	0x0157
    0156 CFA9      RJMP	0x0100
    0157 9622      ADIW	R28,2
    0158 940E019A  CALL	pop_gset4
    015A 940E01D3  CALL	pop_lset
    015C 9518      RETI
mod16s:
    015D 9468      BSET	6
    015E 92DA      ST	R13,-Y
    015F 2ED1      MOV	R13,R17
    0160 C004      RJMP	0x0165
div16s:
    0161 94E8      BCLR	6
    0162 92DA      ST	R13,-Y
    0163 2ED1      MOV	R13,R17
    0164 26D3      EOR	R13,R19
    0165 FF17      SBRS	R17,7
    0166 C004      RJMP	0x016B
    0167 9510      COM	R17
    0168 9500      COM	R16
    0169 5F0F      SUBI	R16,0xFF
    016A 4F1F      SBCI	R17,0xFF
    016B FF37      SBRS	R19,7
    016C C004      RJMP	0x0171
    016D 9530      COM	R19
    016E 9520      COM	R18
    016F 5F2F      SUBI	R18,0xFF
    0170 4F3F      SBCI	R19,0xFF
    0171 940E017E  CALL	xdiv16u
    0173 FED7      SBRS	R13,7
    0174 C004      RJMP	0x0179
    0175 9510      COM	R17
    0176 9500      COM	R16
    0177 5F0F      SUBI	R16,0xFF
    0178 4F1F      SBCI	R17,0xFF
    0179 90D9      LD	R13,Y+
    017A 9508      RET
mod16u:
    017B 9468      BSET	6
    017C C001      RJMP	xdiv16u
div16u:
    017D 94E8      BCLR	6
xdiv16u:
    017E 92EA      ST	R14,-Y
    017F 92FA      ST	R15,-Y
    0180 938A      ST	R24,-Y
    0181 24EE      CLR	R14
    0182 24FF      CLR	R15
    0183 E180      LDI	R24,0x10
    0184 0F00      LSL	R16
    0185 1F11      ROL	R17
    0186 1CEE      ROL	R14
    0187 1CFF      ROL	R15
    0188 16E2      CP	R14,R18
    0189 06F3      CPC	R15,R19
    018A F018      BCS	0x018E
    018B 1AE2      SUB	R14,R18
    018C 0AF3      SBC	R15,R19
    018D 9503      INC	R16
    018E 958A      DEC	R24
    018F F7A1      BNE	0x0184
    0190 F416      BRTC	0x0193
    0191 2D0E      MOV	R16,R14
    0192 2D1F      MOV	R17,R15
    0193 9189      LD	R24,Y+
    0194 90F9      LD	R15,Y+
    0195 90E9      LD	R14,Y+
    0196 9508      RET
pop_gset2:
    0197 E0E2      LDI	R30,2
    0198 940C01A9  JMP	pop
pop_gset4:
    019A E0E8      LDI	R30,0x8
    019B 940C01A9  JMP	pop
push_gset5:
    019D 92FA      ST	R15,-Y
    019E 92EA      ST	R14,-Y
push_gset4:
    019F 92DA      ST	R13,-Y
    01A0 92CA      ST	R12,-Y
push_gset3:
    01A1 92BA      ST	R11,-Y
    01A2 92AA      ST	R10,-Y
push_gset2:
    01A3 937A      ST	R23,-Y
    01A4 936A      ST	R22,-Y
push_gset1:
    01A5 935A      ST	R21,-Y
    01A6 934A      ST	R20,-Y
    01A7 9508      RET
pop_gset1:
    01A8 E0E1      LDI	R30,1
pop:
    01A9 9149      LD	R20,Y+
    01AA 9159      LD	R21,Y+
    01AB FDE0      SBRC	R30,0
    01AC 9508      RET
    01AD 9169      LD	R22,Y+
    01AE 9179      LD	R23,Y+
    01AF FDE1      SBRC	R30,1
    01B0 9508      RET
    01B1 90A9      LD	R10,Y+
    01B2 90B9      LD	R11,Y+
    01B3 FDE2      SBRC	R30,2
    01B4 9508      RET
    01B5 90C9      LD	R12,Y+
    01B6 90D9      LD	R13,Y+
    01B7 FDE3      SBRC	R30,3
    01B8 9508      RET
    01B9 90E9      LD	R14,Y+
    01BA 90F9      LD	R15,Y+
    01BB 9508      RET
push_lset:
    01BC 93FA      ST	R31,-Y
    01BD 93EA      ST	R30,-Y
    01BE 93BA      ST	R27,-Y
    01BF 93AA      ST	R26,-Y
    01C0 939A      ST	R25,-Y
    01C1 938A      ST	R24,-Y
    01C2 933A      ST	R19,-Y
    01C3 932A      ST	R18,-Y
    01C4 931A      ST	R17,-Y
    01C5 930A      ST	R16,-Y
    01C6 929A      ST	R9,-Y
    01C7 928A      ST	R8,-Y
    01C8 927A      ST	R7,-Y
    01C9 926A      ST	R6,-Y
    01CA 925A      ST	R5,-Y
    01CB 924A      ST	R4,-Y
    01CC 923A      ST	R3,-Y
    01CD 922A      ST	R2,-Y
    01CE 921A      ST	R1,-Y
    01CF 920A      ST	R0,-Y
    01D0 B60F      IN	R0,0x3F
    01D1 920A      ST	R0,-Y
    01D2 9508      RET
pop_lset:
    01D3 9009      LD	R0,Y+
    01D4 BE0F      OUT	0x3F,R0
    01D5 9009      LD	R0,Y+
    01D6 9019      LD	R1,Y+
    01D7 9029      LD	R2,Y+
    01D8 9039      LD	R3,Y+
    01D9 9049      LD	R4,Y+
    01DA 9059      LD	R5,Y+
    01DB 9069      LD	R6,Y+
    01DC 9079      LD	R7,Y+
    01DD 9089      LD	R8,Y+
    01DE 9099      LD	R9,Y+
    01DF 9109      LD	R16,Y+
    01E0 9119      LD	R17,Y+
    01E1 9129      LD	R18,Y+
    01E2 9139      LD	R19,Y+
    01E3 9189      LD	R24,Y+
    01E4 9199      LD	R25,Y+
    01E5 91A9      LD	R26,Y+
    01E6 91B9      LD	R27,Y+
    01E7 91E9      LD	R30,Y+
    01E8 91F9      LD	R31,Y+
    01E9 9508      RET

⌨️ 快捷键说明

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