📄 liubo.txt
字号:
D0809 EQU 9000H ;0809控制字口地址
SPDTR EQU 20H ;速度值(延时时间)暂存器
STEPPT EQU 21H ;步进码表指针
DIRL EQU 22H ;方向(步进码表首址)值暂存器低位
DIRH EQU 23H ;方向(步进码表首址)值暂存器高位
SWITCH EQU 24H ;开关状态码暂存器
POSITION1 EQU 44H ;位置暂存器
ORG 0000H
LJMP START
ORG 000BH
LJMP RUNINT ;步进电动机运行程序
ORG 0100H
START: MOV SP,#50H
LCALL INIT ;调用初始化子程序
LPRUN: LCALL CHKSWITCH ;调用开关状态检测子程序
LCALL CHKPOS ;调用位置检测子程序
SJMP LPRUN
INIT: CLR EA ;初始化子程序
SETB 0B2H
SETB 0B3H
MOV A,#0H
MOV SBUF,A
MOV DPTR,#MRSTEP ;初始化方向暂存器
MOV DIRH,DPH
MOV DIRL,DPL
MOV SPDTR,#7FH ;初始化速度暂存器
MOV SWITCH,#00H ;初始化开关状态暂存器
MOV TMOD,#00H ;T0设为定时器方式0
SETB ET0 ;T0中断允许
SETB EA ;开中断
RET ;初始化子程序返回
CHKSWITCH:MOV C,0B2H ;开关状态检测子程序
MOV 0E0H,C ;读入开关状态
MOV C,0B3H
MOV 0E7H,C
ANL A,#81H ;屏蔽无效位
CJNE A,SWITCH,$+6 ;开关状态
LJMP SWITCHRET ;未改变则子程序返回
MOV SWITCH,A ;保存新的开关状态值
CLR TR0 ;关定时器T0
RLC A ;检测K8状态
JC $+7
MOV DPTR,#MLSTEP ;为0则保存左移码表首址
SJMP $+5
MOV DPTR,#MRSTEP ;为1则保存右移码表首址
MOV DIRL,DPL ;保存码表首址于方向暂存器中
MOV DIRH,DPH
RRC A
RRC A
JNC $+4
SETB TR0 ;开T0中断
SWITCHRET:RET
CHKPOS:MOV DPTR,#D0809
MOV A,#02H
MOVX @DPTR,A
LCALL DELAY
MOVX A,@DPTR ;读取转换结果
MOV POSITION1,A
MOV B,#0CH ;0CH为每大格的数字量差值
DIV AB ;计算当前位置
CJNE A,#10H,CH0
MOV A,#16H
CH0: MOV R0,A
ANL A,#0FH
CJNE A,#0AH,CH1
CH1: JNC LP3
MOV DPTR ,#TAB
MOVC A,@A+DPTR
MOV SBUF,A
LCALL LP1
MOV A,R0
SWAP A
LP0: ANL A,#0FH
MOVC A,@A+DPTR
MOV SBUF,A
LP1: MOV R7,#0FH
LP2: DJNZ R7,LP2
RET
LP3: CLR C
SUBB A,#0AH
MOV DPTR ,#TAB
MOVC A,@A+DPTR
MOV SBUF,A
LCALL LP1
MOV A,R0
SWAP A
INC A
AJMP LP0
RUNINT:PUSH PSW
PUSH ACC
PUSH DPH
PUSH DPL
CLR TR0
MOV TH0,SPDTR
MOV TL0,#00H
SETB TR0
MOV A,STEPPT
INC A
ANL A,#07H
MOV STEPPT,A
MOV DPH,DIRH
MOV DPL,DIRL
MOVC A,@A+DPTR
MOV P1,A
POP DPL
POP DPH
POP ACC
POP PSW
RETI
DELAY: MOV R2,#0FH
MOV R3,#0FFH
DJNZ R3,$
DJNZ R2,$-4
RET
POS: DB 7FH,8DH,9BH,0A9H,0B7H,0C5H,0D3H,0E1H,0EFH,0FDH
MRSTEP: DB 0F1H,0F3H,0F2H,0F6H,0F4H,0FCH,0F8H,0F9H
MLSTEP: DB 0F9H,0F8H,0FCH,0F4H,0F6H,0F2H,0F3H,0F1H
TAB: DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H
DB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -