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

📄 infrared_test.lst

📁 AVR 红外接收源代码,对学习红外的人很有帮助
💻 LST
📖 第 1 页 / 共 3 页
字号:
(0105)  
(0106) }
(0107) 
(0108) /*定时器T0 中断函数 */	
(0109) 
(0110) void t0_isr(void)
(0111) {
(0112)   unsigned char i;
(0113) 
(0114)  TCNT0=0;
    021B 2422      CLR	R2
    021C BE22      OUT	0x32,R2
(0115)  t0_counter++;
    021D 9180007D  LDS	R24,t0_counter
    021F 5F8F      SUBI	R24,0xFF
    0220 9380007D  STS	t0_counter,R24
(0116)  if(t0_counter>3)
    0222 E083      LDI	R24,3
    0223 9020007D  LDS	R2,t0_counter
    0225 1582      CP	R24,R2
    0226 F008      BCS	0x0228
    0227 C0C9      RJMP	0x02F1
(0117)  {
(0118)   
(0119)   GICR  = 0x00;          //关掉外部中断1
    0228 2422      CLR	R2
    0229 BE2B      OUT	0x3B,R2
(0120)   TCCR0=0;               //关掉T0
    022A BE23      OUT	0x33,R2
(0121)   TCNT0=0;
    022B BE22      OUT	0x32,R2
(0122)   TCCR1B=0;               //关闭定时器 T1
    022C BC2E      OUT	0x2E,R2
(0123)   TCNT1=0;                //定时器T1 清0
    022D 2433      CLR	R3
    022E BC3D      OUT	0x2D,R3
    022F BC2C      OUT	0x2C,R2
(0124)   
(0125)   t0_counter=0;
    0230 9220007D  STS	t0_counter,R2
(0126)   
(0127)  if((counter_buffer[1]>4000)&&(counter_buffer[1]<5000)&&
    0232 EA80      LDI	R24,0xA0
    0233 E09F      LDI	R25,0xF
    0234 90200082  LDS	R2,counter_buffer+2
    0236 90300083  LDS	R3,counter_buffer+3
    0238 1582      CP	R24,R2
    0239 0593      CPC	R25,R3
    023A F008      BCS	0x023C
    023B C098      RJMP	0x02D4
    023C 01C1      MOVW	R24,R2
    023D 3888      CPI	R24,0x88
    023E E1E3      LDI	R30,0x13
    023F 079E      CPC	R25,R30
    0240 F008      BCS	0x0242
    0241 C092      RJMP	0x02D4
    0242 E980      LDI	R24,0x90
    0243 E091      LDI	R25,1
    0244 90200104  LDS	R2,0x104
    0246 90300105  LDS	R3,0x105
    0248 1582      CP	R24,R2
    0249 0593      CPC	R25,R3
    024A F008      BCS	0x024C
    024B C088      RJMP	0x02D4
    024C 01C1      MOVW	R24,R2
    024D 3B8C      CPI	R24,0xBC
    024E E0E2      LDI	R30,2
    024F 079E      CPC	R25,R30
    0250 F008      BCS	0x0252
    0251 C082      RJMP	0x02D4
(0128)     (counter_buffer[66]>400)&&(counter_buffer[66]<700))
(0129)     {
(0130) 	//如果是有效数据
(0131) 	   rece_flag=1;
    0252 E081      LDI	R24,1
    0253 93800116  STS	rece_flag,R24
(0132) 	 for(i=3;i<66;i+=2)
    0255 E003      LDI	R16,3
    0256 C05E      RJMP	0x02B5
(0133) 	{
(0134) 	    if(counter_buffer[i]>800)
    0257 E082      LDI	R24,2
    0258 9F80      MUL	R24,R16
    0259 01F0      MOVW	R30,R0
    025A E880      LDI	R24,0x80
    025B E090      LDI	R25,0
    025C 0FE8      ADD	R30,R24
    025D 1FF9      ADC	R31,R25
    025E 8020      LDD	R2,Z+0
    025F 8031      LDD	R3,Z+1
    0260 E280      LDI	R24,0x20
    0261 E093      LDI	R25,3
    0262 1582      CP	R24,R2
    0263 0593      CPC	R25,R3
    0264 F580      BCC	0x0295
(0135) 	     {
(0136) 	       if(i<18)
    0265 3102      CPI	R16,0x12
    0266 F450      BCC	0x0271
(0137) 		   {
(0138) 		     infra_data[0]>>=1;
    0267 90200117  LDS	R2,infra_data
    0269 9426      LSR	R2
    026A 92200117  STS	infra_data,R2
(0139) 		     infra_data[0]|=0x80;
    026C 2D82      MOV	R24,R2
    026D 6880      ORI	R24,0x80
    026E 93800117  STS	infra_data,R24
(0140) 	       }
    0270 C043      RJMP	0x02B4
(0141) 		   else if(i<34)
    0271 3202      CPI	R16,0x22
    0272 F450      BCC	0x027D
(0142) 		   {
(0143) 		     infra_data[1]>>=1;
    0273 90200118  LDS	R2,infra_data+1
    0275 9426      LSR	R2
    0276 92200118  STS	infra_data+1,R2
(0144) 		     infra_data[1]|=0x80;
    0278 2D82      MOV	R24,R2
    0279 6880      ORI	R24,0x80
    027A 93800118  STS	infra_data+1,R24
(0145) 	       }
    027C C037      RJMP	0x02B4
(0146) 		   else if(i<50)
    027D 3302      CPI	R16,0x32
    027E F450      BCC	0x0289
(0147) 		   {
(0148) 		     infra_data[2]>>=1;
    027F 90200119  LDS	R2,infra_data+2
    0281 9426      LSR	R2
    0282 92200119  STS	infra_data+2,R2
(0149) 		     infra_data[2]|=0x80;
    0284 2D82      MOV	R24,R2
    0285 6880      ORI	R24,0x80
    0286 93800119  STS	infra_data+2,R24
(0150) 	       }
    0288 C02B      RJMP	0x02B4
(0151) 		   else if(i<66)
    0289 3402      CPI	R16,0x42
    028A F548      BCC	0x02B4
(0152) 		   {
(0153) 		     infra_data[3]>>=1;
    028B 9020011A  LDS	R2,infra_data+3
    028D 9426      LSR	R2
    028E 9220011A  STS	infra_data+3,R2
(0154) 		     infra_data[3]|=0x80;
    0290 2D82      MOV	R24,R2
    0291 6880      ORI	R24,0x80
    0292 9380011A  STS	infra_data+3,R24
(0155) 	       }
(0156) 	     }	
    0294 C01F      RJMP	0x02B4
(0157) 		else
(0158) 		 {
(0159) 	     	if(i<18)
    0295 3102      CPI	R16,0x12
    0296 F430      BCC	0x029D
(0160) 			{
(0161) 			 infra_data[0]>>=1;
    0297 90200117  LDS	R2,infra_data
    0299 9426      LSR	R2
    029A 92200117  STS	infra_data,R2
(0162) 			}
    029C C017      RJMP	0x02B4
(0163) 			else if(i<34)
    029D 3202      CPI	R16,0x22
    029E F430      BCC	0x02A5
(0164) 			{
(0165) 			 infra_data[1]>>=1;
    029F 90200118  LDS	R2,infra_data+1
    02A1 9426      LSR	R2
    02A2 92200118  STS	infra_data+1,R2
(0166) 			}
    02A4 C00F      RJMP	0x02B4
(0167) 		    else if(i<50)
    02A5 3302      CPI	R16,0x32
    02A6 F430      BCC	0x02AD
(0168) 			{
(0169) 		     infra_data[2]>>=1;
    02A7 90200119  LDS	R2,infra_data+2
    02A9 9426      LSR	R2
    02AA 92200119  STS	infra_data+2,R2
(0170) 			}
    02AC C007      RJMP	0x02B4
(0171) 		    else if(i<66)
    02AD 3402      CPI	R16,0x42
    02AE F428      BCC	0x02B4
(0172) 		    {
(0173) 		     infra_data[3]>>=1;
    02AF 9020011A  LDS	R2,infra_data+3
    02B1 9426      LSR	R2
    02B2 9220011A  STS	infra_data+3,R2
    02B4 5F0E      SUBI	R16,0xFE
    02B5 3402      CPI	R16,0x42
    02B6 F408      BCC	0x02B8
    02B7 CF9F      RJMP	0x0257
(0174) 		    }
(0175) 	      }	
(0176) 	  }
(0177) 	  for(i=0;i<buffer_max;i++)
    02B8 2700      CLR	R16
    02B9 C00C      RJMP	0x02C6
(0178) 	  counter_buffer[i]=0;
    02BA E082      LDI	R24,2
    02BB 9F80      MUL	R24,R16
    02BC 01F0      MOVW	R30,R0
    02BD E880      LDI	R24,0x80
    02BE E090      LDI	R25,0
    02BF 0FE8      ADD	R30,R24
    02C0 1FF9      ADC	R31,R25
    02C1 2422      CLR	R2
    02C2 2433      CLR	R3
    02C3 8231      STD	Z+1,R3
    02C4 8220      STD	Z+0,R2
    02C5 9503      INC	R16
    02C6 340B      CPI	R16,0x4B
    02C7 F390      BCS	0x02BA
(0179) 	  rece_data_count=0;
    02C8 2422      CLR	R2
    02C9 9220007E  STS	rece_data_count,R2
(0180) 	  flag_start=0;
    02CB 9220007F  STS	flag_start,R2
(0181) 	  TCCR1B=0;
    02CD BC2E      OUT	0x2E,R2
(0182)   	  TCNT1=0;
    02CE 2433      CLR	R3
    02CF BC3D      OUT	0x2D,R3
    02D0 BC2C      OUT	0x2C,R2
(0183) 	  flag_t0=0;
    02D1 9220007C  STS	flag_t0,R2
(0184) 	  return;
    02D3 C01D      RJMP	0x02F1
(0185) 	 
(0186)     }
(0187) 	
(0188) 	//如果不是有效数据
(0189) 	 
(0190) 	  for(i=0;i<buffer_max;i++)
    02D4 2700      CLR	R16
    02D5 C00C      RJMP	0x02E2
(0191) 	  counter_buffer[i]=0;
    02D6 E082      LDI	R24,2
    02D7 9F80      MUL	R24,R16
    02D8 01F0      MOVW	R30,R0
    02D9 E880      LDI	R24,0x80
    02DA E090      LDI	R25,0
    02DB 0FE8      ADD	R30,R24
    02DC 1FF9      ADC	R31,R25
    02DD 2422      CLR	R2
    02DE 2433      CLR	R3
    02DF 8231      STD	Z+1,R3
    02E0 8220      STD	Z+0,R2
    02E1 9503      INC	R16
    02E2 340B      CPI	R16,0x4B
    02E3 F390      BCS	0x02D6
(0192) 	  rece_data_count=0;
    02E4 2422      CLR	R2
    02E5 9220007E  STS	rece_data_count,R2
(0193) 	  flag_start=0;
    02E7 9220007F  STS	flag_start,R2
(0194) 	  TCCR1B=0;
    02E9 BC2E      OUT	0x2E,R2
(0195)   	  TCNT1=0;
    02EA 2433      CLR	R3
    02EB BC3D      OUT	0x2D,R3
    02EC BC2C      OUT	0x2C,R2
(0196) 	  flag_t0=0;
    02ED 9220007C  STS	flag_t0,R2
(0197) 	  GICR  = 0x80;//打开外部中断1
    02EF E880      LDI	R24,0x80
    02F0 BF8B      OUT	0x3B,R24
(0198) 	  
(0199)    }
FILE: <library>
    02F1 9009      LD	R0,Y+
    02F2 BE0F      OUT	0x3F,R0
    02F3 91F9      LD	R31,Y+
    02F4 91E9      LD	R30,Y+
    02F5 9199      LD	R25,Y+
    02F6 9189      LD	R24,Y+
    02F7 9119      LD	R17,Y+
    02F8 9109      LD	R16,Y+
    02F9 9039      LD	R3,Y+
    02FA 9029      LD	R2,Y+
    02FB 9019      LD	R1,Y+
    02FC 9009      LD	R0,Y+
    02FD 9518      RETI
mod16u:
    02FE 9468      BSET	6
    02FF C001      RJMP	xdiv16u
div16u:
    0300 94E8      BCLR	6
xdiv16u:
    0301 92EA      ST	R14,-Y
    0302 92FA      ST	R15,-Y
    0303 938A      ST	R24,-Y
    0304 24EE      CLR	R14
    0305 24FF      CLR	R15
    0306 E180      LDI	R24,0x10
    0307 0F00      LSL	R16
    0308 1F11      ROL	R17
    0309 1CEE      ROL	R14
    030A 1CFF      ROL	R15
    030B 16E2      CP	R14,R18
    030C 06F3      CPC	R15,R19
    030D F018      BCS	0x0311
    030E 1AE2      SUB	R14,R18
    030F 0AF3      SBC	R15,R19
    0310 9503      INC	R16
    0311 958A      DEC	R24
    0312 F7A1      BNE	0x0307
    0313 F416      BRTC	0x0316
    0314 2D0E      MOV	R16,R14
    0315 2D1F      MOV	R17,R15
    0316 9189      LD	R24,Y+
    0317 90F9      LD	R15,Y+
    0318 90E9      LD	R14,Y+
    0319 9508      RET
empy16s:
    031A 920A      ST	R0,-Y
    031B 921A      ST	R1,-Y
    031C 938A      ST	R24,-Y
    031D 939A      ST	R25,-Y
    031E 9F02      MUL	R16,R18
    031F 01C0      MOVW	R24,R0
    0320 9F12      MUL	R17,R18
    0321 0D90      ADD	R25,R0
    0322 9F03      MUL	R16,R19
    0323 0D90      ADD	R25,R0
    0324 018C      MOVW	R16,R24
    0325 9199      LD	R25,Y+
    0326 9189      LD	R24,Y+
    0327 9019      LD	R1,Y+
    0328 9009      LD	R0,Y+
    0329 9508      RET
pop_gset2:
    032A E0E2      LDI	R30,2
    032B C00E      RJMP	pop
pop_gset3:
    032C E0E4      LDI	R30,4
    032D C00C      RJMP	pop
push_gset5:
    032E 92FA      ST	R15,-Y
    032F 92EA      ST	R14,-Y
push_gset4:
    0330 92DA      ST	R13,-Y
    0331 92CA      ST	R12,-Y
push_gset3:
    0332 92BA      ST	R11,-Y
    0333 92AA      ST	R10,-Y
push_gset2:
    0334 937A      ST	R23,-Y
    0335 936A      ST	R22,-Y
push_gset1:
    0336 935A      ST	R21,-Y
    0337 934A      ST	R20,-Y
    0338 9508      RET
pop_gset1:
    0339 E0E1      LDI	R30,1
pop:
    033A 9149      LD	R20,Y+
    033B 9159      LD	R21,Y+
    033C FDE0      SBRC	R30,0
    033D 9508      RET
    033E 9169      LD	R22,Y+
    033F 9179      LD	R23,Y+
    0340 FDE1      SBRC	R30,1
    0341 9508      RET
    0342 90A9      LD	R10,Y+
    0343 90B9      LD	R11,Y+
    0344 FDE2      SBRC	R30,2
    0345 9508      RET
    0346 90C9      LD	R12,Y+
    0347 90D9      LD	R13,Y+
    0348 FDE3      SBRC	R30,3
    0349 9508      RET
    034A 90E9      LD	R14,Y+
    034B 90F9      LD	R15,Y+
    034C 9508      RET

⌨️ 快捷键说明

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