?? mstep.asm
字號(hào):
;FOR EAT598
PI EQU 0F208H ;開(kāi)關(guān)輸入口地址
PO EQU 0F200H ;輸出口地址
ORG 0000H
SJMP START
ORG 0040H
START:
MOV SP,#60H
CLR C
PUSH PSW
mov r5,#01110111B ;R5與C一起組成狀態(tài)存儲(chǔ)器
READ:
MOV DPTR,#PI
MOVX A,@DPTR ;讀開(kāi)關(guān)狀態(tài)
JB ACC.0,DIRECT0 ;判斷轉(zhuǎn)動(dòng)方向
JB ACC.1,DIRECT1 ;
SJMP READ ;正反向開(kāi)關(guān)均未開(kāi)則重讀開(kāi)關(guān)
DIRECT0:
MOV R7,#00H ;設(shè)置方向標(biāo)志
SJMP SPEED
DIRECT1:
MOV R7,#0FFH ;設(shè)置方向標(biāo)志
SPEED:
JB ACC.2,SPEED0 ;判定轉(zhuǎn)速開(kāi)關(guān)
JB ACC.3,SPEED1
JB ACC.4,SPEED2
JB ACC.5,SPEED3
JB ACC.6,SPEED4
JB ACC.7,SPEED5
AJMP READ ;無(wú)任何速度開(kāi),則重讀開(kāi)關(guān)
SPEED0: MOV R6,#61H ;設(shè)置轉(zhuǎn)速0常數(shù)
AJMP WAVE
SPEED1: MOV R6,#51H ;設(shè)置轉(zhuǎn)速1常數(shù)
AJMP WAVE
SPEED2: MOV R6,#31H ;設(shè)置轉(zhuǎn)速2常數(shù)
AJMP WAVE
SPEED3: MOV R6,#21H ;設(shè)置轉(zhuǎn)速3常數(shù)
AJMP WAVE
SPEED4: MOV R6,#11H ;設(shè)置轉(zhuǎn)速4常數(shù)
AJMP WAVE
SPEED5: MOV R6,#09H ;設(shè)置轉(zhuǎn)速5常數(shù)
MOV B,R6
WAVE:
LCALL DELAY ;延時(shí),決定轉(zhuǎn)速
DJNZ R6,WAVE
MOV DPTR,#PO ;置輸出口地址
MOV A,R5
CJNE R7,#00H,NEG ;判斷轉(zhuǎn)向標(biāo)志
POP PSW
RL A ;改變相位
SJMP SSS
NEG: POP PSW
RR A ;改變相位
SSS:
PUSH PSW
MOV R5,A ;保存相位
ANL A,#0FH
MOVX @DPTR,A ;相位輸出
AJMP READ
DELAY: ;延時(shí)子程序
MOV R0,#20H
delay1: mov r1,#04fh
djnz r1,$
DJNZ R0,delay1
RET
END
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -