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

📄 timer.lst

📁 万能遥控器解码
💻 LST
📖 第 1 页 / 共 2 页
字号:
__start:
__text_start:
      11 E5CF      LDI	R28,0x5F
      12 E0D2      LDI	R29,2
      13 BFCD      OUT	0x3D,R28
      14 BFDE      OUT	0x3E,R29
      15 51CE      SUBI	R28,0x1E
      16 40D0      SBCI	R29,0
      17 EA0A      LDI	R16,0xAA
      18 8308      STD	Y+0,R16
      19 2400      CLR	R0
      1A E6E0      LDI	R30,0x60
      1B E0F0      LDI	R31,0
      1C E010      LDI	R17,0
      1D 37E3      CPI	R30,0x73
      1E 07F1      CPC	R31,R17
      1F F011      BEQ	0x0022
      20 9201      ST	R0,Z+
      21 CFFB      RJMP	0x001D
      22 8300      STD	Z+0,R16
      23 E2E2      LDI	R30,0x22
      24 E0F0      LDI	R31,0
      25 E6A0      LDI	R26,0x60
      26 E0B0      LDI	R27,0
      27 E010      LDI	R17,0
      28 E000      LDI	R16,0
      29 BF0B      OUT	0x3B,R16
      2A 32E2      CPI	R30,0x22
      2B 07F1      CPC	R31,R17
      2C F021      BEQ	0x0031
      2D 95C8      LPM
      2E 9631      ADIW	R30,1
      2F 920D      ST	R0,X+
      30 CFF9      RJMP	0x002A
      31 D167      RCALL	_main
_exit:
      32 CFFF      RJMP	_exit
_delay_nus:
  i                    --> R10
  n                    --> R16
      33 92AA      ST	R10,-Y
FILE: C:\DOCUME~1\Administrator.27F5F4061F03467\桌面\TIMER\timer.c
(0001) #include <iom8515v.h>
(0002) #include <macros.h>
(0003) #define uchar unsigned char
(0004) #define uint unsigned int
(0005) #define DQ    PD2
(0006) #define    HW   0x04 
(0007) uchar HW_OLD;
(0008) uint IRCode[3],IRCON,f,flag,x;
(0009) uint m,c;
(0010) void delay_nus(unsigned int n)//n微秒延时函数 
(0011) { 
(0012) uchar i; 
(0013) for (i=0;i<n;i++) 
      34 24AA      CLR	R10
      35 C002      RJMP	0x0038
(0014)   { 
(0015)       asm("nop"); 
      36 0000      NOP
      37 94A3      INC	R10
      38 2C2A      MOV	R2,R10
      39 2433      CLR	R3
      3A 1620      CP	R2,R16
      3B 0631      CPC	R3,R17
      3C F3C8      BCS	0x0036
      3D 90A9      LD	R10,Y+
      3E 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R10
      3F D161      RCALL	push_xgset300C
      40 0158      MOVW	R10,R16
(0016)   } 
(0017) } 
(0018) void delay_nms(unsigned int n)//n毫秒延时函数 
(0019) { 
(0020)   unsigned int i; 
(0021)   for (i=0;i<n;i++) //执行n次1毫秒延时 
      41 2744      CLR	R20
      42 2755      CLR	R21
      43 C005      RJMP	0x0049
(0022)   delay_nus(1000);  
      44 EE08      LDI	R16,0xE8
      45 E013      LDI	R17,3
      46 DFEC      RCALL	_delay_nus
      47 5F4F      SUBI	R20,0xFF
      48 4F5F      SBCI	R21,0xFF
      49 154A      CP	R20,R10
      4A 055B      CPC	R21,R11
      4B F3C0      BCS	0x0044
      4C C159      RJMP	pop_xgset300C
(0023) }             
(0024) void uart0_init(void)
(0025) {
(0026)  UCSRB = 0x00; //disable while setting baud rate
_uart0_init:
      4D 2422      CLR	R2
      4E B82A      OUT	0x0A,R2
(0027)  UCSRA = 0x00;
      4F B82B      OUT	0x0B,R2
(0028)  UCSRC = BIT(URSEL) | 0x26;
      50 EA86      LDI	R24,0xA6
      51 BD80      OUT	0x20,R24
(0029)  UBRRL = 0x33; //set baud rate lo
      52 E383      LDI	R24,0x33
      53 B989      OUT	0x09,R24
(0030)  UBRRH = 0x00; //set baud rate hi
      54 BC20      OUT	0x20,R2
(0031)  UCSRB = 0x18;
      55 E188      LDI	R24,0x18
      56 B98A      OUT	0x0A,R24
      57 9508      RET
(0032) }
(0033) void sendchar(uchar num)
(0034)   { 	   
(0035)       UDR=num;
_sendchar:
  num                  --> R16
      58 B90C      OUT	0x0C,R16
(0036)       while(!(UCSRA&(1<<TXC)));
      59 9B5E      SBIS	0x0B,6
      5A CFFE      RJMP	0x0059
(0037) 	  UCSRA |= (1<<TXC);
      5B 9A5E      SBI	0x0B,6
      5C 9508      RET
_int0_isr:
      5D 920A      ST	R0,-Y
      5E 921A      ST	R1,-Y
      5F 922A      ST	R2,-Y
      60 923A      ST	R3,-Y
      61 924A      ST	R4,-Y
      62 925A      ST	R5,-Y
      63 926A      ST	R6,-Y
      64 927A      ST	R7,-Y
      65 928A      ST	R8,-Y
      66 929A      ST	R9,-Y
      67 930A      ST	R16,-Y
      68 931A      ST	R17,-Y
      69 932A      ST	R18,-Y
      6A 933A      ST	R19,-Y
      6B 938A      ST	R24,-Y
      6C 939A      ST	R25,-Y
      6D 93AA      ST	R26,-Y
      6E 93BA      ST	R27,-Y
      6F 93EA      ST	R30,-Y
      70 93FA      ST	R31,-Y
      71 B60F      IN	R0,0x3F
      72 920A      ST	R0,-Y
(0038)   }
(0039) #pragma interrupt_handler int0_isr:iv_INT0
(0040) void int0_isr(void)
(0041) {  
(0042)  GICR=0X00;          //关外部中断
      73 2422      CLR	R2
      74 BE2B      OUT	0x3B,R2
(0043)     init_devices_timer0();  //定时器初始化并开定时器
      75 D11D      RCALL	_init_devices_timer0
      76 9009      LD	R0,Y+
      77 BE0F      OUT	0x3F,R0
      78 91F9      LD	R31,Y+
      79 91E9      LD	R30,Y+
      7A 91B9      LD	R27,Y+
      7B 91A9      LD	R26,Y+
      7C 9199      LD	R25,Y+
      7D 9189      LD	R24,Y+
      7E 9139      LD	R19,Y+
      7F 9129      LD	R18,Y+
      80 9119      LD	R17,Y+
      81 9109      LD	R16,Y+
      82 9099      LD	R9,Y+
      83 9089      LD	R8,Y+
      84 9079      LD	R7,Y+
      85 9069      LD	R6,Y+
      86 9059      LD	R5,Y+
      87 9049      LD	R4,Y+
      88 9039      LD	R3,Y+
      89 9029      LD	R2,Y+
      8A 9019      LD	R1,Y+
      8B 9009      LD	R0,Y+
      8C 9518      RETI
(0044) }
(0045) void init_devices_int0(void)
(0046) {
(0047)  CLI(); 
_init_devices_int0:
      8D 94F8      BCLR	7
(0048)  MCUCR = 0x02;
      8E E082      LDI	R24,2
      8F BF85      OUT	0x35,R24
(0049)  EMCUCR = 0x00;
      90 2422      CLR	R2
      91 BE26      OUT	0x36,R2
(0050)  GICR = 0x40;
      92 E480      LDI	R24,0x40
      93 BF8B      OUT	0x3B,R24
(0051)  SEI(); 
      94 9478      BSET	7
      95 9508      RET
(0052) }
(0053) 
(0054) 
(0055) void timer0_init(void)
(0056) {
(0057)  TCCR0 = 0x00;     //关定时器
_timer0_init:
      96 2422      CLR	R2
      97 BE23      OUT	0x33,R2
(0058)  TCNT0 = 0xb0;      //定时80us
      98 EB80      LDI	R24,0xB0
      99 BF82      OUT	0x32,R24
(0059)  OCR0  = 0x50;      
      9A E580      LDI	R24,0x50
      9B BF81      OUT	0x31,R24
(0060)  TCCR0 = 0x02;      //定时器开始计时8分频
      9C E082      LDI	R24,2
      9D BF83      OUT	0x33,R24
      9E 9508      RET
_timer0_ovf_isr:
  j                    --> R20
      9F 920A      ST	R0,-Y
      A0 921A      ST	R1,-Y
      A1 922A      ST	R2,-Y
      A2 923A      ST	R3,-Y
      A3 924A      ST	R4,-Y
      A4 925A      ST	R5,-Y
      A5 926A      ST	R6,-Y
      A6 927A      ST	R7,-Y
      A7 928A      ST	R8,-Y
      A8 929A      ST	R9,-Y
      A9 930A      ST	R16,-Y
      AA 931A      ST	R17,-Y
      AB 932A      ST	R18,-Y
      AC 933A      ST	R19,-Y
      AD 938A      ST	R24,-Y
      AE 939A      ST	R25,-Y
      AF 93AA      ST	R26,-Y
      B0 93BA      ST	R27,-Y
      B1 93EA      ST	R30,-Y
      B2 93FA      ST	R31,-Y
      B3 B60F      IN	R0,0x3F
      B4 920A      ST	R0,-Y
      B5 D0EB      RCALL	push_xgset300C
(0061) 
(0062) }
(0063) /********************定时器中断服务函数,在此处理接收到的数据************************
(0064) ************************************************************************************/
(0065) #pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
(0066) void timer0_ovf_isr(void)
(0067) {
(0068)  uchar j;
(0069) 	  TIMSK = 0x00;     //关定时器中断
      B6 2422      CLR	R2
      B7 BE29      OUT	0x39,R2
(0070)  TCCR0 = 0x00;    //定时器停止计时
      B8 BE23      OUT	0x33,R2
(0071)  TCNT0 = 0xb0;     //重新装入定时的初值
      B9 EB80      LDI	R24,0xB0
      BA BF82      OUT	0x32,R24
(0072)  c++;               //c记录定时器中断的次数

⌨️ 快捷键说明

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