⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc.lis

📁 平缝机的单片机伺服控制系统源代码。本程序为用单片机控制永磁同步电机的低成本方案
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -