📄 infrared_test.lis
字号:
0194 ; if(t0_counter>3)
0194 83E0 ldi R24,3
0196 20900100 lds R2,_t0_counter
019A 8215 cp R24,R2
019C 08F0 brlo X0
019E C9C0 rjmp L22
01A0 X0:
01A0 .dbline 117
01A0 ; {
01A0 .dbline 119
01A0 ;
01A0 ; GICR = 0x00; //关掉外部中断1
01A0 2224 clr R2
01A2 2BBE out 0x3b,R2
01A4 .dbline 120
01A4 ; TCCR0=0; //关掉T0
01A4 23BE out 0x33,R2
01A6 .dbline 121
01A6 ; TCNT0=0;
01A6 22BE out 0x32,R2
01A8 .dbline 122
01A8 ; TCCR1B=0; //关闭定时器 T1
01A8 2EBC out 0x2e,R2
01AA .dbline 123
01AA ; TCNT1=0; //定时器T1 清0
01AA 3324 clr R3
01AC 3DBC out 0x2d,R3
01AE 2CBC out 0x2c,R2
01B0 .dbline 125
01B0 ;
01B0 ; t0_counter=0;
01B0 20920100 sts _t0_counter,R2
01B4 .dbline 127
01B4 ;
01B4 ; if((counter_buffer[1]>4000)&&(counter_buffer[1]<5000)&&
01B4 80EA ldi R24,4000
01B6 9FE0 ldi R25,15
01B8 20900600 lds R2,_counter_buffer+2
01BC 30900700 lds R3,_counter_buffer+2+1
01C0 8215 cp R24,R2
01C2 9305 cpc R25,R3
01C4 08F0 brlo X1
01C6 98C0 rjmp L24
01C8 X1:
01C8 C101 movw R24,R2
01CA 8838 cpi R24,136
01CC E3E1 ldi R30,19
01CE 9E07 cpc R25,R30
01D0 08F0 brlo X2
01D2 92C0 rjmp L24
01D4 X2:
01D4 80E9 ldi R24,400
01D6 91E0 ldi R25,1
01D8 20908800 lds R2,_counter_buffer+132
01DC 30908900 lds R3,_counter_buffer+132+1
01E0 8215 cp R24,R2
01E2 9305 cpc R25,R3
01E4 08F0 brlo X3
01E6 88C0 rjmp L24
01E8 X3:
01E8 C101 movw R24,R2
01EA 8C3B cpi R24,188
01EC E2E0 ldi R30,2
01EE 9E07 cpc R25,R30
01F0 08F0 brlo X4
01F2 82C0 rjmp L24
01F4 X4:
01F4 .dbline 129
01F4 ; (counter_buffer[66]>400)&&(counter_buffer[66]<700))
01F4 ; {
01F4 .dbline 131
01F4 ; //如果是有效数据
01F4 ; rece_flag=1;
01F4 81E0 ldi R24,1
01F6 80939A00 sts _rece_flag,R24
01FA .dbline 132
01FA ; for(i=3;i<66;i+=2)
01FA 03E0 ldi R16,3
01FC 5EC0 rjmp L33
01FE L30:
01FE .dbline 133
01FE ; {
01FE .dbline 134
01FE ; if(counter_buffer[i]>800)
01FE 82E0 ldi R24,2
0200 809F mul R24,R16
0202 F001 movw R30,R0
0204 80E0 ldi R24,<_counter_buffer
0206 90E0 ldi R25,>_counter_buffer
0208 E80F add R30,R24
020A F91F adc R31,R25
020C 2080 ldd R2,z+0
020E 3180 ldd R3,z+1
0210 80E2 ldi R24,800
0212 93E0 ldi R25,3
0214 8215 cp R24,R2
0216 9305 cpc R25,R3
0218 80F5 brsh L34
021A .dbline 135
021A ; {
021A .dbline 136
021A ; if(i<18)
021A 0231 cpi R16,18
021C 50F4 brsh L36
021E .dbline 137
021E ; {
021E .dbline 138
021E ; infra_data[0]>>=1;
021E 20909B00 lds R2,_infra_data
0222 2694 lsr R2
0224 20929B00 sts _infra_data,R2
0228 .dbline 139
0228 ; infra_data[0]|=0x80;
0228 822D mov R24,R2
022A 8068 ori R24,128
022C 80939B00 sts _infra_data,R24
0230 .dbline 140
0230 ; }
0230 43C0 rjmp L35
0232 L36:
0232 .dbline 141
0232 ; else if(i<34)
0232 0232 cpi R16,34
0234 50F4 brsh L38
0236 .dbline 142
0236 ; {
0236 .dbline 143
0236 ; infra_data[1]>>=1;
0236 20909C00 lds R2,_infra_data+1
023A 2694 lsr R2
023C 20929C00 sts _infra_data+1,R2
0240 .dbline 144
0240 ; infra_data[1]|=0x80;
0240 822D mov R24,R2
0242 8068 ori R24,128
0244 80939C00 sts _infra_data+1,R24
0248 .dbline 145
0248 ; }
0248 37C0 rjmp L35
024A L38:
024A .dbline 146
024A ; else if(i<50)
024A 0233 cpi R16,50
024C 50F4 brsh L42
024E .dbline 147
024E ; {
024E .dbline 148
024E ; infra_data[2]>>=1;
024E 20909D00 lds R2,_infra_data+2
0252 2694 lsr R2
0254 20929D00 sts _infra_data+2,R2
0258 .dbline 149
0258 ; infra_data[2]|=0x80;
0258 822D mov R24,R2
025A 8068 ori R24,128
025C 80939D00 sts _infra_data+2,R24
0260 .dbline 150
0260 ; }
0260 2BC0 rjmp L35
0262 L42:
0262 .dbline 151
0262 ; else if(i<66)
0262 0234 cpi R16,66
0264 48F5 brsh L35
0266 .dbline 152
0266 ; {
0266 .dbline 153
0266 ; infra_data[3]>>=1;
0266 20909E00 lds R2,_infra_data+3
026A 2694 lsr R2
026C 20929E00 sts _infra_data+3,R2
0270 .dbline 154
0270 ; infra_data[3]|=0x80;
0270 822D mov R24,R2
0272 8068 ori R24,128
0274 80939E00 sts _infra_data+3,R24
0278 .dbline 155
0278 ; }
0278 .dbline 156
0278 ; }
0278 1FC0 rjmp L35
027A L34:
027A .dbline 158
027A ; else
027A ; {
027A .dbline 159
027A ; if(i<18)
027A 0231 cpi R16,18
027C 30F4 brsh L50
027E .dbline 160
027E ; {
027E .dbline 161
027E ; infra_data[0]>>=1;
027E 20909B00 lds R2,_infra_data
0282 2694 lsr R2
0284 20929B00 sts _infra_data,R2
0288 .dbline 162
0288 ; }
0288 17C0 rjmp L51
028A L50:
028A .dbline 163
028A ; else if(i<34)
028A 0232 cpi R16,34
028C 30F4 brsh L52
028E .dbline 164
028E ; {
028E .dbline 165
028E ; infra_data[1]>>=1;
028E 20909C00 lds R2,_infra_data+1
0292 2694 lsr R2
0294 20929C00 sts _infra_data+1,R2
0298 .dbline 166
0298 ; }
0298 0FC0 rjmp L53
029A L52:
029A .dbline 167
029A ; else if(i<50)
029A 0233 cpi R16,50
029C 30F4 brsh L55
029E .dbline 168
029E ; {
029E .dbline 169
029E ; infra_data[2]>>=1;
029E 20909D00 lds R2,_infra_data+2
02A2 2694 lsr R2
02A4 20929D00 sts _infra_data+2,R2
02A8 .dbline 170
02A8 ; }
02A8 07C0 rjmp L56
02AA L55:
02AA .dbline 171
02AA ; else if(i<66)
02AA 0234 cpi R16,66
02AC 28F4 brsh L58
02AE .dbline 172
02AE ; {
02AE .dbline 173
02AE ; infra_data[3]>>=1;
02AE 20909E00 lds R2,_infra_data+3
02B2 2694 lsr R2
02B4 20929E00 sts _infra_data+3,R2
02B8 .dbline 174
02B8 ; }
02B8 L58:
02B8 L56:
02B8 L53:
02B8 L51:
02B8 .dbline 175
02B8 ; }
02B8 L35:
02B8 .dbline 176
02B8 L31:
02B8 .dbline 132
02B8 0E5F subi R16,254 ; addi 2
02BA L33:
02BA .dbline 132
02BA 0234 cpi R16,66
02BC 08F4 brsh X5
02BE 9FCF rjmp L30
02C0 X5:
02C0 .dbline 177
02C0 ; }
02C0 ; for(i=0;i<buffer_max;i++)
02C0 0027 clr R16
02C2 0CC0 rjmp L64
02C4 L61:
02C4 .dbline 178
02C4 82E0 ldi R24,2
02C6 809F mul R24,R16
02C8 F001 movw R30,R0
02CA 80E0 ldi R24,<_counter_buffer
02CC 90E0 ldi R25,>_counter_buffer
02CE E80F add R30,R24
02D0 F91F adc R31,R25
02D2 2224 clr R2
02D4 3324 clr R3
02D6 3182 std z+1,R3
02D8 2082 std z+0,R2
02DA L62:
02DA .dbline 177
02DA 0395 inc R16
02DC L64:
02DC .dbline 177
02DC 0B34 cpi R16,75
02DE 90F3 brlo L61
02E0 .dbline 179
02E0 ; counter_buffer[i]=0;
02E0 ; rece_data_count=0;
02E0 2224 clr R2
02E2 20920200 sts _rece_data_count,R2
02E6 .dbline 180
02E6 ; flag_start=0;
02E6 20920300 sts _flag_start,R2
02EA .dbline 181
02EA ; TCCR1B=0;
02EA 2EBC out 0x2e,R2
02EC .dbline 182
02EC ; TCNT1=0;
02EC 3324 clr R3
02EE 3DBC out 0x2d,R3
02F0 2CBC out 0x2c,R2
02F2 .dbline 183
02F2 ; flag_t0=0;
02F2 20920000 sts _flag_t0,R2
02F6 .dbline 184
02F6 ; return;
02F6 1DC0 rjmp L21
02F8 L24:
02F8 .dbline 190
02F8 ;
02F8 ; }
02F8 ;
02F8 ; //如果不是有效数据
02F8 ;
02F8 ; for(i=0;i<buffer_max;i++)
02F8 0027 clr R16
02FA 0CC0 rjmp L68
02FC L65:
02FC .dbline 191
02FC 82E0 ldi R24,2
02FE 809F mul R24,R16
0300 F001 movw R30,R0
0302 80E0 ldi R24,<_counter_buffer
0304 90E0 ldi R25,>_counter_buffer
0306 E80F add R30,R24
0308 F91F adc R31,R25
030A 2224 clr R2
030C 3324 clr R3
030E 3182 std z+1,R3
0310 2082 std z+0,R2
0312 L66:
0312 .dbline 190
0312 0395 inc R16
0314 L68:
0314 .dbline 190
0314 0B34 cpi R16,75
0316 90F3 brlo L65
0318 .dbline 192
0318 2224 clr R2
031A 20920200 sts _rece_data_count,R2
031E .dbline 193
031E 20920300 sts _flag_start,R2
0322 .dbline 194
0322 2EBC out 0x2e,R2
0324 .dbline 195
0324 3324 clr R3
0326 3DBC out 0x2d,R3
0328 2CBC out 0x2c,R2
032A .dbline 196
032A 20920000 sts _flag_t0,R2
032E .dbline 197
032E 80E8 ldi R24,128
0330 8BBF out 0x3b,R24
0332 .dbline 199
0332 L22:
0332 .dbline -2
0332 L21:
0332 0990 ld R0,y+
0334 0FBE out 0x3f,R0
0336 F991 ld R31,y+
0338 E991 ld R30,y+
033A 9991 ld R25,y+
033C 8991 ld R24,y+
033E 1991 ld R17,y+
0340 0991 ld R16,y+
0342 3990 ld R3,y+
0344 2990 ld R2,y+
0346 1990 ld R1,y+
0348 0990 ld R0,y+
034A .dbline 0 ; func end
034A 1895 reti
034C .dbsym r i 16 c
034C .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\开发板\source\infrared\infrared_test\infrared_test.c
0000 _flag_t0::
0000 .blkb 1
0001 .dbsym e flag_t0 _flag_t0 c
0001 _t0_counter::
0001 .blkb 1
0002 .dbsym e t0_counter _t0_counter c
0002 _rece_data_count::
0002 .blkb 1
0003 .dbsym e rece_data_count _rece_data_count c
0003 _flag_start::
0003 .blkb 1
0004 .dbsym e flag_start _flag_start c
0004 _counter_buffer::
0004 .blkb 150
009A .dbsym e counter_buffer _counter_buffer A[150:75]i
009A _rece_flag::
009A .blkb 1
009B .dbsym e rece_flag _rece_flag c
009B _infra_data::
009B .blkb 4
009F .dbsym e infra_data _infra_data A[4:4]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -