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

📄 adc.lis

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