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

📄 hongwai.lst

📁 万能遥控器解码
💻 LST
字号:
__start:
__text_start:
      72 EFCF      LDI	R28,0xFF
      73 E2D1      LDI	R29,0x21
      74 BFCD      OUT	0x3D,R28
      75 BFDE      OUT	0x3E,R29
      76 51CE      SUBI	R28,0x1E
      77 40D0      SBCI	R29,0
      78 EA0A      LDI	R16,0xAA
      79 8308      STD	Y+0,R16
      7A 2400      CLR	R0
      7B E0E0      LDI	R30,0
      7C E0F2      LDI	R31,2
      7D E012      LDI	R17,2
      7E 30E0      CPI	R30,0
      7F 07F1      CPC	R31,R17
      80 F011      BEQ	0x0083
      81 9201      ST	R0,Z+
      82 CFFB      RJMP	0x007E
      83 8300      STD	Z+0,R16
      84 EEE4      LDI	R30,0xE4
      85 E0F0      LDI	R31,0
      86 E0A0      LDI	R26,0
      87 E0B2      LDI	R27,2
      88 E010      LDI	R17,0
      89 E000      LDI	R16,0
      8A BF0B      OUT	0x3B,R16
      8B 3EE4      CPI	R30,0xE4
      8C 07F1      CPC	R31,R17
      8D F021      BEQ	0x0092
      8E 95C8      LPM
      8F 9631      ADIW	R30,1
      90 920D      ST	R0,X+
      91 CFF9      RJMP	0x008B
      92 940E 0095 CALL	_main
_exit:
      94 CFFF      RJMP	_exit
FILE: hongwai.c
(0001) #include <iom8515v.h>//和单片机类型相对应的头文件,选择Atmega8515做实验; 
(0002) #include <macros.h> 
(0003) void delay_nus(unsigned int n);//函数声明,本实验中会用到这两个函数 
(0004) void delay_nms(unsigned int n); 
(0005) void main(void)//主函数 
(0006) {  //L6 
(0007)   unsigned int i; 
(0008)   unsigned char n;  
(0009)   TCCR0=BIT(CS01);//T/C0时钟8分频 
_main:
  n                    --> R22
  i                    --> R20
      95 E082      LDI	R24,2
      96 BF83      OUT	0x33,R24
(0010)   TIMSK=BIT(TOIE0);//允许定时器T/C0溢出中断 
      97 BF89      OUT	0x39,R24
(0011)   SEI();//开中断 
      98 9478      BSET	7
(0012)   DDRD|=BIT(1);
      99 9A89      SBI	0x11,1
(0013)   PORTD|=BIT(1);
      9A 9A91      SBI	0x12,1
(0014)   DDRD|=BIT(4);//设置PD4,PC0为输出口 
      9B 9A8C      SBI	0x11,4
(0015)   DDRC|=BIT(0);
      9C 9AA0      SBI	0x14,0
(0016)   DDRD&=~BIT(5);//设置PC5为输入口 
      9D 988D      CBI	0x11,5
(0017)   DDRB|=BIT(7)|BIT(0);//定义B口的PB0、PB1为输出口 
      9E B387      IN	R24,0x17
      9F 6881      ORI	R24,0x81
      A0 BB87      OUT	0x17,R24
(0018)   PORTB&=~BIT(0);//PB1口输出低电平,绿灯亮 
      A1 98C0      CBI	0x18,0
(0019)   PORTB|=BIT(7);
      A2 9AC7      SBI	0x18,7
(0020)   DDRD|=BIT(1);
      A3 9A89      SBI	0x11,1
(0021)   PORTD|=BIT(1);//与门一端输出1 
      A4 9A91      SBI	0x12,1
      A5 C02F      RJMP	0x00D5
(0022)    
(0023)   while(1) 
(0024)     {   //L5  
(0025)      for (n=0;n<10;n++) 
      A6 2766      CLR	R22
      A7 C02B      RJMP	0x00D3
(0026)         {  //L4 
(0027)          delay_nus(60); 
      A8 E30C      LDI	R16,0x3C
      A9 E010      LDI	R17,0
      AA D02C      RCALL	_delay_nus
(0028)          if ((PIND&0B00100000)==0) //检测PD5是否为低电平 
      AB 9985      SBIC	0x10,5
      AC C025      RJMP	0x00D2
(0029)             {   //L3 
(0030)              i++; 
      AD 5F4F      SUBI	R20,0xFF
      AE 4F5F      SBCI	R21,0xFF
(0031)              if (i>8)//如果连续检测到有301-399次PD5都为低电平,则报警 
      AF E088      LDI	R24,0x8
      B0 E090      LDI	R25,0
      B1 1784      CP	R24,R20
      B2 0795      CPC	R25,R21
      B3 F4D8      BCC	0x00CF
(0032)                 {     //L2 
(0033)                     CLI();  
      B4 94F8      BCLR	7
(0034)                     for(i=0;i<10;i++) 
      B5 2744      CLR	R20
      B6 2755      CLR	R21
      B7 C00E      RJMP	0x00C6
(0035)                     {  //L1 
(0036)                      PORTB|=BIT(0);//关闭D0灯 
      B8 9AC0      SBI	0x18,0
(0037)                      PORTC|=BIT(0);//打开蜂鸣器 
      B9 9AA8      SBI	0x15,0
(0038)                      PORTB^=BIT(7);//翻转D7灯,快闪 
      BA E880      LDI	R24,0x80
      BB E090      LDI	R25,0
      BC B228      IN	R2,0x18
      BD 2433      CLR	R3
      BE 2628      EOR	R2,R24
      BF 2639      EOR	R3,R25
      C0 BA28      OUT	0x18,R2
(0039)                      delay_nms(30); 
      C1 E10E      LDI	R16,0x1E
      C2 E010      LDI	R17,0
      C3 D021      RCALL	_delay_nms
      C4 5F4F      SUBI	R20,0xFF
      C5 4F5F      SBCI	R21,0xFF
      C6 304A      CPI	R20,0xA
      C7 E0E0      LDI	R30,0
      C8 075E      CPC	R21,R30
      C9 F370      BCS	0x00B8
(0040)                     }  //L1 
(0041)                  PORTC&=~BIT(0);//关闭蜂鸣器 
      CA 98A8      CBI	0x15,0
(0042)                  PORTB|=BIT(7);//关闭红灯 
      CB 9AC7      SBI	0x18,7
(0043)                  i=0; 
      CC 2744      CLR	R20
      CD 2755      CLR	R21
(0044)                  SEI(); 
      CE 9478      BSET	7
(0045)                 }    //L2 */ 
(0046)              PORTB&=BIT(0);//打开绿灯 
      CF B388      IN	R24,0x18
      D0 7081      ANDI	R24,1
      D1 BB88      OUT	0x18,R24
      D2 9563      INC	R22
      D3 306A      CPI	R22,0xA
      D4 F298      BCS	0x00A8
      D5 CFD0      RJMP	0x00A6
      D6 9508      RET
_delay_nus:
  i                    --> R20
  n                    --> R16
      D7 934A      ST	R20,-Y
      D8 935A      ST	R21,-Y
(0047)             }  //L3  
(0048)         }  //L4  
(0049) 		}
(0050)      //-------------------码调制----------------------------/ 
(0051)    /***  CLI();//PD0连续2ms都无输出 
(0052)      PORTD&=~BIT(4); 
(0053)      delay_nms(2); 
(0054)      TCNT0=245; 
(0055)      SEI();//PD0连续600us产生38KHZ信号 
(0056)   //delay_nus(100); 
(0057)     }   //L5 */ 
(0058)   
(0059) }  //L6 
(0060)  
(0061) //#pragma interrupt_handler LED0:iv_TIMER0_OVF//指定中断服务程序的入口 
(0062) /***********void LED0(void)//产生38KHz的方波信号 
(0063) { 
(0064)   PORTD^=BIT(4);//翻转PD0口电平 
(0065)   TCNT0=245; 
(0066) } **/
(0067)  
(0068) void delay_nus(unsigned int n)//n微秒延时函数 
(0069) { 
(0070) unsigned int i; 
(0071) for (i=0;i<n;i++) 
      D9 2744      CLR	R20
      DA 2755      CLR	R21
      DB C003      RJMP	0x00DF
(0072)   { 
(0073)       asm("nop"); 
      DC 0000      NOP
      DD 5F4F      SUBI	R20,0xFF
      DE 4F5F      SBCI	R21,0xFF
      DF 1740      CP	R20,R16
      E0 0751      CPC	R21,R17
      E1 F3D0      BCS	0x00DC
      E2 9159      LD	R21,Y+
      E3 9149      LD	R20,Y+
      E4 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R10
      E5 940E 00F5 CALL	push_xgset300C
      E7 0158      MOVW	R10,R16
(0074)   } 
(0075) } 
(0076)  
(0077) void delay_nms(unsigned int n)//n毫秒延时函数 
(0078) { 
(0079)   unsigned int i; 
(0080)   for (i=0;i<n;i++) //执行n次1毫秒延时 
      E8 2744      CLR	R20
      E9 2755      CLR	R21
      EA C005      RJMP	0x00F0
(0081)   delay_nus(1000);  
FILE: <library>
      EB EE08      LDI	R16,0xE8
      EC E013      LDI	R17,3
      ED DFE9      RCALL	_delay_nus
      EE 5F4F      SUBI	R20,0xFF
      EF 4F5F      SBCI	R21,0xFF
      F0 154A      CP	R20,R10
      F1 055B      CPC	R21,R11
      F2 F3C0      BCS	0x00EB
      F3 940C 00FA JMP	pop_xgset300C
push_xgset300C:
      F5 935A      ST	R21,-Y
      F6 934A      ST	R20,-Y
      F7 92BA      ST	R11,-Y
      F8 92AA      ST	R10,-Y
      F9 9508      RET
pop_xgset300C:
      FA 90A9      LD	R10,Y+
      FB 90B9      LD	R11,Y+
      FC 9149      LD	R20,Y+
      FD 9159      LD	R21,Y+
      FE 9508      RET

⌨️ 快捷键说明

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