📄 infrared_measure.lst
字号:
(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 + -