?? bjkz.asm
字號(hào):
;步進(jìn)電機(jī)控制程序
;**************************************************************************
;主程序
ORG 000H
MOV R0,#40H ;暫存鍵值
START: MOV DPTR,#8FFFH ;8279初始化清除命令
MOV A,#0D1H
MOVX @DPTR,A
WAIT: MOVX A,@DPTR ;等8279清除結(jié)束
JB ACC.7,WAIT
MOV A,#00 ;8279送方式命令
MOVX @DPTR,A
MOV A,#34H ;fosc=12Mhz時(shí)鐘編程命令
MOVX @DPTR,A
LOOP1: MOV DPTR,#8FFFH ;指向命令 狀態(tài)口
LOOP2: MOVX A,@DPTR ;讀8279狀態(tài)字
ANL A,#0FH ;讀狀態(tài)字低字位
JZ LOOP2 ;FIFO中無(wú)鍵時(shí)等待鍵輸入
MOV A,#40H ;讀FIFORAM命令
MOVX @DPTR,A
MOV DPTR,#8FFEH ;指向數(shù)據(jù)口地址
MOVX A,@DPTR ;讀入鍵值
MOV @R0,A ;暫存鍵值
LOOP3: CJNE A,#00H,LOOP4 ;是正轉(zhuǎn)鍵嗎?否轉(zhuǎn)LOOP4
MOV P1,#10H ;是,則正向輸出第一拍
ACALL DELAY ;延時(shí)
MOV P1,#30H ;輸出第二拍
ACALL DELAY ;延時(shí)
MOV P1,#20H ;輸出第三拍
ACALL DELAY ;延時(shí)
MOV P1,#60H ;輸出第四拍
ACALL DELAY ;延時(shí)
MOV P1,#40H ;輸出第五拍
ACALL DELAY ;延時(shí)
MOV P1,#0C0H ;輸出第六拍
ACALL DELAY ;延時(shí)
MOV P1,#80H ;輸出第七拍
ACALL DELAY ;延時(shí)
MOV P1,#90H ;輸出第八拍
ACALL DELAY ;延時(shí)
LOOP4: MOV A,@R0 ;取出鍵值
CJNE A,#01H,LOOP5 ;是反轉(zhuǎn)鍵嗎?否轉(zhuǎn)LOOP5
MOV P1,#90H ;反向輸出第一拍
ACALL DELAY ;延時(shí)
MOV P1,#80H ;輸出第二拍
ACALL DELAY ;延時(shí)
MOV P1,#0C0H ;輸出第三拍
ACALL DELAY ;延時(shí)
MOV P1,#40H ;輸出第四拍
ACALL DELAY ;延時(shí)
MOV P1,#60H ;輸出第五拍
ACALL DELAY ;延時(shí)
MOV P1,#20H ;輸出第六拍
ACALL DELAY ;延時(shí)
MOV P1,#30H ;輸出第七拍
ACALL DELAY ;延時(shí)
MOV P1,#10H ;輸出第八拍
ACALL DELAY ;延時(shí)
LOOP5: MOV A,@R0 ;取出鍵值
CJNE A,#03H,LOOP2 ;是停止鍵嗎?否轉(zhuǎn)LOOP2
MOV P1,#00H ;是則停轉(zhuǎn)
DELAY: MOV R7,#20H ;延時(shí)
D1: MOV R6,#248
DJNZ R6,$
DJNZ R7,D1
RET
END
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -