【正文】
區(qū)結(jié)束轉(zhuǎn)向減速高脈沖數(shù)判斷 MOV A,JIANSU_STEP_L ;判斷減速低脈沖數(shù)是否為0 CJNE A,0,JIANSU1 ;為0則轉(zhuǎn)向減速高脈沖數(shù)判斷 MOV A,JIANSU_STEP_H ;判斷減速高脈沖數(shù)是否為0 CJNE A,0,JIANSU2 ;為0則電機停止轉(zhuǎn)動 SETB FINISH ; RETIJIASU1: ;判斷加速低脈沖數(shù)不為0則減1 DEC JIASU_STEP_L ACALL REINIT_TIME0 ;重新裝入定時常數(shù) RETIJIASU2: DEC JIASU_STEP_H ;判斷加速高脈沖數(shù)不為0則減1 DEC JIASU_STEP_L ;判斷加速低脈沖數(shù)減1 INC DANGQIANSUDU ;改變當前速度指針 ACALL REINIT_TIME0 ;重新裝入定時常數(shù) RETIHENGSU1: DEC HENGSU_STEP_L ;判斷恒速低脈沖數(shù)不為0則減1 ACALL REINIT_TIME0 ;重新裝入定時常數(shù) RETIHENGSU2: DEC HENGSU_STEP_M ;判斷恒速低脈沖數(shù)不為0則減1 DEC HENGSU_STEP_L ;判斷恒速低脈沖數(shù)減1 ACALL REINIT_TIME0 ;重新裝入定時常數(shù) RETIHENGSU3: DEC HENGSU_STEP_H ;判斷恒速低脈沖數(shù)不為0則減1 DEC HENGSU_STEP_M ;判斷恒速低脈沖數(shù)減1 DEC HENGSU_STEP_L ;判斷恒速低脈沖數(shù)減1 ACALL REINIT_TIME0 ;重新裝入定時常數(shù) RETIJIANSU1: DEC JIANSU_STEP_L ;判斷減速低脈沖數(shù)不為0則減1 ACALL REINIT_TIME0 ;重新裝入定時常數(shù) RETI JIANSU2: DEC JIANSU_STEP_L ;判斷減速低脈沖數(shù)不為0則減1 DEC JIANSU_STEP_H ;判斷減速低脈沖數(shù)減1 DEC DANGQIANSUDU ;改變當前速度指針 ACALL REINIT_TIME0 ;重新裝入定時常數(shù) RETIREINIT_TIME0: ;定時器0時間常數(shù)重裝子程序 MOV A,DANGQIANSUDU ;取得當前速度指針位置 MOV DPL,A MOV DPH,02H CLR A MOVC A,A+DPTR ;查表取出指針所對應(yīng)的周期時間常數(shù)低字節(jié) MOV TL0,A MOV DPH,03H CLR A MOVC A,A+DPTR ;查表取出指針所對應(yīng)的周期時間常數(shù)低字節(jié) MOV TH0,A SETB TR0 ;重新啟動定時器0;如果是對步進電機的轉(zhuǎn)速,即周期有嚴格要求的情況下,應(yīng)對時間常數(shù)進行校正 RET;步進電機加減速時間常數(shù)表;當前數(shù)據(jù)表示電機運行頻率10Hz~2500Hz,可自行更改; 0 1 2 3 4 5 6 7 8 9 ORG 0200HSUDU_L: DB 0B0H,039H,00BH,092H,006H,08EH,074H,05AH,096H,05EH DB 0D1H,005H,009H,0E8H,0A8H,050H,0E3H,067H,0DCH,045H DB 0A4H,0FBH,04AH,092H,0D5H,012H,04BH,07FH,0B0H,0DEH DB 008H,031H,056H,079H,09BH,0BAH,0D8H,0F4H,00FH,028H DB 040H,057H,06DH,082H,096H,0A9H,0BCH,0CDH,0DEH,0EEH DB 0FDH,00CH,01BH,028H,036H,043H,04FH,05BH,066H,072H DB 07CH,087H,091H,09BH,0A4H,0ADH,0B6H,0BFH,0C7H,0CFH DB 0D7H,0DFH,0E7H,0EEH,0F5H,0FCH,003H,009H,00FH,016H DB 01CH,022H,027H,02DH,033H,038H,03DH,042H,047H,04CH DB 051H,056H,05AH,05FH,063H,068H,06CH,070H,074H,078H DB 07CH,080H,084H,087H,08BH,08EH,092H,095H,099H,09CH DB 09FH,0A2H,0A5H,0A8H,0ABH,0AEH,0B1H,0B4H,0B7H,0BAH DB 0BCH,0BFH,0C2H,0C4H,0C7H,0C9H,0CCH,0CEH,0D0H,0D3H DB 0D5H,0D7H,0DAH,0DCH,0DEH,0E0H,0E2H,0E4H,0E6H,0E8H DB 0EAH,0ECH,0EEH,0F0H,0F2H,0F4H,0F6H,0F8H,0F9H,0FBH DB 0FDH,0FFH,000H,002H,004H,005H,007H,008H,00AH,00BH DB 00DH,00EH,010H,011H,013H,014H,016H,017H,019H,01AH DB 01BH,01DH,01EH,01FH,020H,022H,023H,024H,025H,027H DB 028H,029H,02AH,02BH,02DH,02EH,02FH,030H,031H,032H DB 033H,034H,035H,036H,037H,038H; 0 1 2 3 4 5 6 7 8 9 ORG 0300HSUDU_H: DB 03CH,0AAH,0C9H,0D7H,0E0H,0E5H,0E9H,0ECH,0EEH,0F0H DB 0F1H,0F3H,0F4H,0F4H,0F5H,0F6H,0F6H,0F7H,0F7H,0F8H DB 0F8H,0F8H,0F9H,0F9H,0F9H,0FAH,0FAH,0FAH,0FAH,0FAH DB 0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FCH,0FCH DB 0FCH,0FCH,0FCH,0FCH,0FCH,0FCH,0FCH,0FCH,0FCH,0FCH DB 0FCH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH DB 0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH DB 0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FEH,0FEH,0FEH,0FEH DB 0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH DB 0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH DB 0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH DB 0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH DB 0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH DB 0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH DB 0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH DB 0FEH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH END附錄2 位置控制單片機程序如下:POS: CPL ; 電平狀態(tài) PUSH ACC ;累加器A進棧 PUSH PSW PUSH R0 ;R0進棧 JNB ,POS4 ; =0時,半個脈沖,轉(zhuǎn)到POS4 CLR EA ;關(guān)中斷 JNB ,POS1 ;反轉(zhuǎn),轉(zhuǎn)到POS1 MOV R0,32H ;正轉(zhuǎn)。[J]。電動機的單片機控制。上海交通大學(xué)出版社,2001,35,(10):15171520[3]周慶貴,黃章。[M]。初始R3=35H,R1,R2都有初使值。當減至0時,表明該速度檔步數(shù)已走完,進入下一檔速度。實際運行中,若步進電機運行頻率為fg,由式(公式31)可算出升速時間為: (32) 由于DSP是用定時器比較中斷方式來控制步進電機速度的,電機的加減速控制實際上是不斷改變定時器周期寄存器的裝載值。