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

📄 hongwai.lst

📁 万能遥控器解码
💻 LST
字号:
__start:
__text_start:
      12 E5CF      LDI	R28,0x5F
      13 E0D2      LDI	R29,2
      14 BFCD      OUT	0x3D,R28
      15 BFDE      OUT	0x3E,R29
      16 51CE      SUBI	R28,0x1E
      17 40D0      SBCI	R29,0
      18 EA0A      LDI	R16,0xAA
      19 8308      STD	Y+0,R16
      1A 2400      CLR	R0
      1B E6E1      LDI	R30,0x61
      1C E0F0      LDI	R31,0
      1D E010      LDI	R17,0
      1E 36E4      CPI	R30,0x64
      1F 07F1      CPC	R31,R17
      20 F011      BEQ	0x0023
      21 9201      ST	R0,Z+
      22 CFFB      RJMP	0x001E
      23 8300      STD	Z+0,R16
      24 E2E2      LDI	R30,0x22
      25 E0F0      LDI	R31,0
      26 E6A0      LDI	R26,0x60
      27 E0B0      LDI	R27,0
      28 E010      LDI	R17,0
      29 E000      LDI	R16,0
      2A BF0B      OUT	0x3B,R16
      2B 32E3      CPI	R30,0x23
      2C 07F1      CPC	R31,R17
      2D F021      BEQ	0x0032
      2E 95C8      LPM
      2F 9631      ADIW	R30,1
      30 920D      ST	R0,X+
      31 CFF9      RJMP	0x002B
      32 D073      RCALL	_main
_exit:
      33 CFFF      RJMP	_exit
_delay_nus:
  i                    --> R20
  n                    --> R16
      34 934A      ST	R20,-Y
      35 935A      ST	R21,-Y
