yaokong.lst

来自「实现无线控制功能」· LST 代码 · 共 1,265 行 · 第 1/3 页

LST
1,265
字号
    02E0 2766      CLR	R22
(0222) 				}	
(0223) 			  return;	 
    02E1 C0FC      RJMP	0x03DE
(0224) 		}		  
(0225) 	 flag=decode(); 
    02E2 DE45      RCALL	_decode
    02E3 2F60      MOV	R22,R16
(0226) 	 if(flag==1)
    02E4 3001      CPI	R16,1
    02E5 F009      BEQ	0x02E7
    02E6 C0E7      RJMP	0x03CE
(0227) 	    {
(0228) 		     for(i=0;i<2;++i)
    02E7 2744      CLR	R20
    02E8 C00E      RJMP	0x02F7
(0229)     		           {
(0230)    				         if(eeprom_read(i)!=code[i])  {flag=0xff;break;}
    02E9 2F04      MOV	R16,R20
    02EA DE28      RCALL	_eeprom_read
    02EB EA86      LDI	R24,0xA6
    02EC E090      LDI	R25,0
    02ED 2FE4      MOV	R30,R20
    02EE 27FF      CLR	R31
    02EF 0FE8      ADD	R30,R24
    02F0 1FF9      ADC	R31,R25
    02F1 8020      LDD	R2,Z+0
    02F2 1502      CP	R16,R2
    02F3 F011      BEQ	0x02F6
    02F4 EF6F      LDI	R22,0xFF
    02F5 C003      RJMP	0x02F9
    02F6 9543      INC	R20
    02F7 3042      CPI	R20,2
    02F8 F380      BCS	0x02E9
(0231)    			            } 
(0232) 	        if(flag==1)	
    02F9 3061      CPI	R22,1
    02FA F009      BEQ	0x02FC
    02FB C0E2      RJMP	0x03DE
(0233) 	          {       
(0234) 	             flag==0;
(0235) 	             if(code[2]==0xc0)
    02FC 918000A8  LDS	R24,code+2
    02FE 3C80      CPI	R24,0xC0
    02FF F471      BNE	0x030E
(0236) 				       {
(0237) 					     for(i=0;i<14;i++)
    0300 2744      CLR	R20
    0301 C009      RJMP	0x030B
(0238)                          {  
(0239)                           uart_transmit_byte(forward[i]);
    0302 E684      LDI	R24,0x64
    0303 E090      LDI	R25,0
    0304 2FE4      MOV	R30,R20
    0305 27FF      CLR	R31
    0306 0FE8      ADD	R30,R24
    0307 1FF9      ADC	R31,R25
    0308 8100      LDD	R16,Z+0
    0309 DD93      RCALL	_uart_transmit_byte
    030A 9543      INC	R20
    030B 304E      CPI	R20,0xE
    030C F3A8      BCS	0x0302
(0240)                          }
(0241) 					   }
    030D C0BE      RJMP	0x03CC
(0242) 			     else if(code[2]==0x30)
    030E 918000A8  LDS	R24,code+2
    0310 3380      CPI	R24,0x30
    0311 F471      BNE	0x0320
(0243) 				       {
(0244) 					     for(i=0;i<14;i++)
    0312 2744      CLR	R20
    0313 C009      RJMP	0x031D
(0245)                          {  
(0246)                         uart_transmit_byte(back[i]);
    0314 E782      LDI	R24,0x72
    0315 E090      LDI	R25,0
    0316 2FE4      MOV	R30,R20
    0317 27FF      CLR	R31
    0318 0FE8      ADD	R30,R24
    0319 1FF9      ADC	R31,R25
    031A 8100      LDD	R16,Z+0
    031B DD81      RCALL	_uart_transmit_byte
    031C 9543      INC	R20
    031D 304E      CPI	R20,0xE
    031E F3A8      BCS	0x0314
(0247)                          }
(0248) 					   }		   
    031F C0AC      RJMP	0x03CC
(0249) 	             else if(code[2]==0xf0)   //上
    0320 918000A8  LDS	R24,code+2
    0322 3F80      CPI	R24,0xF0
    0323 F4D9      BNE	0x033F
(0250) 			           {
(0251) 			          for(i=0;i<7;i++)
    0324 2744      CLR	R20
    0325 C016      RJMP	0x033C
(0252)                          {  
(0253)                        uart_transmit_byte(UP[i]);
    0326 E880      LDI	R24,0x80
    0327 E090      LDI	R25,0
    0328 2FE4      MOV	R30,R20
    0329 27FF      CLR	R31
    032A 0FE8      ADD	R30,R24
    032B 1FF9      ADC	R31,R25
    032C 8100      LDD	R16,Z+0
    032D DD6F      RCALL	_uart_transmit_byte
(0254) 					       code_buf[i]=UP[i];
    032E E880      LDI	R24,0x80
    032F E090      LDI	R25,0
    0330 2FE4      MOV	R30,R20
    0331 27FF      CLR	R31
    0332 0FE8      ADD	R30,R24
    0333 1FF9      ADC	R31,R25
    0334 8020      LDD	R2,Z+0
    0335 01CE      MOVW	R24,R28
    0336 2FE4      MOV	R30,R20
    0337 27FF      CLR	R31
    0338 0FE8      ADD	R30,R24
    0339 1FF9      ADC	R31,R25
    033A 8220      STD	Z+0,R2
    033B 9543      INC	R20
    033C 3047      CPI	R20,7
    033D F340      BCS	0x0326
(0255)                          }
(0256) 	                  }
    033E C08D      RJMP	0x03CC
(0257) 			      else if(code[2]==0x0c)//下
    033F 918000A8  LDS	R24,code+2
    0341 308C      CPI	R24,0xC
    0342 F4D9      BNE	0x035E
(0258) 			          {
(0259) 			            for(i=0;i<7;i++)
    0343 2744      CLR	R20
    0344 C016      RJMP	0x035B
(0260)                             {  
(0261)                               uart_transmit_byte(DOWN[i]);
    0345 E887      LDI	R24,0x87
    0346 E090      LDI	R25,0
    0347 2FE4      MOV	R30,R20
    0348 27FF      CLR	R31
    0349 0FE8      ADD	R30,R24
    034A 1FF9      ADC	R31,R25
    034B 8100      LDD	R16,Z+0
    034C DD50      RCALL	_uart_transmit_byte
(0262) 							  code_buf[i]=DOWN[i];
    034D E887      LDI	R24,0x87
    034E E090      LDI	R25,0
    034F 2FE4      MOV	R30,R20
    0350 27FF      CLR	R31
    0351 0FE8      ADD	R30,R24
    0352 1FF9      ADC	R31,R25
    0353 8020      LDD	R2,Z+0
    0354 01CE      MOVW	R24,R28
    0355 2FE4      MOV	R30,R20
    0356 27FF      CLR	R31
    0357 0FE8      ADD	R30,R24
    0358 1FF9      ADC	R31,R25
    0359 8220      STD	Z+0,R2
    035A 9543      INC	R20
    035B 3047      CPI	R20,7
    035C F340      BCS	0x0345
(0263)                             }
(0264) 			           }
    035D C06E      RJMP	0x03CC
(0265) 			
(0266)     		      else if(code[2]==0xcc)//左
    035E 918000A8  LDS	R24,code+2
    0360 3C8C      CPI	R24,0xCC
    0361 F4D9      BNE	0x037D
(0267)     		          {
(0268) 			           for(i=0;i<7;i++)
    0362 2744      CLR	R20
    0363 C016      RJMP	0x037A
(0269)                           {  
(0270)                             uart_transmit_byte(left[i]);
    0364 E88E      LDI	R24,0x8E
    0365 E090      LDI	R25,0
    0366 2FE4      MOV	R30,R20
    0367 27FF      CLR	R31
    0368 0FE8      ADD	R30,R24
    0369 1FF9      ADC	R31,R25
    036A 8100      LDD	R16,Z+0
    036B DD31      RCALL	_uart_transmit_byte
(0271) 							code_buf[i]=left[i];
    036C E88E      LDI	R24,0x8E
    036D E090      LDI	R25,0
    036E 2FE4      MOV	R30,R20
    036F 27FF      CLR	R31
    0370 0FE8      ADD	R30,R24
    0371 1FF9      ADC	R31,R25
    0372 8020      LDD	R2,Z+0
    0373 01CE      MOVW	R24,R28
    0374 2FE4      MOV	R30,R20
    0375 27FF      CLR	R31
    0376 0FE8      ADD	R30,R24
    0377 1FF9      ADC	R31,R25
    0378 8220      STD	Z+0,R2
    0379 9543      INC	R20
    037A 3047      CPI	R20,7
    037B F340      BCS	0x0364
(0272)                           } 
(0273)     		         }
    037C C04F      RJMP	0x03CC
(0274)     		     else if(code[2]==0x3c)//右
    037D 918000A8  LDS	R24,code+2
    037F 338C      CPI	R24,0x3C
    0380 F009      BEQ	0x0382
    0381 C04A      RJMP	0x03CC
(0275)     		         {
(0276)     		          for(i=0;i<7;i++)
    0382 2744      CLR	R20
    0383 C009      RJMP	0x038D
(0277)                          {  
(0278)                           uart_transmit_byte(right[i]);
    0384 E985      LDI	R24,0x95
    0385 E090      LDI	R25,0
    0386 2FE4      MOV	R30,R20
    0387 27FF      CLR	R31
    0388 0FE8      ADD	R30,R24
    0389 1FF9      ADC	R31,R25
    038A 8100      LDD	R16,Z+0
    038B DD11      RCALL	_uart_transmit_byte
    038C 9543      INC	R20
    038D 3047      CPI	R20,7
    038E F3A8      BCS	0x0384
(0279)                          } 
(0280) 						 code_buf[i]=right[i];
    038F E985      LDI	R24,0x95
    0390 E090      LDI	R25,0
    0391 2FE4      MOV	R30,R20
    0392 27FF      CLR	R31
    0393 0FE8      ADD	R30,R24
    0394 1FF9      ADC	R31,R25
    0395 8020      LDD	R2,Z+0
    0396 01CE      MOVW	R24,R28
    0397 2FE4      MOV	R30,R20
    0398 27FF      CLR	R31
    0399 0FE8      ADD	R30,R24
    039A 1FF9      ADC	R31,R25
    039B 8220      STD	Z+0,R2
(0281)                      } 
    039C C02F      RJMP	0x03CC
(0282) 					while(1)
(0283) 					   {
(0284) 					      flag=decode();
    039D DD8A      RCALL	_decode
    039E 2F60      MOV	R22,R16
    039F C01E      RJMP	0x03BE
(0285) 					      while(flag==0xff)
(0286) 						       {
(0287) 							     flag=0;
    03A0 2766      CLR	R22
(0288) 							     delay_nms(25);
    03A1 E109      LDI	R16,0x19
    03A2 E010      LDI	R17,0
    03A3 DCD3      RCALL	_delay_nms
(0289) 								 flag=decode();
    03A4 DD83      RCALL	_decode
    03A5 2F60      MOV	R22,R16
    03A6 C011      RJMP	0x03B8
(0290) 								 while(flag==0xff)
(0291) 								      {
(0292) 										for(i=0;i<7;i++) 
    03A7 2744      CLR	R20
    03A8 C009      RJMP	0x03B2
(0293)                                         uart_transmit_byte(STOP[i]);
    03A9 E98C      LDI	R24,0x9C
    03AA E090      LDI	R25,0
    03AB 2FE4      MOV	R30,R20
    03AC 27FF      CLR	R31
    03AD 0FE8      ADD	R30,R24
    03AE 1FF9      ADC	R31,R25
    03AF 8100      LDD	R16,Z+0
    03B0 DCEC      RCALL	_uart_transmit_byte
    03B1 9543      INC	R20
    03B2 3047      CPI	R20,7
    03B3 F3A8      BCS	0x03A9
(0294) 										if(i==7)  {flag=1;break;}
    03B4 3047      CPI	R20,7
    03B5 F411      BNE	0x03B8
    03B6 E061      LDI	R22,1
    03B7 C002      RJMP	0x03BA
    03B8 3F6F      CPI	R22,0xFF
    03B9 F369      BEQ	0x03A7
(0295) 									  }
(0296) 								  if(flag==1)  {flag=0;return;}	  
    03BA 3061      CPI	R22,1
    03BB F411      BNE	0x03BE
    03BC 2766      CLR	R22
    03BD C020      RJMP	0x03DE
    03BE 3F6F      CPI	R22,0xFF
    03BF F301      BEQ	0x03A0
(0297) 							   }
(0298) 							for(i=0;i<7;i++) 
    03C0 2744      CLR	R20
    03C1 C008      RJMP	0x03CA
(0299)                               uart_transmit_byte(code_buf[i]);   
    03C2 01CE      MOVW	R24,R28
    03C3 2FE4      MOV	R30,R20
    03C4 27FF      CLR	R31
    03C5 0FE8      ADD	R30,R24
    03C6 1FF9      ADC	R31,R25
    03C7 8100      LDD	R16,Z+0
    03C8 DCD4      RCALL	_uart_transmit_byte
    03C9 9543      INC	R20
    03CA 3047      CPI	R20,7
    03CB F3B0      BCS	0x03C2
    03CC CFD0      RJMP	0x039D
(0300) 					   }
(0301) 		         }	
(0302) 		  }
    03CD C010      RJMP	0x03DE
(0303) 		   else if(flag==0xff)
    03CE 3F6F      CPI	R22,0xFF
    03CF F471      BNE	0x03DE
(0304)                 {
(0305) 	              flag=0;
    03D0 2766      CLR	R22
(0306) 	           for(i=0;i<7;i++) 
    03D1 2744      CLR	R20
    03D2 C009      RJMP	0x03DC
(0307)                     uart_transmit_byte(STOP[i]);
    03D3 E98C      LDI	R24,0x9C
    03D4 E090      LDI	R25,0
    03D5 2FE4      MOV	R30,R20
    03D6 27FF      CLR	R31
    03D7 0FE8      ADD	R30,R24
    03D8 1FF9      ADC	R31,R25
    03D9 8100      LDD	R16,Z+0
    03DA DCC2      RCALL	_uart_transmit_byte
    03DB 9543      INC	R20
    03DC 3047      CPI	R20,7
    03DD F3A8      BCS	0x03D3
(0308) 	            }	  
    03DE 9627      ADIW	R28,7
    03DF 940E03EB  CALL	pop_gset2
    03E1 9508      RET
(0309)   }   
(0310) void   main()
(0311)     {
(0312) 	   init_devices();
_main:
    03E2 DD3A      RCALL	_init_devices
(0313) 	   //DDRA&=~(1<<wuxian_js);
(0314) 	  // PORTA|=(1<<wuxian_js);
(0315) 	   DDRD=0x02; 
    03E3 E082      LDI	R24,2
    03E4 BB81      OUT	0x11,R24
(0316) 	   //DDRC|=(1<<power_led);
(0317) 	   //PORTC&=~(1<<power_led);
(0318) 	   DDRA |=0x40;                      //485使能
    03E5 9AD6      SBI	0x1A,6
(0319)        PORTA|=0x40;               // 
    03E6 9ADE      SBI	0x1B,6
    03E7 C001      RJMP	0x03E9
(0320) 	  while(1)
(0321) 	    {
(0322) 		 ana_decode();
FILE: <library>
    03E8 DE9E      RCALL	_ana_decode
    03E9 CFFE      RJMP	0x03E8
    03EA 9508      RET
pop_gset2:
    03EB E0E2      LDI	R30,2
    03EC 940C03FD  JMP	pop
pop_gset5:
    03EE 27EE      CLR	R30
    03EF 940C03FD  JMP	pop
push_gset5:
    03F1 92FA      ST	R15,-Y
    03F2 92EA      ST	R14,-Y
push_gset4:
    03F3 92DA      ST	R13,-Y
    03F4 92CA      ST	R12,-Y
push_gset3:
    03F5 92BA      ST	R11,-Y
    03F6 92AA      ST	R10,-Y
push_gset2:
    03F7 937A      ST	R23,-Y
    03F8 936A      ST	R22,-Y
push_gset1:
    03F9 935A      ST	R21,-Y
    03FA 934A      ST	R20,-Y
    03FB 9508      RET
pop_gset1:
    03FC E0E1      LDI	R30,1
pop:
    03FD 9149      LD	R20,Y+
    03FE 9159      LD	R21,Y+
    03FF FDE0      SBRC	R30,0
    0400 9508      RET
    0401 9169      LD	R22,Y+
    0402 9179      LD	R23,Y+
    0403 FDE1      SBRC	R30,1
    0404 9508      RET
    0405 90A9      LD	R10,Y+
    0406 90B9      LD	R11,Y+
    0407 FDE2      SBRC	R30,2
    0408 9508      RET
    0409 90C9      LD	R12,Y+
    040A 90D9      LD	R13,Y+
    040B FDE3      SBRC	R30,3
    040C 9508      RET
    040D 90E9      LD	R14,Y+
    040E 90F9      LD	R15,Y+
    040F 9508      RET
lsr32:
    0410 920F      PUSH	R0
    0411 9009      LD	R0,Y+
    0412 2000      TST	R0
    0413 F031      BEQ	0x041A
    0414 9536      LSR	R19
    0415 9527      ROR	R18
    0416 9517      ROR	R17
    0417 9507      ROR	R16
    0418 940A      DEC	R0
    0419 CFF8      RJMP	0x0412
    041A 900F      POP	R0
    041B 9508      RET

⌨️ 快捷键说明

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