📄 infrared_test.lst
字号:
(0105)
(0106) }
(0107)
(0108) /*定时器T0 中断函数 */
(0109)
(0110) void t0_isr(void)
(0111) {
(0112) unsigned char i;
(0113)
(0114) TCNT0=0;
021B 2422 CLR R2
021C BE22 OUT 0x32,R2
(0115) t0_counter++;
021D 9180007D LDS R24,t0_counter
021F 5F8F SUBI R24,0xFF
0220 9380007D STS t0_counter,R24
(0116) if(t0_counter>3)
0222 E083 LDI R24,3
0223 9020007D LDS R2,t0_counter
0225 1582 CP R24,R2
0226 F008 BCS 0x0228
0227 C0C9 RJMP 0x02F1
(0117) {
(0118)
(0119) GICR = 0x00; //关掉外部中断1
0228 2422 CLR R2
0229 BE2B OUT 0x3B,R2
(0120) TCCR0=0; //关掉T0
022A BE23 OUT 0x33,R2
(0121) TCNT0=0;
022B BE22 OUT 0x32,R2
(0122) TCCR1B=0; //关闭定时器 T1
022C BC2E OUT 0x2E,R2
(0123) TCNT1=0; //定时器T1 清0
022D 2433 CLR R3
022E BC3D OUT 0x2D,R3
022F BC2C OUT 0x2C,R2
(0124)
(0125) t0_counter=0;
0230 9220007D STS t0_counter,R2
(0126)
(0127) if((counter_buffer[1]>4000)&&(counter_buffer[1]<5000)&&
0232 EA80 LDI R24,0xA0
0233 E09F LDI R25,0xF
0234 90200082 LDS R2,counter_buffer+2
0236 90300083 LDS R3,counter_buffer+3
0238 1582 CP R24,R2
0239 0593 CPC R25,R3
023A F008 BCS 0x023C
023B C098 RJMP 0x02D4
023C 01C1 MOVW R24,R2
023D 3888 CPI R24,0x88
023E E1E3 LDI R30,0x13
023F 079E CPC R25,R30
0240 F008 BCS 0x0242
0241 C092 RJMP 0x02D4
0242 E980 LDI R24,0x90
0243 E091 LDI R25,1
0244 90200104 LDS R2,0x104
0246 90300105 LDS R3,0x105
0248 1582 CP R24,R2
0249 0593 CPC R25,R3
024A F008 BCS 0x024C
024B C088 RJMP 0x02D4
024C 01C1 MOVW R24,R2
024D 3B8C CPI R24,0xBC
024E E0E2 LDI R30,2
024F 079E CPC R25,R30
0250 F008 BCS 0x0252
0251 C082 RJMP 0x02D4
(0128) (counter_buffer[66]>400)&&(counter_buffer[66]<700))
(0129) {
(0130) //如果是有效数据
(0131) rece_flag=1;
0252 E081 LDI R24,1
0253 93800116 STS rece_flag,R24
(0132) for(i=3;i<66;i+=2)
0255 E003 LDI R16,3
0256 C05E RJMP 0x02B5
(0133) {
(0134) if(counter_buffer[i]>800)
0257 E082 LDI R24,2
0258 9F80 MUL R24,R16
0259 01F0 MOVW R30,R0
025A E880 LDI R24,0x80
025B E090 LDI R25,0
025C 0FE8 ADD R30,R24
025D 1FF9 ADC R31,R25
025E 8020 LDD R2,Z+0
025F 8031 LDD R3,Z+1
0260 E280 LDI R24,0x20
0261 E093 LDI R25,3
0262 1582 CP R24,R2
0263 0593 CPC R25,R3
0264 F580 BCC 0x0295
(0135) {
(0136) if(i<18)
0265 3102 CPI R16,0x12
0266 F450 BCC 0x0271
(0137) {
(0138) infra_data[0]>>=1;
0267 90200117 LDS R2,infra_data
0269 9426 LSR R2
026A 92200117 STS infra_data,R2
(0139) infra_data[0]|=0x80;
026C 2D82 MOV R24,R2
026D 6880 ORI R24,0x80
026E 93800117 STS infra_data,R24
(0140) }
0270 C043 RJMP 0x02B4
(0141) else if(i<34)
0271 3202 CPI R16,0x22
0272 F450 BCC 0x027D
(0142) {
(0143) infra_data[1]>>=1;
0273 90200118 LDS R2,infra_data+1
0275 9426 LSR R2
0276 92200118 STS infra_data+1,R2
(0144) infra_data[1]|=0x80;
0278 2D82 MOV R24,R2
0279 6880 ORI R24,0x80
027A 93800118 STS infra_data+1,R24
(0145) }
027C C037 RJMP 0x02B4
(0146) else if(i<50)
027D 3302 CPI R16,0x32
027E F450 BCC 0x0289
(0147) {
(0148) infra_data[2]>>=1;
027F 90200119 LDS R2,infra_data+2
0281 9426 LSR R2
0282 92200119 STS infra_data+2,R2
(0149) infra_data[2]|=0x80;
0284 2D82 MOV R24,R2
0285 6880 ORI R24,0x80
0286 93800119 STS infra_data+2,R24
(0150) }
0288 C02B RJMP 0x02B4
(0151) else if(i<66)
0289 3402 CPI R16,0x42
028A F548 BCC 0x02B4
(0152) {
(0153) infra_data[3]>>=1;
028B 9020011A LDS R2,infra_data+3
028D 9426 LSR R2
028E 9220011A STS infra_data+3,R2
(0154) infra_data[3]|=0x80;
0290 2D82 MOV R24,R2
0291 6880 ORI R24,0x80
0292 9380011A STS infra_data+3,R24
(0155) }
(0156) }
0294 C01F RJMP 0x02B4
(0157) else
(0158) {
(0159) if(i<18)
0295 3102 CPI R16,0x12
0296 F430 BCC 0x029D
(0160) {
(0161) infra_data[0]>>=1;
0297 90200117 LDS R2,infra_data
0299 9426 LSR R2
029A 92200117 STS infra_data,R2
(0162) }
029C C017 RJMP 0x02B4
(0163) else if(i<34)
029D 3202 CPI R16,0x22
029E F430 BCC 0x02A5
(0164) {
(0165) infra_data[1]>>=1;
029F 90200118 LDS R2,infra_data+1
02A1 9426 LSR R2
02A2 92200118 STS infra_data+1,R2
(0166) }
02A4 C00F RJMP 0x02B4
(0167) else if(i<50)
02A5 3302 CPI R16,0x32
02A6 F430 BCC 0x02AD
(0168) {
(0169) infra_data[2]>>=1;
02A7 90200119 LDS R2,infra_data+2
02A9 9426 LSR R2
02AA 92200119 STS infra_data+2,R2
(0170) }
02AC C007 RJMP 0x02B4
(0171) else if(i<66)
02AD 3402 CPI R16,0x42
02AE F428 BCC 0x02B4
(0172) {
(0173) infra_data[3]>>=1;
02AF 9020011A LDS R2,infra_data+3
02B1 9426 LSR R2
02B2 9220011A STS infra_data+3,R2
02B4 5F0E SUBI R16,0xFE
02B5 3402 CPI R16,0x42
02B6 F408 BCC 0x02B8
02B7 CF9F RJMP 0x0257
(0174) }
(0175) }
(0176) }
(0177) for(i=0;i<buffer_max;i++)
02B8 2700 CLR R16
02B9 C00C RJMP 0x02C6
(0178) counter_buffer[i]=0;
02BA E082 LDI R24,2
02BB 9F80 MUL R24,R16
02BC 01F0 MOVW R30,R0
02BD E880 LDI R24,0x80
02BE E090 LDI R25,0
02BF 0FE8 ADD R30,R24
02C0 1FF9 ADC R31,R25
02C1 2422 CLR R2
02C2 2433 CLR R3
02C3 8231 STD Z+1,R3
02C4 8220 STD Z+0,R2
02C5 9503 INC R16
02C6 340B CPI R16,0x4B
02C7 F390 BCS 0x02BA
(0179) rece_data_count=0;
02C8 2422 CLR R2
02C9 9220007E STS rece_data_count,R2
(0180) flag_start=0;
02CB 9220007F STS flag_start,R2
(0181) TCCR1B=0;
02CD BC2E OUT 0x2E,R2
(0182) TCNT1=0;
02CE 2433 CLR R3
02CF BC3D OUT 0x2D,R3
02D0 BC2C OUT 0x2C,R2
(0183) flag_t0=0;
02D1 9220007C STS flag_t0,R2
(0184) return;
02D3 C01D RJMP 0x02F1
(0185)
(0186) }
(0187)
(0188) //如果不是有效数据
(0189)
(0190) for(i=0;i<buffer_max;i++)
02D4 2700 CLR R16
02D5 C00C RJMP 0x02E2
(0191) counter_buffer[i]=0;
02D6 E082 LDI R24,2
02D7 9F80 MUL R24,R16
02D8 01F0 MOVW R30,R0
02D9 E880 LDI R24,0x80
02DA E090 LDI R25,0
02DB 0FE8 ADD R30,R24
02DC 1FF9 ADC R31,R25
02DD 2422 CLR R2
02DE 2433 CLR R3
02DF 8231 STD Z+1,R3
02E0 8220 STD Z+0,R2
02E1 9503 INC R16
02E2 340B CPI R16,0x4B
02E3 F390 BCS 0x02D6
(0192) rece_data_count=0;
02E4 2422 CLR R2
02E5 9220007E STS rece_data_count,R2
(0193) flag_start=0;
02E7 9220007F STS flag_start,R2
(0194) TCCR1B=0;
02E9 BC2E OUT 0x2E,R2
(0195) TCNT1=0;
02EA 2433 CLR R3
02EB BC3D OUT 0x2D,R3
02EC BC2C OUT 0x2C,R2
(0196) flag_t0=0;
02ED 9220007C STS flag_t0,R2
(0197) GICR = 0x80;//打开外部中断1
02EF E880 LDI R24,0x80
02F0 BF8B OUT 0x3B,R24
(0198)
(0199) }
FILE: <library>
02F1 9009 LD R0,Y+
02F2 BE0F OUT 0x3F,R0
02F3 91F9 LD R31,Y+
02F4 91E9 LD R30,Y+
02F5 9199 LD R25,Y+
02F6 9189 LD R24,Y+
02F7 9119 LD R17,Y+
02F8 9109 LD R16,Y+
02F9 9039 LD R3,Y+
02FA 9029 LD R2,Y+
02FB 9019 LD R1,Y+
02FC 9009 LD R0,Y+
02FD 9518 RETI
mod16u:
02FE 9468 BSET 6
02FF C001 RJMP xdiv16u
div16u:
0300 94E8 BCLR 6
xdiv16u:
0301 92EA ST R14,-Y
0302 92FA ST R15,-Y
0303 938A ST R24,-Y
0304 24EE CLR R14
0305 24FF CLR R15
0306 E180 LDI R24,0x10
0307 0F00 LSL R16
0308 1F11 ROL R17
0309 1CEE ROL R14
030A 1CFF ROL R15
030B 16E2 CP R14,R18
030C 06F3 CPC R15,R19
030D F018 BCS 0x0311
030E 1AE2 SUB R14,R18
030F 0AF3 SBC R15,R19
0310 9503 INC R16
0311 958A DEC R24
0312 F7A1 BNE 0x0307
0313 F416 BRTC 0x0316
0314 2D0E MOV R16,R14
0315 2D1F MOV R17,R15
0316 9189 LD R24,Y+
0317 90F9 LD R15,Y+
0318 90E9 LD R14,Y+
0319 9508 RET
empy16s:
031A 920A ST R0,-Y
031B 921A ST R1,-Y
031C 938A ST R24,-Y
031D 939A ST R25,-Y
031E 9F02 MUL R16,R18
031F 01C0 MOVW R24,R0
0320 9F12 MUL R17,R18
0321 0D90 ADD R25,R0
0322 9F03 MUL R16,R19
0323 0D90 ADD R25,R0
0324 018C MOVW R16,R24
0325 9199 LD R25,Y+
0326 9189 LD R24,Y+
0327 9019 LD R1,Y+
0328 9009 LD R0,Y+
0329 9508 RET
pop_gset2:
032A E0E2 LDI R30,2
032B C00E RJMP pop
pop_gset3:
032C E0E4 LDI R30,4
032D C00C RJMP pop
push_gset5:
032E 92FA ST R15,-Y
032F 92EA ST R14,-Y
push_gset4:
0330 92DA ST R13,-Y
0331 92CA ST R12,-Y
push_gset3:
0332 92BA ST R11,-Y
0333 92AA ST R10,-Y
push_gset2:
0334 937A ST R23,-Y
0335 936A ST R22,-Y
push_gset1:
0336 935A ST R21,-Y
0337 934A ST R20,-Y
0338 9508 RET
pop_gset1:
0339 E0E1 LDI R30,1
pop:
033A 9149 LD R20,Y+
033B 9159 LD R21,Y+
033C FDE0 SBRC R30,0
033D 9508 RET
033E 9169 LD R22,Y+
033F 9179 LD R23,Y+
0340 FDE1 SBRC R30,1
0341 9508 RET
0342 90A9 LD R10,Y+
0343 90B9 LD R11,Y+
0344 FDE2 SBRC R30,2
0345 9508 RET
0346 90C9 LD R12,Y+
0347 90D9 LD R13,Y+
0348 FDE3 SBRC R30,3
0349 9508 RET
034A 90E9 LD R14,Y+
034B 90F9 LD R15,Y+
034C 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -