📄 main.lis
字号:
00D8 ; temp = adc_colect(1);
00D8 01E0 ldi R16,1
00DA 00D0 rcall _adc_colect
00DC A801 movw R20,R16
00DE .dbline 130
00DE ; if(temp<0x1D0 && power<200) power ++;
00DE 003D cpi R16,208
00E0 E1E0 ldi R30,1
00E2 1E07 cpc R17,R30
00E4 40F4 brsh L20
00E6 80910300 lds R24,_power
00EA 883C cpi R24,200
00EC 20F4 brsh L20
00EE .dbline 130
00EE 8F5F subi R24,255 ; addi 1
00F0 80930300 sts _power,R24
00F4 08C0 rjmp L21
00F6 L20:
00F6 .dbline 131
00F6 ; else if(temp>0x1DF)power = 0;
00F6 8FED ldi R24,479
00F8 91E0 ldi R25,1
00FA 8417 cp R24,R20
00FC 9507 cpc R25,R21
00FE 18F4 brsh L22
0100 .dbline 131
0100 2224 clr R2
0102 20920300 sts _power,R2
0106 L22:
0106 L21:
0106 .dbline 133
0106 ;
0106 ; if(power>3 && PWM<50)
0106 83E0 ldi R24,3
0108 20900300 lds R2,_power
010C 8215 cp R24,R2
010E E0F4 brsh L24
0110 80910D00 lds R24,_PWM
0114 8233 cpi R24,50
0116 C0F4 brsh L24
0118 .dbline 134
0118 ; {
0118 .dbline 135
0118 ; PWM = 0;
0118 2224 clr R2
011A 20920D00 sts _PWM,R2
011E .dbline 136
011E ; Pwm_set(0,0);
011E 2227 clr R18
0120 0027 clr R16
0122 00D0 rcall _Pwm_set
0124 .dbline 137
0124 ; delay(5);
0124 05E0 ldi R16,5
0126 10E0 ldi R17,0
0128 AEDF rcall _delay
012A .dbline 138
012A ; temp = 0;
012A 4427 clr R20
012C 5527 clr R21
012E 08C0 rjmp L27
0130 L26:
0130 .dbline 140
0130 .dbline 141
0130 01E0 ldi R16,1
0132 00D0 rcall _adc_colect
0134 A801 movw R20,R16
0136 .dbline 142
0136 C6DF rcall _LED_set
0138 .dbline 143
0138 3ED1 rcall _Buz
013A .dbline 144
013A 04E1 ldi R16,20
013C 10E0 ldi R17,0
013E A3DF rcall _delay
0140 .dbline 145
0140 L27:
0140 .dbline 139
0140 ; while(temp<0x1df)
0140 4F3D cpi R20,223
0142 E1E0 ldi R30,1
0144 5E07 cpc R21,R30
0146 A0F3 brlo L26
0148 .dbline 146
0148 ; {
0148 ; temp = adc_colect(1);
0148 ; LED_set();
0148 ; Buz();
0148 ; delay(20);
0148 ; }
0148 ; }
0148 L24:
0148 .dbline 149
0148 ;
0148 ;
0148 ; temp = adc_colect(2);
0148 02E0 ldi R16,2
014A 00D0 rcall _adc_colect
014C A801 movw R20,R16
014E .dbline 150
014E ; if(temp>0x3BF && heat<200) heat ++; // >110度
014E 8FEB ldi R24,959
0150 93E0 ldi R25,3
0152 8017 cp R24,R16
0154 9107 cpc R25,R17
0156 40F4 brsh L29
0158 80910200 lds R24,_heat
015C 883C cpi R24,200
015E 20F4 brsh L29
0160 .dbline 150
0160 8F5F subi R24,255 ; addi 1
0162 80930200 sts _heat,R24
0166 07C0 rjmp L30
0168 L29:
0168 .dbline 151
0168 ; else if(temp<0x38E)heat = 0; // <80度
0168 4E38 cpi R20,142
016A E3E0 ldi R30,3
016C 5E07 cpc R21,R30
016E 18F4 brsh L31
0170 .dbline 151
0170 2224 clr R2
0172 20920200 sts _heat,R2
0176 L31:
0176 L30:
0176 .dbline 153
0176 ;
0176 ; if(heat>3 && PWM<50)
0176 83E0 ldi R24,3
0178 20900200 lds R2,_heat
017C 8215 cp R24,R2
017E F8F4 brsh L33
0180 80910D00 lds R24,_PWM
0184 8233 cpi R24,50
0186 D8F4 brsh L33
0188 .dbline 154
0188 ; {
0188 .dbline 155
0188 ; PWM = 0;
0188 2224 clr R2
018A 20920D00 sts _PWM,R2
018E .dbline 156
018E ; Pwm_set(0,0);
018E 2227 clr R18
0190 0027 clr R16
0192 00D0 rcall _Pwm_set
0194 .dbline 157
0194 ; delay(5);
0194 05E0 ldi R16,5
0196 10E0 ldi R17,0
0198 76DF rcall _delay
019A .dbline 158
019A ; temp = 0xfff;
019A 4FEF ldi R20,4095
019C 5FE0 ldi R21,15
019E 0AC0 rjmp L36
01A0 L35:
01A0 .dbline 160
01A0 .dbline 161
01A0 02E0 ldi R16,2
01A2 00D0 rcall _adc_colect
01A4 A801 movw R20,R16
01A6 .dbline 162
01A6 8EDF rcall _LED_set
01A8 .dbline 163
01A8 8DDF rcall _LED_set
01AA .dbline 164
01AA 05D1 rcall _Buz
01AC .dbline 165
01AC 04D1 rcall _Buz
01AE .dbline 166
01AE 04E1 ldi R16,20
01B0 10E0 ldi R17,0
01B2 69DF rcall _delay
01B4 .dbline 167
01B4 L36:
01B4 .dbline 159
01B4 8EE8 ldi R24,910
01B6 93E0 ldi R25,3
01B8 8417 cp R24,R20
01BA 9507 cpc R25,R21
01BC 88F3 brlo L35
01BE .dbline 168
01BE L33:
01BE .dbline -2
01BE L19:
01BE 00D0 rcall pop_gset1
01C0 .dbline 0 ; func end
01C0 0895 ret
01C2 .dbsym r temp 20 i
01C2 .dbend
01C2 .dbfunc e Gun_set _Gun_set fV
.even
01C2 _Gun_set::
01C2 .dbline -1
01C2 .dbline 176
01C2 ; while(temp>0x38E)
01C2 ; {
01C2 ; temp = adc_colect(2);
01C2 ; LED_set();
01C2 ; LED_set();
01C2 ; Buz();
01C2 ; Buz();
01C2 ; delay(20);
01C2 ; }
01C2 ; }
01C2 ; }
01C2 ;
01C2 ; /*---------------------------------------------------------------
01C2 ; 油门处理
01C2 ; ----------------------------------------------------------------*/
01C2 ;
01C2 ; void Gun_set(void)
01C2 ; {
01C2 .dbline 177
01C2 ; if(rxd_flag) // 接收已完成
01C2 20900E00 lds R2,_rxd_flag
01C6 2220 tst R2
01C8 09F4 brne X0
01CA BFC0 rjmp L39
01CC X0:
01CC .dbline 178
01CC ; {
01CC .dbline 179
01CC ; rxd_flag = 0;
01CC 2224 clr R2
01CE 20920E00 sts _rxd_flag,R2
01D2 .dbline 181
01D2 ;
01D2 ; if(Timer>high) Timer = high; // 确保接收到的数据在正常范围内
01D2 20900900 lds R2,_high
01D6 30900A00 lds R3,_high+1
01DA 40900B00 lds R4,_Timer
01DE 50900C00 lds R5,_Timer+1
01E2 2414 cp R2,R4
01E4 3504 cpc R3,R5
01E6 20F4 brsh L41
01E8 .dbline 181
01E8 30920C00 sts _Timer+1,R3
01EC 20920B00 sts _Timer,R2
01F0 L41:
01F0 .dbline 182
01F0 ; if(Timer<low) Timer = low;
01F0 20900500 lds R2,_low
01F4 30900600 lds R3,_low+1
01F8 40900B00 lds R4,_Timer
01FC 50900C00 lds R5,_Timer+1
0200 4214 cp R4,R2
0202 5304 cpc R5,R3
0204 20F4 brsh L43
0206 .dbline 182
0206 30920C00 sts _Timer+1,R3
020A 20920B00 sts _Timer,R2
020E L43:
020E .dbline 184
020E ;
020E ; if(Timer>(middle+50)) // 前进 1550us
020E 80910700 lds R24,_middle
0212 90910800 lds R25,_middle+1
0216 C296 adiw R24,50
0218 20900B00 lds R2,_Timer
021C 30900C00 lds R3,_Timer+1
0220 8215 cp R24,R2
0222 9305 cpc R25,R3
0224 90F5 brsh L45
0226 .dbline 185
0226 ; {
0226 .dbline 186
0226 ; if(power>3 || heat>3)
0226 83E0 ldi R24,3
0228 20900300 lds R2,_power
022C 8215 cp R24,R2
022E 20F0 brlo L49
0230 20900200 lds R2,_heat
0234 8215 cp R24,R2
0236 30F4 brsh L47
0238 L49:
0238 .dbline 187
0238 ; {
0238 .dbline 188
0238 ; PWM --;
0238 80910D00 lds R24,_PWM
023C 8150 subi R24,1
023E 80930D00 sts _PWM,R24
0242 .dbline 189
0242 ; }
0242 1AC0 rjmp L48
0244 L47:
0244 .dbline 191
0244 ; else
0244 ; {
0244 .dbline 192
0244 ; PWM = ((Timer-middle)*10)/PE1; // 计算占空比
0244 20900700 lds R2,_middle
0248 30900800 lds R3,_middle+1
024C 20910B00 lds R18,_Timer
0250 30910C00 lds R19,_Timer+1
0254 2219 sub R18,R2
0256 3309 sbc R19,R3
0258 0AE0 ldi R16,10
025A 10E0 ldi R17,0
025C 00D0 rcall empy16s
025E 20911200 lds R18,_PE1
0262 30911300 lds R19,_PE1+1
0266 00D0 rcall div16u
0268 00930D00 sts _PWM,R16
026C .dbline 193
026C ; if(PWM>210) PWM = 255;
026C 82ED ldi R24,210
026E 8017 cp R24,R16
0270 18F4 brsh L50
0272 .dbline 193
0272 8FEF ldi R24,255
0274 80930D00 sts _PWM,R24
0278 L50:
0278 .dbline 195
0278 ;
0278 ; }
0278 L48:
0278 .dbline 196
0278 ; Pwm_set(PWM,1); // 设置PWM占空比
0278 21E0 ldi R18,1
027A 00910D00 lds R16,_PWM
027E 00D0 rcall _Pwm_set
0280 .dbline 197
0280 ; mode = 1;
0280 81E0 ldi R24,1
0282 80930F00 sts _mode,R24
0286 .dbline 198
0286 ; SET_LED;
0286 5C9A sbi 0xb,4
0288 .dbline 199
0288 ; }
0288 60C0 rjmp L46
028A L45:
028A .dbline 200
028A ; else if(Timer<(middle-50))
028A 80910700 lds R24,_middle
028E 90910800 lds R25,_middle+1
0292 C297 sbiw R24,50
0294 20900B00 lds R2,_Timer
0298 30900C00 lds R3,_Timer+1
029C 2816 cp R2,R24
029E 3906 cpc R3,R25
02A0 08F0 brlo X1
02A2 4FC0 rjmp L52
02A4 X1:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -