📄 adc.lis
字号:
014C 1990 ld R1,y+
014E 0990 ld R0,y+
0150 .dbline 0 ; func end
0150 1895 reti
0152 .dbsym l j 0 l
0152 .dbend
0152 .dbfunc e AdcPedal _AdcPedal fi
0152 ; get -> y+0
0152 ; i -> R12
0152 ; adcp -> R10,R11
.even
0152 _AdcPedal::
0152 00D0 rcall push_gset4
0154 5801 movw R10,R16
0156 2497 sbiw R28,4
0158 .dbline -1
0158 .dbline 62
0158 ; }
0158 ;
0158 ; //************************************************
0158 ; //踏板信号转换为对应的控制值
0158 ; //前踩:200-6000
0158 ; //待机:高位 10
0158 ; //后一:高位 11
0158 ; //后二:高位 01
0158 ; //************************************************
0158 ; word AdcPedal(word adcp)
0158 ; {
0158 .dbline 66
0158 ; byte i;
0158 ; dword get;
0158 ;
0158 ; i = 0;
0158 CC24 clr R12
015A .dbline 68
015A ;
015A ; if (adcp <= PEDAL_STOP)
015A 86ED ldi R24,470
015C 91E0 ldi R25,1
015E 8A15 cp R24,R10
0160 9B05 cpc R25,R11
0162 20F0 brlo L4
0164 .dbline 69
0164 ; {
0164 .dbline 70
0164 ; i = 0x3;
0164 83E0 ldi R24,3
0166 C82E mov R12,R24
0168 .dbline 71
0168 ; adcp = 0;
0168 AA24 clr R10
016A BB24 clr R11
016C .dbline 72
016C ; }
016C L4:
016C .dbline 74
016C ;
016C ; if ((adcp>PEDAL_STOP) && (adcp<PEDAL_STARTL))
016C 86ED ldi R24,470
016E 91E0 ldi R25,1
0170 8A15 cp R24,R10
0172 9B05 cpc R25,R11
0174 48F4 brsh L6
0176 C501 movw R24,R10
0178 8431 cpi R24,20
017A E2E0 ldi R30,2
017C 9E07 cpc R25,R30
017E 20F4 brsh L6
0180 .dbline 75
0180 ; {
0180 .dbline 76
0180 ; i = 0x2;
0180 82E0 ldi R24,2
0182 C82E mov R12,R24
0184 .dbline 77
0184 ; adcp = 0;
0184 AA24 clr R10
0186 BB24 clr R11
0188 .dbline 78
0188 ; }
0188 L6:
0188 .dbline 80
0188 ;
0188 ; if (adcp >= PEDAL_STARTL)
0188 C501 movw R24,R10
018A 8431 cpi R24,20
018C E2E0 ldi R30,2
018E 9E07 cpc R25,R30
0190 08F4 brsh X0
0192 50C0 rjmp L8
0194 X0:
0194 .dbline 81
0194 ; {
0194 .dbline 82
0194 ; if (adcp > PEDAL_STARTH)
0194 8DEA ldi R24,941
0196 93E0 ldi R25,3
0198 8A15 cp R24,R10
019A 9B05 cpc R25,R11
019C 08F4 brsh L10
019E .dbline 83
019E ; {
019E .dbline 84
019E ; adcp = PEDAL_STARTH;
019E 5C01 movw R10,R24
01A0 .dbline 85
01A0 ; }
01A0 L10:
01A0 .dbline 86
01A0 ; get = adcp - PEDAL_STARTL;
01A0 C501 movw R24,R10
01A2 8451 subi R24,20
01A4 9240 sbci R25,2
01A6 1C01 movw R2,R24
01A8 4424 clr R4
01AA 5524 clr R5
01AC FE01 movw R30,R28
01AE 2082 std z+0,R2
01B0 3182 std z+1,R3
01B2 4282 std z+2,R4
01B4 5382 std z+3,R5
01B6 .dbline 87
01B6 ; get *= 5800;
01B6 FE01 movw R30,R28
01B8 2080 ldd R2,z+0
01BA 3180 ldd R3,z+1
01BC 4280 ldd R4,z+2
01BE 5380 ldd R5,z+3
01C0 48EA ldi R20,168
01C2 56E1 ldi R21,22
01C4 60E0 ldi R22,0
01C6 70E0 ldi R23,0
01C8 5A92 st -y,R5
01CA 4A92 st -y,R4
01CC 3A92 st -y,R3
01CE 2A92 st -y,R2
01D0 8A01 movw R16,R20
01D2 9B01 movw R18,R22
01D4 00D0 rcall empy32u
01D6 FE01 movw R30,R28
01D8 0083 std z+0,R16
01DA 1183 std z+1,R17
01DC 2283 std z+2,R18
01DE 3383 std z+3,R19
01E0 .dbline 88
01E0 ; get /= PEDAL_STARTH;
01E0 4DEA ldi R20,173
01E2 53E0 ldi R21,3
01E4 60E0 ldi R22,0
01E6 70E0 ldi R23,0
01E8 FE01 movw R30,R28
01EA 2080 ldd R2,z+0
01EC 3180 ldd R3,z+1
01EE 4280 ldd R4,z+2
01F0 5380 ldd R5,z+3
01F2 7A93 st -y,R23
01F4 6A93 st -y,R22
01F6 5A93 st -y,R21
01F8 4A93 st -y,R20
01FA 8101 movw R16,R2
01FC 9201 movw R18,R4
01FE 00D0 rcall div32u
0200 FE01 movw R30,R28
0202 0083 std z+0,R16
0204 1183 std z+1,R17
0206 2283 std z+2,R18
0208 3383 std z+3,R19
020A .dbline 89
020A ; get += 200;
020A 48EC ldi R20,200
020C 50E0 ldi R21,0
020E 60E0 ldi R22,0
0210 70E0 ldi R23,0
0212 FE01 movw R30,R28
0214 2080 ldd R2,z+0
0216 3180 ldd R3,z+1
0218 4280 ldd R4,z+2
021A 5380 ldd R5,z+3
021C 240E add R2,R20
021E 351E adc R3,R21
0220 461E adc R4,R22
0222 571E adc R5,R23
0224 FE01 movw R30,R28
0226 2082 std z+0,R2
0228 3182 std z+1,R3
022A 4282 std z+2,R4
022C 5382 std z+3,R5
022E .dbline 90
022E ; adcp = get;
022E FE01 movw R30,R28
0230 A080 ldd R10,z+0
0232 B180 ldd R11,z+1
0234 .dbline 91
0234 ; }
0234 L8:
0234 .dbline 93
0234 ;
0234 ; if (i == 3) //后一状态
0234 8C2D mov R24,R12
0236 8330 cpi R24,3
0238 19F4 brne L12
023A .dbline 94
023A ; {
023A .dbline 95
023A ; adcp |= 0xC000;
023A C501 movw R24,R10
023C 906C ori R25,192
023E 5C01 movw R10,R24
0240 .dbline 96
0240 ; }
0240 L12:
0240 .dbline 97
0240 ; if (i == 2) //待机状态
0240 8C2D mov R24,R12
0242 8230 cpi R24,2
0244 19F4 brne L14
0246 .dbline 98
0246 ; {
0246 .dbline 99
0246 ; adcp |= 0x8000;
0246 C501 movw R24,R10
0248 9068 ori R25,128
024A 5C01 movw R10,R24
024C .dbline 100
024C ; }
024C L14:
024C .dbline 102
024C ;
024C ; return adcp; //返回脚踏板转速值
024C 8501 movw R16,R10
024E .dbline -2
024E L3:
024E 2496 adiw R28,4
0250 00D0 rcall pop_gset4
0252 .dbline 0 ; func end
0252 0895 ret
0254 .dbsym l get 0 l
0254 .dbsym r i 12 c
0254 .dbsym r adcp 10 i
0254 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -