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

📄 infrared_measure.lst

📁 AVR 红外接收源代码,对学习红外的人很有帮助
💻 LST
📖 第 1 页 / 共 2 页
字号:
(0110)   		   {
(0111)   		   	  p=uint_asc(counter_buffer[i]);
    00D7 E082      LDI	R24,2
    00D8 9F84      MUL	R24,R20
    00D9 01F0      MOVW	R30,R0
    00DA E68D      LDI	R24,0x6D
    00DB E090      LDI	R25,0
    00DC 0FE8      ADD	R30,R24
    00DD 1FF9      ADC	R31,R25
    00DE 8100      LDD	R16,Z+0
    00DF 8111      LDD	R17,Z+1
    00E0 DF76      RCALL	_uint_asc
    00E1 01B8      MOVW	R22,R16
(0112)   			  putchar(*p++);
    00E2 01FB      MOVW	R30,R22
    00E3 9101      LD	R16,Z+
    00E4 01BF      MOVW	R22,R30
    00E5 DFBA      RCALL	_putchar
(0113)   			  putchar(*p++);
    00E6 01FB      MOVW	R30,R22
    00E7 9101      LD	R16,Z+
    00E8 01BF      MOVW	R22,R30
    00E9 DFB6      RCALL	_putchar
(0114)   			  putchar(*p++);
    00EA 01FB      MOVW	R30,R22
    00EB 9101      LD	R16,Z+
    00EC 01BF      MOVW	R22,R30
    00ED DFB2      RCALL	_putchar
(0115)   			  putchar(*p++);
    00EE 01FB      MOVW	R30,R22
    00EF 9101      LD	R16,Z+
    00F0 01BF      MOVW	R22,R30
    00F1 DFAE      RCALL	_putchar
(0116)   			  putchar(*p++);
    00F2 01FB      MOVW	R30,R22
    00F3 9101      LD	R16,Z+
    00F4 01BF      MOVW	R22,R30
    00F5 DFAA      RCALL	_putchar
(0117)   
(0118)   			  puts("     ");
    00F6 E600      LDI	R16,0x60
    00F7 E010      LDI	R17,0
    00F8 DFAB      RCALL	_puts
    00F9 9543      INC	R20
    00FA 3644      CPI	R20,0x64
    00FB F408      BCC	0x00FD
    00FC CFDA      RJMP	0x00D7
(0119)   			}
(0120)    			for(i=0;i<100;i++)
    00FD 2744      CLR	R20
    00FE C00C      RJMP	0x010B
(0121)   			counter_buffer[i]=0;
    00FF E082      LDI	R24,2
    0100 9F84      MUL	R24,R20
    0101 01F0      MOVW	R30,R0
    0102 E68D      LDI	R24,0x6D
    0103 E090      LDI	R25,0
    0104 0FE8      ADD	R30,R24
    0105 1FF9      ADC	R31,R25
    0106 2422      CLR	R2
    0107 2433      CLR	R3
    0108 8231      STD	Z+1,R3
    0109 8220      STD	Z+0,R2
    010A 9543      INC	R20
    010B 3644      CPI	R20,0x64
    010C F390      BCS	0x00FF
(0122)   			n=0;
    010D 2422      CLR	R2
    010E 9220006B  STS	_n,R2
(0123)   			flag_start=0;
    0110 9220006C  STS	_flag_start,R2
(0124)   			TCCR1B=0;
    0112 BC2E      OUT	0x2E,R2
(0125)   			TCNT1=0;
    0113 2433      CLR	R3
    0114 BC3D      OUT	0x2D,R3
    0115 BC2C      OUT	0x2C,R2
    0116 CFBB      RJMP	0x00D2
(0126)   
(0127)  }
(0128) }
    0117 9508      RET
FILE: E:\avr\开发板\source\INFRARED\infrared_measure\infrared_measure.c
(0001) /******************************************/
(0002) /*             北京MCU学习之家            */
(0003) /* 采集红外输入数据的高低电平保持时间程序 */
(0004) /*             作者:白如冰                */
(0005) /*             2005年10月1日              */
(0006) /*  目标MCU:MEGA8   晶振:外部(EXT) 8MHZ   */
(0007) /******************************************/
(0008) //红外接收头的引脚定义 
(0009) //   1----->data-----> (PD3(int1))
(0010) //   2----->gnd
(0011) //   3----->vss
(0012) /******************************************/
(0013) 
(0014) #include <iom8v.h>
(0015) #include <macros.h>
(0016) 
(0017) #define INFR_DIR      DDRD
(0018) #define INFR_PORT     PORTD
(0019) #define INFR_DATA     3
(0020) unsigned int counter_buffer[100];
(0021) unsigned char flag_start,n;
(0022) 
(0023) /* 初始化外部中断1 */  
(0024) void init_infr(void) 
(0025)     {
(0026) 	 unsigned char i;
(0027) 	 INFR_DIR&=~(1<<INFR_DATA); //PD3为输入方向
_init_infr:
  i                    --> R16
    0118 988B      CBI	0x11,3
(0028) 	 INFR_PORT|=1<<INFR_DATA;   //PD3初始为高电平
    0119 9A93      SBI	0x12,3
(0029) 	 MCUCR = 0x04; //int1 电平变化产生中断
    011A E084      LDI	R24,4
    011B BF85      OUT	0x35,R24
(0030)      GICR  = 0x80; //int1 外部中断使能 
    011C E880      LDI	R24,0x80
    011D BF8B      OUT	0x3B,R24
(0031) 	 TCCR1B=0;//关闭定时器T1
    011E 2422      CLR	R2
    011F BC2E      OUT	0x2E,R2
(0032) 	 TCNT1=0; //初始值为0
    0120 2433      CLR	R3
    0121 BC3D      OUT	0x2D,R3
    0122 BC2C      OUT	0x2C,R2
(0033) 	 flag_start=0;
    0123 9220006C  STS	_flag_start,R2
(0034) 	 n=0;
    0125 9220006B  STS	_n,R2
(0035) 	 for(i=0;i<100;i++)
    0127 2700      CLR	R16
    0128 C00C      RJMP	0x0135
(0036) 	 counter_buffer[i]=0;
    0129 E082      LDI	R24,2
    012A 9F80      MUL	R24,R16
    012B 01F0      MOVW	R30,R0
    012C E68D      LDI	R24,0x6D
    012D E090      LDI	R25,0
    012E 0FE8      ADD	R30,R24
    012F 1FF9      ADC	R31,R25
    0130 2422      CLR	R2
    0131 2433      CLR	R3
    0132 8231      STD	Z+1,R3
    0133 8220      STD	Z+0,R2
    0134 9503      INC	R16
    0135 3604      CPI	R16,0x64
    0136 F390      BCS	0x0129
(0037) 	 SEI();  //全局中断使能
    0137 9478      BSET	7
(0038)      
(0039)     }
    0138 9508      RET
_int1_isr:
    0139 922A      ST	R2,-Y
    013A 923A      ST	R3,-Y
    013B 930A      ST	R16,-Y
    013C 931A      ST	R17,-Y
    013D 932A      ST	R18,-Y
    013E 933A      ST	R19,-Y
    013F 938A      ST	R24,-Y
    0140 939A      ST	R25,-Y
    0141 93EA      ST	R30,-Y
    0142 93FA      ST	R31,-Y
    0143 B62F      IN	R2,0x3F
    0144 922A      ST	R2,-Y
(0040) 
(0041) /*外部中断1 中断函数 */	
(0042) #pragma interrupt_handler int1_isr:iv_INT1
(0043) void int1_isr(void)
(0044) { 
(0045)   
(0046)   if(flag_start==0)
    0145 9020006C  LDS	R2,_flag_start
    0147 2022      TST	R2
    0148 F431      BNE	0x014F
(0047)   {
(0048)     TCCR1B=2;//开始计时 8分频
    0149 E082      LDI	R24,2
    014A BD8E      OUT	0x2E,R24
(0049) 	flag_start=1;
    014B E081      LDI	R24,1
    014C 9380006C  STS	_flag_start,R24
(0050)   }
    014E C01C      RJMP	0x016B
(0051)   
(0052)   else
(0053)   {
(0054)      TCCR1B=0;
    014F 2422      CLR	R2
    0150 BC2E      OUT	0x2E,R2
(0055) 	 counter_buffer[n++]=TCNT1;
    0151 9020006B  LDS	R2,_n
    0153 2433      CLR	R3
    0154 2D82      MOV	R24,R2
    0155 5F8F      SUBI	R24,0xFF
    0156 9380006B  STS	_n,R24
    0158 E002      LDI	R16,2
    0159 E010      LDI	R17,0
    015A 0191      MOVW	R18,R2
    015B D038      RCALL	empy16s
    015C 01F8      MOVW	R30,R16
    015D E68D      LDI	R24,0x6D
    015E E090      LDI	R25,0
    015F 0FE8      ADD	R30,R24
    0160 1FF9      ADC	R31,R25
    0161 B42C      IN	R2,0x2C
    0162 B43D      IN	R3,0x2D
    0163 8231      STD	Z+1,R3
    0164 8220      STD	Z+0,R2
(0056) 	 TCNT1=0;
    0165 2422      CLR	R2
    0166 2433      CLR	R3
    0167 BC3D      OUT	0x2D,R3
    0168 BC2C      OUT	0x2C,R2
(0057)      TCCR1B=2;
    0169 E082      LDI	R24,2
    016A BD8E      OUT	0x2E,R24
(0058)   } 
(0059) 
(0060)   
(0061) }
FILE: <library>
    016B 9029      LD	R2,Y+
    016C BE2F      OUT	0x3F,R2
    016D 91F9      LD	R31,Y+
    016E 91E9      LD	R30,Y+
    016F 9199      LD	R25,Y+
    0170 9189      LD	R24,Y+
    0171 9139      LD	R19,Y+
    0172 9129      LD	R18,Y+
    0173 9119      LD	R17,Y+
    0174 9109      LD	R16,Y+
    0175 9039      LD	R3,Y+
    0176 9029      LD	R2,Y+
    0177 9518      RETI
mod16u:
    0178 9468      BSET	6
    0179 C001      RJMP	xdiv16u
div16u:
    017A 94E8      BCLR	6
xdiv16u:
    017B 92EA      ST	R14,-Y
    017C 92FA      ST	R15,-Y
    017D 938A      ST	R24,-Y
    017E 24EE      CLR	R14
    017F 24FF      CLR	R15
    0180 E180      LDI	R24,0x10
    0181 0F00      LSL	R16
    0182 1F11      ROL	R17
    0183 1CEE      ROL	R14
    0184 1CFF      ROL	R15
    0185 16E2      CP	R14,R18
    0186 06F3      CPC	R15,R19
    0187 F018      BCS	0x018B
    0188 1AE2      SUB	R14,R18
    0189 0AF3      SBC	R15,R19
    018A 9503      INC	R16
    018B 958A      DEC	R24
    018C F7A1      BNE	0x0181
    018D F416      BRTC	0x0190
    018E 2D0E      MOV	R16,R14
    018F 2D1F      MOV	R17,R15
    0190 9189      LD	R24,Y+
    0191 90F9      LD	R15,Y+
    0192 90E9      LD	R14,Y+
    0193 9508      RET
empy16s:
    0194 920A      ST	R0,-Y
    0195 921A      ST	R1,-Y
    0196 938A      ST	R24,-Y
    0197 939A      ST	R25,-Y
    0198 9F02      MUL	R16,R18
    0199 01C0      MOVW	R24,R0
    019A 9F12      MUL	R17,R18
    019B 0D90      ADD	R25,R0
    019C 9F03      MUL	R16,R19
    019D 0D90      ADD	R25,R0
    019E 018C      MOVW	R16,R24
    019F 9199      LD	R25,Y+
    01A0 9189      LD	R24,Y+
    01A1 9019      LD	R1,Y+
    01A2 9009      LD	R0,Y+
    01A3 9508      RET
pop_gset2:
    01A4 E0E2      LDI	R30,2
    01A5 C006      RJMP	pop
pop_gset3:
    01A6 E0E4      LDI	R30,4
    01A7 C004      RJMP	pop
push_gset1:
    01A8 935A      ST	R21,-Y
    01A9 934A      ST	R20,-Y
    01AA 9508      RET
pop_gset1:
    01AB E0E1      LDI	R30,1
pop:
    01AC 9149      LD	R20,Y+
    01AD 9159      LD	R21,Y+
    01AE FDE0      SBRC	R30,0
    01AF 9508      RET
    01B0 9169      LD	R22,Y+
    01B1 9179      LD	R23,Y+
    01B2 FDE1      SBRC	R30,1
    01B3 9508      RET
    01B4 90A9      LD	R10,Y+
    01B5 90B9      LD	R11,Y+
    01B6 FDE2      SBRC	R30,2
    01B7 9508      RET
    01B8 90C9      LD	R12,Y+
    01B9 90D9      LD	R13,Y+
    01BA FDE3      SBRC	R30,3
    01BB 9508      RET
    01BC 90E9      LD	R14,Y+
    01BD 90F9      LD	R15,Y+
    01BE 9508      RET
push_gset2:
    01BF 937A      ST	R23,-Y
    01C0 936A      ST	R22,-Y
    01C1 CFE6      RJMP	push_gset1
push_gset3:
    01C2 92BA      ST	R11,-Y
    01C3 92AA      ST	R10,-Y
    01C4 CFFA      RJMP	push_gset2

⌨️ 快捷键说明

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