下面程序完成的主要功能:實現(xiàn)步進電機的正反轉(zhuǎn),加速、減速;顯示電機轉(zhuǎn)速(轉(zhuǎn)速級別)和工作狀態(tài)(正轉(zhuǎn)、反轉(zhuǎn)、不轉(zhuǎn))。
源程序
SPEED EQU 10H ;SPEED為轉(zhuǎn)速等級標志,共7級,即1~7
FX EQU 11H ;FX 為方向標志
COUNT EQU 12H ;COUNT中斷次數(shù)標志
ORG 0000H
AJMP MAIN
ORG 0003H ;外部中斷0入口地址,加速子程序
AJMP UP
ORG 0013H ;外部中斷1入口地址,減速子程序
AJMP DOWN
ORG 000BH ;定時器0中斷入口地址,控制中斷次數(shù)來達到控制轉(zhuǎn)速 AJMP ZDT0
ORG 0030H
MAIN: MOV SP,#60H
MOV TMOD,#01H ;工作于定時、軟件置位啟動,模式1(16 位計時器)
MOV TH0,#0CFH
MOV TL0,#2CH
MOV COUNT,#01H
SETB ET0 ;定時/計數(shù)器允許中斷
CLR IT0 ;外部中斷為電平觸發(fā)方式,低電平有效
CLR IT1
SETB EX0 ;外部允許中斷
SETB EX1
SETB EA ;開總中斷
MOV R1,#11H ;四相單四拍運行,共陽數(shù)碼管方向顯示8,速度值顯示0
MOV SPEED,#00H
MOV FX,#00H
XIANS: MOV A,SPEED
MOV DPTR,#LED
MOVC A,@A+DPTR ;查表獲取等級對應(yīng)數(shù)碼管代碼
MOV P2,A ;第二個數(shù)碼管顯示轉(zhuǎn)速等級
MOV A,F(xiàn)X ;準備判斷轉(zhuǎn)向
CJNE A,#11H,ELS
MOV P0, #0F9H ;第一個數(shù)碼管顯示 1,表示正轉(zhuǎn)
AJMP QD
ELS: CJNE A,#00H,ZHENG
MOV P0,#0C0H ;第一個數(shù)碼管顯示 0,表示不轉(zhuǎn)
AJMP QD
ZHENG: MOV P0,#0BFH ;第一個數(shù)碼管顯示-,表示反轉(zhuǎn)
QD: JB P3.4,DD ;P3.4 接啟動開關(guān) K1,P3.4=1 時啟動
CLR TR0 ;停止定時/計數(shù)器
MOV P0,#0C0H ;第一個數(shù)碼管顯示 0,表示不轉(zhuǎn)
MOV P2,#0C0H ;第二個數(shù)碼管顯示 0,表示轉(zhuǎn)速為 0
MOV SPEED,#00H ;重新賦初值
MOV FX,#00H
AJMP QD
DD: MOV A,SPEED
JNZ GO ;A 不等于 0,即初始速度不為零,則轉(zhuǎn)移到 GO
CLR TR0 ;停止定時/計數(shù)器
AJMP QD
GO: SETB TR0 ;開啟定時/計數(shù)器
ACALL DELAY
AJMP XIANS
DELAY: MOV R6,#10 ;延時子程序
DEL1: MOV R7,#250
HERE1: DJNZ R7, HERE1
DJNZ R6,DEL1
RET
評論