FILE: C:\DOCUME~1\Administrator.27F5F4061F03467\桌面\上升沿\jiema.c
(0001) //ICC-AVR application builder : 2008-8-7 14:56:45
(0002) // Target : M8515
(0003) // Crystal: 4.0000Mhz
(0004) 
(0005) #include <iom8515v.h>
(0006) #include <macros.h>
(0007) #define uchar unsigned char
(0008) #define uint unsigned int
(0009) #define DQ    PD2
(0010) #define    HW   (PIND&(1<<DQ))  //数据的状态
(0011) uchar IRCode[3],IRCON=0;
(0012) void delay_nus(unsigned int n)//n微秒延时函数 
(0013) { 
(0014) unsigned int i; 
(0015) for (i=0;i<n;i++) 
      36 2744      CLR	R20
      37 2755      CLR	R21
      38 C003      RJMP	0x003C
(0016)   { 
(0017)       asm("nop"); 
      39 0000      NOP
      3A 5F4F      SUBI	R20,0xFF
      3B 4F5F      SBCI	R21,0xFF
      3C 1740      CP	R20,R16
      3D 0751      CPC	R21,R17
      3E F3D0      BCS	0x0039
      3F 9159      LD	R21,Y+
      40 9149      LD	R20,Y+
      41 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R10
      42 D069      RCALL	push_xgset300C
      43 0158      MOVW	R10,R16
(0018)   } 
(0019) } 
(0020) void delay_nms(unsigned int n)//n毫秒延时函数 
(0021) { 
(0022)   unsigned int i; 
(0023)   for (i=0;i<n;i++) //执行n次1毫秒延时 
      44 2744      CLR	R20
      45 2755      CLR	R21
      46 C005      RJMP	0x004C
(0024)   delay_nus(10);  
      47 E00A      LDI	R16,0xA
      48 E010      LDI	R17,0
      49 DFEA      RCALL	_delay_nus
      4A 5F4F      SUBI	R20,0xFF
      4B 4F5F      SBCI	R21,0xFF
      4C 154A      CP	R20,R10
      4D 055B      CPC	R21,R11
      4E F3C0      BCS	0x0047
      4F C061      RJMP	pop_xgset300C
(0025) }             
(0026) /************************* UART 发送数据函数*********************************************************/
(0027) void uart0_init(void)
(0028) {
(0029)  UCSRB = 0x00; //disable while setting baud rate
_uart0_init:
      50 2422      CLR	R2
      51 B82A      OUT	0x0A,R2
(0030)  UCSRA = 0x00;
      52 B82B      OUT	0x0B,R2
(0031)  UCSRC = BIT(URSEL) | 0x26;
      53 EA86      LDI	R24,0xA6
      54 BD80      OUT	0x20,R24
(0032)  UBRRL = 0x33; //set baud rate lo
      55 E383      LDI	R24,0x33
      56 B989      OUT	0x09,R24
(0033)  UBRRH = 0x00; //set baud rate hi
      57 BC20      OUT	0x20,R2
(0034)  UCSRB = 0x18;
      58 E188      LDI	R24,0x18
      59 B98A      OUT	0x0A,R24
      5A 9508      RET
(0035) }
(0036) void sendchar(uchar num)
(0037)   { 	   
(0038)       UDR=num;
_sendchar:
  num                  --> R16
      5B B90C      OUT	0x0C,R16
(0039)       while(!(UCSRA&(1<<TXC)));
      5C 9B5E      SBIS	0x0B,6
      5D CFFE      RJMP	0x005C
(0040) 	  UCSRA |= (1<<TXC);
      5E 9A5E      SBI	0x0B,6
      5F 9508      RET
_int0_isr:
  j                    --> Y,+1
  flag                 --> Y,+1
  m                    --> R20
      60 920A      ST	R0,-Y
      61 921A      ST	R1,-Y
      62 922A      ST	R2,-Y
      63 923A      ST	R3,-Y
      64 924A      ST	R4,-Y
      65 925A      ST	R5,-Y
      66 926A      ST	R6,-Y
      67 927A      ST	R7,-Y
      68 928A      ST	R8,-Y
      69 929A      ST	R9,-Y
      6A 930A      ST	R16,-Y
      6B 931A      ST	R17,-Y
      6C 932A      ST	R18,-Y
      6D 933A      ST	R19,-Y
      6E 938A      ST	R24,-Y
      6F 939A      ST	R25,-Y
      70 93AA      ST	R26,-Y
      71 93BA      ST	R27,-Y
      72 93EA      ST	R30,-Y
      73 93FA      ST	R31,-Y
      74 B60F      IN	R0,0x3F
      75 920A      ST	R0,-Y
      76 934A      ST	R20,-Y
      77 935A      ST	R21,-Y
(0041)   }
(0042) #pragma interrupt_handler int0_isr:iv_INT0
(0043) void int0_isr(void)
(0044) { 
(0045)  uint flag,m=0,j;
      78 2744      CLR	R20
      79 2755      CLR	R21
(0046)  
(0047)     m++; 
      7A 5F4F      SUBI	R20,0xFF
      7B 4F5F      SBCI	R21,0xFF
(0048) 	if(m==2)
      7C 3042      CPI	R20,2
      7D E0E0      LDI	R30,0
      7E 075E      CPC	R21,R30
      7F F431      BNE	0x0086
(0049) 	{ GICR = 0x00;
      80 2422      CLR	R2
      81 BE2B      OUT	0x3B,R2
(0050) 	uart0_init();
      82 DFCD      RCALL	_uart0_init
(0051)     sendchar(IRCode[1]);	}	  
      83 9100 0062 LDS	R16,IRCode+1
      85 DFD5      RCALL	_sendchar
      86 9159      LD	R21,Y+
      87 9149      LD	R20,Y+
      88 9009      LD	R0,Y+
      89 BE0F      OUT	0x3F,R0
      8A 91F9      LD	R31,Y+
      8B 91E9      LD	R30,Y+
      8C 91B9      LD	R27,Y+
      8D 91A9      LD	R26,Y+
      8E 9199      LD	R25,Y+
      8F 9189      LD	R24,Y+
      90 9139      LD	R19,Y+
      91 9129      LD	R18,Y+
      92 9119      LD	R17,Y+
      93 9109      LD	R16,Y+
      94 9099      LD	R9,Y+
      95 9089      LD	R8,Y+
      96 9079      LD	R7,Y+
      97 9069      LD	R6,Y+
      98 9059      LD	R5,Y+
      99 9049      LD	R4,Y+
      9A 9039      LD	R3,Y+
      9B 9029      LD	R2,Y+
      9C 9019      LD	R1,Y+
      9D 9009      LD	R0,Y+
      9E 9518      RETI
(0052) 	/*if(m>1)
(0053)      {   
(0054)        IRCode[IRCON]<<=1;     //每读一次放入变量中的二进制的一个位,每次左移一位
(0055)        delay_nms(33);   //0.84ms
(0056)              flag++;      
(0057) 			  if(flag==9) 
(0058) 			       { 
(0059) 				    flag=0; //8为填满一个数组,计数清零
(0060) 	              	IRCON++;  //填满一个字节,指向下一个变量						    
(0061) 					if(IRCON==4)  IRCON=0;                  
(0062)                    }  
(0063) 		 if(HW)    IRCode[IRCON]|=0x01; //左移后最后一位写入 1
(0064)       if(m>32)  
(0065) 		 {
(0066) 		    m=0;
(0067) 			 uart0_init();
(0068) 		    for(j=0;j<4;j++)
(0069)               {
(0070) 			    delay_nms(5000);
(0071)                 sendchar(IRCode[j]);		  
(0072)               }
(0073) 			  PORTB=IRCode[0];
(0074)        }  	
(0075)     }	 	*/	 
(0076)  // GICR = 0x40;
(0077)   //SEI();
(0078) }
(0079) void init_devices(void)
(0080) {
(0081)  CLI(); //disable all interrupts
_init_devices:
      9F 94F8      BCLR	7
(0082)  MCUCR = 0x03;
      A0 E083      LDI	R24,3
      A1 BF85      OUT	0x35,R24
(0083)  GICR = 0x40;
      A2 E480      LDI	R24,0x40
      A3 BF8B      OUT	0x3B,R24
(0084)  SEI(); //re-enable interrupts
      A4 9478      BSET	7
      A5 9508      RET
(0085) }
(0086) 
(0087) void main(void)
(0088)  { 
(0089)   DDRD&=~BIT(0);
_main:
      A6 9888      CBI	0x11,0
(0090)   DDRD|=BIT(1);
      A7 9A89      SBI	0x11,1
(0091)   DDRD&=~BIT(2);//设置PD2为输入口 
      A8 988A      CBI	0x11,2
(0092)   init_devices();
      A9 DFF5      RCALL	_init_devices
(0093)   while(1);
FILE: <library>
      AA CFFF      RJMP	0x00AA
      AB 9508      RET
push_xgset300C:
      AC 935A      ST	R21,-Y
      AD 934A      ST	R20,-Y
      AE 92BA      ST	R11,-Y
      AF 92AA      ST	R10,-Y
      B0 9508      RET
pop_xgset300C:
      B1 90A9      LD	R10,Y+
      B2 90B9      LD	R11,Y+
      B3 9149      LD	R20,Y+
      B4 9159      LD	R21,Y+
      B5 9508      RET

⌨️ 快捷键说明

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