利用 8253 实现步进电机转向和转速的控制

方法一程序:

IO3  EQU   30H
IO4  EQU   40H
DATA SEGMENT
  TABLE   DB 01H,03H,02H,06H,04H,0CH,08H,09H;
DATA ENDS
CODE    SEGMENT   
        ASSUME  CS:CODE,DS:DATA
START:  MOV     AX,DATA
        MOV     DS,AX
        MOV     AL,36H         ;8253初始化
        MOV     DX,46H
        OUT     DX,AL
        MOV     AX,40000
        MOV     DX,40H
        OUT     DX,AL
        MOV     AL,AH
        OUT     DX,AL
        MOV     AL,76H
        MOV     DX,46H
        OUT     DX,AL
MOV     AL,76H         ;8253初始化
        MOV     DX,46H
        OUT     DX,AL
        MOV     AX,10000
        MOV     DX,42H
        OUT     DX,AL
        MOV     AL,AH
        OUT     DX,AL
MOV     AL,0B6H         ;8253初始化
        MOV     DX,46H
        OUT     DX,AL
        MOV     AX,5000
        MOV     DX,42H
        OUT     DX,AL
        MOV     AL,AH
        OUT     DX,AL
        MOV 	AL,90H          ;8255初始化
	    MOV     DX,36H              
	    OUT 	DX,AL
AGAIN:  IN      AL,30H          
        TEST    AL,01H
        JZ      RUN1            ;逆时针旋转  
        JNZ     RUN2            ;顺时针旋转 
RUN1:   MOV 	BX,OFFSET TABLE
        MOV 	CX,0008H
A:      MOV	AL,[BX]              
	    OUT	32H,AL 
        CALL    DELAY 
        IN      AL,30H          
        TEST    AL,01H
        JNZ      AGAIN      
	    INC	BX                
	    LOOP	A
        JMP     RUN1
RUN2:   MOV 	BX,OFFSET TABLE
        MOV 	CX,0008H
	    MOV	AX,0007H
	    ADD	BX,AX
B:      MOV     AL,[BX]
	    OUT	32H,AL
        CALL    DELAY
	    DEC	BX
        IN      AL,30H         
        TEST    AL,01H
        JZ      AGAIN
	    LOOP    B
	    JMP	RUN2
DELAY  PROC
        PUSH	CX                   
        MOV     CX,4000
AGAIN1: PUSH    AX
        POP     AX
        LOOP    AGAIN1
	    POP	CX
	    RET
DELAY   ENDP
EXIT:   RET
      CODE  ENDS
      END START

方法二程序:

IO3  EQU   30H
IO4  EQU   40H
IO2  EQU   20h
DATA SEGMENT
  TABLE   DB 01H,03H,02H,06H,04H,0CH,08H,09H;
SEGDATA DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h
DATA ENDS
CODE    SEGMENT   
        ASSUME  CS:CODE,DS:DATA
START:  MOV     AX,DATA
       MOV     DS,AX
       MOV 	AL,91H          ;8255初始化
	   MOV     DX,36H              
	   OUT 	    DX,AL
       MOV 	AL,92H          ;8255初始化
	   MOV     DX,26H              
	   OUT 	DX,AL
MOV     DX,20H         ;选择档位         
in      al,dx
MOV     cl,al
DANGSU1:TEST CL,00000001B
        JZ YIDANG
DANGSU2:TEST CL,00000010B
        JZ ERDANG
DANGSU3:TEST CL,00000100B
        JZ SANDANG
DANGSU4:TEST CL,00001000B
        JZ SIDANG
DANGSU5:TEST CL,00010000B
        JZ WUDANG
DANGSU6:TEST CL,00100000B
        JZ LIUDANG
YIDANG: MOV     AL,36H         ;8253初始化
        MOV     DX,46H
        OUT     DX,AL
        MOV     AX,60000       ;第一挡
        MOV     DX,40H
        OUT     DX,AL
        MOV     AL,AH
        OUT     DX,AL
        mov     cl,01h
        JMP AGAIN

ERDANG:MOV     AL,36H
        MOV     DX,46H
        OUT     DX,AL
        MOV     AX,40000      ;第二挡
        MOV     DX,40H
        OUT     DX,AL
        MOV     AL,AH
        OUT     DX,AL
        mov     cl,02h
        JMP AGAIN


SANDANG:MOV     AL,36H
        MOV     DX,46H
        OUT     DX,AL
        MOV     AX,30000       ;第三挡
        MOV     DX,40H
        OUT     DX,AL
        MOV     AL,AH
        OUT     DX,AL
        mov     cl,03h
        JMP AGAIN

SIDANG: MOV     AL,36H         ;8253初始化
        MOV     DX,46H
        OUT     DX,AL
        MOV     AX,20000       ;第四挡
        MOV     DX,40H
        OUT     DX,AL
        MOV     AL,AH
        OUT     DX,AL
        mov    cl,04h
        JMP AGAIN

WUDANG:MOV     AL,36H
        MOV     DX,46H
        OUT     DX,AL
        MOV     AX,10000       ;第五挡
        MOV     DX,40H
        OUT     DX,AL
        MOV     AL,AH
        OUT     DX,AL
        mov     cl,05h
        JMP AGAIN


LIUDANG:MOV     AL,36H
        MOV     DX,46H
        OUT     DX,AL
        MOV     AX,5000       ;第六挡
        MOV     DX,40H
        OUT     DX,AL
        MOV     AL,AH
        OUT     DX,AL
        mov     cl,06h
        JMP AGAIN

AGAIN:
mov al,cl
MOV BX,OFFSET SEGDATA;          数码管显示
XLAT
MOV DX,24H
OUT DX,AL
IN      AL,30H          
        TEST    AL,80H
        JZ      RUN1            ;逆时针旋转  
        JNZ     RUN2            ;顺时针旋转 
RUN1:
MOV 	BX,OFFSET TABLE
        MOV 	CX,0008H
A:      MOV	AL,[BX]              
	    OUT	32H,AL 
        CALL    DELAY 
        IN      AL,30H          
        TEST    AL,80H
        JNZ    again
	    INC	BX       
        IN      al,34H           ;判断复位开关是否闭合
        test    al,01h
        JZ      start         
	    LOOP	A
       JMP     RUN1
RUN2: 
MOV 	BX,OFFSET TABLE
        MOV 	CX,0008H
	MOV	AX,0007H
	ADD	BX,AX
B:      MOV     AL,[BX]
	    OUT	32H,AL
        CALL    DELAY
	    DEC	BX
        IN      AL,30H         
        TEST    AL,80H
        JZ      again          ;判断复位开关是否闭合
        IN      al,34H
        test    al,01h
        JZ      start
	    LOOP    B
	JMP	RUN2
DELAY  PROC
        PUSH	CX                   
        MOV     CX,4000
AGAIN2: 
PUSH    AX
        POP     AX
        LOOP    AGAIN2
	    POP	CX
	    RET
DELAY   ENDP
EXIT:   RET
     CODE  ENDS
      END START
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值