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