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

📄 motor.lis

📁 直流电机驱动系统设计,以单片机实现电动机的调速控制.
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0156 0A93              st -y,R16
 0158 00910600          lds R16,_itime
 015C 10910700          lds R17,_itime+1
 0160 00D0              rcall int2fp
 0162 3A93              st -y,R19
 0164 2A93              st -y,R18
 0166 1A93              st -y,R17
 0168 0A93              st -y,R16
 016A 00D0              rcall mpy32f
 016C 00D0              rcall fp2int
 016E A02E              mov R10,R16
 0170 B12E              mov R11,R17
 0172                   .dbline 77
 0172           ;   y = TCNT1; 
 0172 CCB4              in R12,0x2c
 0174 DDB4              in R13,0x2d
 0176                   .dbline 78
 0176           ;   Ek=y-speed;
 0176 2C2C              mov R2,R12
 0178 3D2C              mov R3,R13
 017A 2E18              sub R2,R14
 017C 3F08              sbc R3,R15
 017E 30920100          sts _Ek+1,R3
 0182 20920000          sts _Ek,R2
 0186                   .dbline 79
 0186           ;   u=k[0]*((Ek-Ek_1)+(t/k[1])*Ek+(k[2]/t)*(Ek-2*Ek_1+Ek_2));
 0186 EC2F              mov R30,R28
 0188 FD2F              mov R31,R29
 018A 2280              ldd R2,z+2
 018C 3380              ldd R3,z+3
 018E 4480              ldd R4,z+4
 0190 5580              ldd R5,z+5
 0192 5A92              st -y,R5
 0194 4A92              st -y,R4
 0196 3A92              st -y,R3
 0198 2A92              st -y,R2
 019A 20900200          lds R2,_Ek_1
 019E 30900300          lds R3,_Ek_1+1
 01A2 00910000          lds R16,_Ek
 01A6 10910100          lds R17,_Ek+1
 01AA 0219              sub R16,R2
 01AC 1309              sbc R17,R3
 01AE 00D0              rcall int2fp
 01B0 3A93              st -y,R19
 01B2 2A93              st -y,R18
 01B4 1A93              st -y,R17
 01B6 0A93              st -y,R16
 01B8 0A2D              mov R16,R10
 01BA 1B2D              mov R17,R11
 01BC 00D0              rcall int2fp
 01BE 3A93              st -y,R19
 01C0 2A93              st -y,R18
 01C2 1A93              st -y,R17
 01C4 0A93              st -y,R16
 01C6 EC2F              mov R30,R28
 01C8 FD2F              mov R31,R29
 01CA            ; stack offset 12
 01CA 2288              ldd R2,z+18
 01CC 3388              ldd R3,z+19
 01CE 4488              ldd R4,z+20
 01D0 5588              ldd R5,z+21
 01D2 5A92              st -y,R5
 01D4 4A92              st -y,R4
 01D6 3A92              st -y,R3
 01D8 2A92              st -y,R2
 01DA 00D0              rcall div32fs
 01DC 00910000          lds R16,_Ek
 01E0 10910100          lds R17,_Ek+1
 01E4 00D0              rcall int2fp
 01E6 3A93              st -y,R19
 01E8 2A93              st -y,R18
 01EA 1A93              st -y,R17
 01EC 0A93              st -y,R16
 01EE 00D0              rcall mpy32fs
 01F0 00D0              rcall add32fs
 01F2 EC2F              mov R30,R28
 01F4 FD2F              mov R31,R29
 01F6            ; stack offset 8
 01F6 2288              ldd R2,z+18
 01F8 3388              ldd R3,z+19
 01FA 4488              ldd R4,z+20
 01FC 5588              ldd R5,z+21
 01FE 5A92              st -y,R5
 0200 4A92              st -y,R4
 0202 3A92              st -y,R3
 0204 2A92              st -y,R2
 0206 0A2D              mov R16,R10
 0208 1B2D              mov R17,R11
 020A 00D0              rcall int2fp
 020C 3A93              st -y,R19
 020E 2A93              st -y,R18
 0210 1A93              st -y,R17
 0212 0A93              st -y,R16
 0214 00D0              rcall div32fs
 0216 20900200          lds R2,_Ek_1
 021A 30900300          lds R3,_Ek_1+1
 021E 220C              lsl R2
 0220 331C              rol R3
 0222 00910000          lds R16,_Ek
 0226 10910100          lds R17,_Ek+1
 022A 0219              sub R16,R2
 022C 1309              sbc R17,R3
 022E 20900400          lds R2,_Ek_2
 0232 30900500          lds R3,_Ek_2+1
 0236 020D              add R16,R2
 0238 131D              adc R17,R3
 023A 00D0              rcall int2fp
 023C 3A93              st -y,R19
 023E 2A93              st -y,R18
 0240 1A93              st -y,R17
 0242 0A93              st -y,R16
 0244 00D0              rcall mpy32fs
 0246 00D0              rcall add32fs
 0248 00D0              rcall mpy32f
 024A EC2F              mov R30,R28
 024C FD2F              mov R31,R29
 024E 0687              std z+14,R16
 0250 1787              std z+15,R17
 0252 208B              std z+16,R18
 0254 318B              std z+17,R19
 0256                   .dbline 80
 0256           ;   z=u/U1*0xFF;
 0256 00E0              ldi R16,<L26
 0258 10E0              ldi R17,>L26
 025A 00D0              rcall lpm32
 025C 3A93              st -y,R19
 025E 2A93              st -y,R18
 0260 1A93              st -y,R17
 0262 0A93              st -y,R16
 0264 EC2F              mov R30,R28
 0266 FD2F              mov R31,R29
 0268            ; stack offset 4
 0268 2288              ldd R2,z+18
 026A 3388              ldd R3,z+19
 026C 4488              ldd R4,z+20
 026E 5588              ldd R5,z+21
 0270 5A92              st -y,R5
 0272 4A92              st -y,R4
 0274 3A92              st -y,R3
 0276 2A92              st -y,R2
 0278 00E0              ldi R16,<L27
 027A 10E0              ldi R17,>L27
 027C 00D0              rcall lpm32
 027E 3A93              st -y,R19
 0280 2A93              st -y,R18
 0282 1A93              st -y,R17
 0284 0A93              st -y,R16
 0286 00D0              rcall div32fs
 0288 00D0              rcall mpy32f
 028A 00D0              rcall fp2int
 028C 1D8B              std y+21,R17
 028E 0C8B              std y+20,R16
 0290                   .dbline 81
 0290           ;   temp1=OCR2;
 0290 43B5              in R20,0x23
 0292                   .dbline 82
 0292           ;   if(flage==1)                            //监控状态
 0292 80910600          lds R24,_flage
 0296 8130              cpi R24,1
 0298 91F4              brne L28
 029A                   .dbline 83
 029A           ;   {Data[4]=0xD0;
 029A                   .dbline 83
 029A 80ED              ldi R24,208
 029C 80931400          sts _Data+4,R24
 02A0                   .dbline 84
 02A0           ;    Data[5]=temp1;
 02A0 40931500          sts _Data+5,R20
 02A4                   .dbline 85
 02A4           ;    Data[6]=y>>8;
 02A4 2C2C              mov R2,R12
 02A6 3D2C              mov R3,R13
 02A8 232C              mov R2,R3
 02AA 3324              clr R3
 02AC 27FC              sbrc R2,7
 02AE 3094              com R3
 02B0 20921600          sts _Data+6,R2
 02B4                   .dbline 86
 02B4           ;    Data[7]=y;
 02B4 C0921700          sts _Data+7,R12
 02B8                   .dbline 87
 02B8           ;    Putdata(Data);} 
 02B8 00E0              ldi R16,<_Data
 02BA 10E0              ldi R17,>_Data
 02BC A1DE              rcall _Putdata
 02BE                   .dbline 87
 02BE           L28:
 02BE                   .dbline 88
 02BE           ;   temp1=temp1+z;
 02BE 242E              mov R2,R20
 02C0 3324              clr R3
 02C2 0C88              ldd R0,y+20
 02C4 1D88              ldd R1,y+21
 02C6 200C              add R2,R0
 02C8 311C              adc R3,R1
 02CA 422D              mov R20,R2
 02CC                   .dbline 89
 02CC           ;   if(temp1<=0)                           //结果小于0时输出0
 02CC 2224              clr R2
 02CE 2416              cp R2,R20
 02D0 08F0              brlo L34
 02D2                   .dbline 90
 02D2           ;    temp1 = 0x00;
 02D2 4427              clr R20
 02D4           L34:
 02D4                   .dbline 91
 02D4           ;   if(temp1>=0xF0)                        //结果大于0xF0时输出0xF0 
 02D4 403F              cpi R20,240
 02D6 08F0              brlo L36
 02D8                   .dbline 92
 02D8           ;    temp1 = 0xF0;
 02D8 40EF              ldi R20,240
 02DA           L36:
 02DA                   .dbline 93
 02DA           ;   OCR2=temp1;
 02DA 43BD              out 0x23,R20
 02DC                   .dbline 94
 02DC           ;   Ek_2 = Ek_1;
 02DC 20900200          lds R2,_Ek_1
 02E0 30900300          lds R3,_Ek_1+1
 02E4 30920500          sts _Ek_2+1,R3
 02E8 20920400          sts _Ek_2,R2
 02EC                   .dbline 95
 02EC           ;   Ek_1 = Ek;
 02EC 20900000          lds R2,_Ek
 02F0 30900100          lds R3,_Ek+1
 02F4 30920300          sts _Ek_1+1,R3
 02F8 20920200          sts _Ek_1,R2
 02FC                   .dbline 96
 02FC           ;   TCNT1 = 0x0000;                          //计数器清零
 02FC 2224              clr R2
 02FE 3324              clr R3
 0300 3DBC              out 0x2d,R3
 0302 2CBC              out 0x2c,R2
 0304                   .dbline -2
 0304                   .dbline 97
 0304           ; }
 0304           L18:
 0304 6696              adiw R28,22
 0306 00D0              rcall pop_gset5
 0308                   .dbline 0 ; func end
 0308 0895              ret
 030A                   .dbsym r speed 14 I
 030A                   .dbsym l z 20 I
 030A                   .dbsym l u 14 D
 030A                   .dbsym r t 10 I
 030A                   .dbsym r y 12 I
 030A                   .dbsym r temp1 20 c
 030A                   .dbsym l k 2 A[12:3]D
 030A                   .dbsym l i 18 I
 030A                   .dbend
 030A                   .dbfunc e USARTInit _USARTInit fV
 030A           ;       baudrate -> R16,R17
                        .even
 030A           _USARTInit::
 030A                   .dbline -1
 030A                   .dbline 101
 030A           ; 
 030A           ; //***************************串口初始化函数************************//                   
 030A           ; void USARTInit(int baudrate)    
 030A           ; {UCR = (1<<TXEN)|(1<<RXCIE)|(1<<RXEN);    //设置收发使能,接受中断允许
 030A                   .dbline 101
 030A 88E9              ldi R24,152
 030C 8AB9              out 0xa,R24
 030E                   .dbline 102
 030E           ;   UBRR = baudrate;                        //设置波特率寄存器
 030E 09B9              out 0x9,R16
 0310                   .dbline -2
 0310                   .dbline 103
 0310           ; }
 0310           L38:
 0310                   .dbline 0 ; func end
 0310 0895              ret
 0312                   .dbsym r baudrate 16 I
 0312                   .dbend
 0312                   .dbfunc e Eepromdata _Eepromdata fV
                        .even
 0312           _Eepromdata::
 0312 2297              sbiw R28,2
 0314                   .dbline -1
 0314                   .dbline 107
 0314           ; 
 0314           ; //***************************读EEPROM函数**************************//
 0314           ; void Eepromdata(void)
 0314           ; {if((adress==0x0000)||(adress==0x0004)||(adress==0x0008)) //地址判断
 0314                   .dbline 107
 0314 20900E00          lds R2,_adress
 0318 30900F00          lds R3,_adress+1
 031C 2220              tst R2
 031E 11F4              brne X0
 0320 3320              tst R3
 0322 61F0              breq L43
 0324           X0:
 0324 80910E00          lds R24,_adress
 0328 90910F00          lds R25,_adress+1
 032C 8430              cpi R24,4
 032E E0E0              ldi R30,0
 0330 9E07              cpc R25,R30
 0332 21F0              breq L43
 0334 8830              cpi R24,8
 0336 E0E0              ldi R30,0
 0338 9E07              cpc R25,R30
 033A 61F4              brne L40
 033C           L43:
 033C                   .dbline 108
 033C           ;  EEPROMReadBytes(adress,&Data[4],4);
 033C 84E0              ldi R24,4
 033E 90E0              ldi R25,0
 0340 9983              std y+1,R25
 0342 8883              std y+0,R24
 0344 20E0              ldi R18,<_Data+4
 0346 30E0              ldi R19,>_Data+4
 0348 00910E00          lds R16,_adress
 034C 10910F00          lds R17,_adress+1
 0350 00D0              rcall _EEPROMReadBytes
 0352 0BC0              rjmp L41
 0354           L40:
 0354                   .dbline 110
 0354           ;  else
 0354           ;  EEPROMReadBytes(adress,&Data[6],2);
 0354 82E0              ldi R24,2
 0356 90E0              ldi R25,0
 0358 9983              std y+1,R25
 035A 8883              std y+0,R24
 035C 20E0              ldi R18,<_Data+6
 035E 30E0              ldi R19,>_Data+6
 0360 00910E00          lds R16,_adress
 0364 10910F00          lds R17,_adress+1
 0368 00D0              rcall _EEPROMReadBytes
 036A           L41:
 036A                   .dbline 111
 036A           ;  switch(adress)
 036A 80910E00          lds R24,_adress
 036E 90910F00          lds R25,_adress+1
 0372 8430              cpi R24,4
 0374 E0E0              ldi R30,0
 0376 9E07              cpc R25,R30
 0378 99F1              breq L50
 037A 84E0              ldi R24,4
 037C 90E0              ldi R25,0
 037E 20900E00          lds R2,_adress
 0382 30900F00          lds R3,_adress+1
 0386 8215              cp R24,R2
 0388 9305              cpc R25,R3
 038A 4CF0              brlt L61
 038C           L60:
 038C 20900E00          lds R2,_adress
 0390 30900F00          lds R3,_adress+1
 0394 2220              tst R2
 0396 11F4              brne X1
 0398 3320              tst R3
 039A F1F0              breq L48
 039C           X1:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -