⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 he16.asm

📁 51系列单片机的汇编程序包
💻 ASM
字号:
;================== 硬件实验十六  步进电机控制 =========================
        ORG 1200H
;-----------------------------------
DOJ0:   MOV SP,#53H
	    CALL LEDP
DOJ6:   LCALL X2                ;调键扫显示子程序
        JB ACC.4,DOJ5
        LCALL X3                ;调数字键处理子程序
        DB 79H,7EH
        SJMP DOJ6
DOJ5:   CJNE A,#16H,DOJ6        ;不是执行键转
        MOV A,7AH
        SWAP A
        ORL A,79H
        MOV R6,A                ;低字节步距数送R6
        MOV A,7CH
        SWAP A
        ORL A,7BH
        MOV R7,A                ;高字节步距数R7
        MOV A,7EH
        CJNE A,#00H,DOJ2        ;判转动方向
DOJ1:   MOV P1,#03H             ;顺时针转动
        CALL DEL0Y
        CALL GGJ0
        MOV P1,#06H
        CALL DEL0Y
        CALL GGJ0
        MOV P1,#0CH
        CALL DEL0Y
        CALL GGJ0
        MOV P1,#09H
        CALL DEL0Y
        CALL GGJ0
        SJMP DOJ1
DOJ2:   MOV P1,#09H             ;逆时针转动
        CALL DEL0Y
        CALL GGJ0
        MOV P1,#0CH
        CALL DEL0Y
        CALL GGJ0
        MOV P1,#06H
        CALL DEL0Y
        CALL GGJ0
        MOV P1,#03H
        CALL DEL0Y
        CALL GGJ0
        SJMP DOJ2
DEL0Y:	MOV A,7DH               ;根据(7D)内容改变延时时间
        SWAP A
        CLR C
        RRC A
        RRC A
        MOV R2,A
DELY1:	MOV R5,#01H
DEL1Y:  CALL DIS
        DJNZ R5,DEL1Y
        DJNZ R2,DELY1
        RET
GGJ0:   CJNE R7,#00H,GGJ1       ;步距数为0停止
        CJNE R6,#00H,GGJ1       ;不为0减1后显示
        AJMP DOJ4
GGJ1:   DJNZ R6,DOJ3
        CJNE R7,#00H,DDJ8
DOJ4:   CALL DOJ7
        SJMP DOJ4
DDJ8:   DJNZ R7,DOJ3
        AJMP DOJ4
DOJ3:   CALL DOJ7
        RET
DOJ7:   MOV R0,#79H
        MOV A,R6
        CALL PTDS5
        MOV A,R7
        CALL PTDS5
        CALL SSEE              ;显示
        RET
PTDS5:  MOV R1,A
        CALL PTDS6
        MOV A,R1
        SWAP A
PTDS6:  ANL A,#0FH
        MOV @R0,A
        INC R0
        RET
;-----------------------------------
LEDP:   MOV 50H,#7EH
	    MOV A,#10H
	    MOV R0,#79H
LEDS:	MOV @R0,A
	    INC R0
	    CJNE R0,#7EH,LEDS
	    INC A
	    MOV @R0,A
	    RET
;--------------------------------
X3:     MOV R4,A
        MOV R0,#50H
        MOV A,@R0
        MOV R1,A
        MOV A,R4
        MOV @R1,A
        CLR A
        POP DPH
        POP DPL
        MOVC A,@A+DPTR
        INC DPTR
        CJNE A,01H,X30
        dec r1
        clr a
        MOVC A,@A+DPTR
X31:    MOV @R0,A
        INC DPTR
        PUSH DPL
        PUSH DPH
        RET
;------------------------------------
X30:    DEC R1
        MOV A,R1
        SJMP X31
;--------------------------
X2:     MOV R6,#50H
X0:     ACALL XLE
        JNB ACC.5,XX0
        DJNZ R6,X0
        MOV R6,#20H
        MOV R0,#50H
        MOV A,@R0
        MOV R0,A
        MOV A,@R0
        MOV R7,A
        MOV A,#10H
        MOV @R0,A
X1:     ACALL XLE
        JNB ACC.5,XX1
        DJNZ R6,X1
        MOV A,R7
        MOV @R0,A
        SJMP X2
XX1:    MOV R6,A
        MOV A,R7
        MOV @R0,A
        MOV A,R6
XX0:    RET
;----------------------------
LS3:    DB 07H,04H,08H,05H,09H,06H,0AH
        DB 0BH,01H,00H,02H,0FH,03H,0EH
        DB 0CH,0DH
DIS:    PUSH DPH
        PUSH DPL
        SETB RS1
        MOV R0,#7EH
        MOV R2,#20H
        MOV R3,#00H
        MOV DPTR,#LS0
LS2:    MOV A,@R0
        MOVC A,@A+DPTR
        MOV R1,#0DCH
        MOVX @R1,A
        MOV A,R2
        inc R1
        MOVX @R1,A
LS1:    DJNZ R3,LS1
        CLR C
        RRC A
        MOV R2,A
        DEC R0
        JNZ LS2
        movx @r0,a
	    dec r0
	    cpl a
	    movx @r0,a
        CLR RS1
        POP DPL
        POP DPH
        RET
LS0:    DB 0C0H,0F9H,0A4H,0B0H,99H,92H
        DB 82H,0F8H,80H,90H,88H,83H,0C6H
        DB 0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH
;-----------------------------
SSEE:   SETB RS1                ;换工作区
        MOV R5,#05H
SSE2:   MOV 30H,#20H
        MOV 31H,#7EH
        MOV R7,#06H
SSE1:   MOV R1,#0DDH
        MOV A,30H
        MOVX @R1,A              ;字位送入
        MOV R0,31H
        MOV A,@R0
        MOV DPTR,#DDFF
        MOVC A,@A+DPTR          ;取字形代码
        MOV R1,#0DCH
        MOVX @R1,A              ;字形送入
        MOV A,30H               ;右移
        RR A
        MOV 30H,A
        DEC 31H
        MOV A,#0FFH
        MOVX @R1,A              ;关显示
        DJNZ R7,SSE1            ;6位显示完了吗?
        DJNZ R5,SSE2            ;5次显示完了吗?
        CLR RS1
        RET
;------------------------------
XLE:    ACALL DIS
        ACALL KEY
        MOV R4,A
        MOV R1,#48H
        MOV A,@R1
        MOV R2,A
        INC R1
        MOV A,@R1
        MOV R3,A
        MOV A,R4
        XRL A,R3
        MOV R3,04H
        MOV R4,02H
        JZ X10
        MOV R2,#88H
        MOV R4,#88H
X10:    DEC R4
        MOV A,R4
        XRL A,#82H
        JZ X11
        MOV A,R4
        XRL A,#0EH
        JZ X11
        MOV A,R4
        JZ X12
        MOV R4,#20H
        DEC R2
        SJMP X13
X12:    MOV R4,#0FH
X11:    MOV R2,04H
	    NOP
	    NOP
        MOV R4,03H
X13:    MOV R1,#48H
        MOV A,R2
        MOV @R1,A
        INC R1
        MOV A,R3
        MOV @R1,A
        MOV A,R4
        JB ACC.5,X113
	    JB ACC.4,X113
	    MOV DPTR,#LS3
	    MOVC A,@A+DPTR
X113:   RET
;------------------------------
DDFF:   DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
        DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH
;----------------------------------
KEY:    SETB RS1
        MOV R2,#0FEH
        MOV R3,#08H
        MOV R0,#00H
LP1:    MOV R1,#0DDH
        MOV A,R2
        MOVX @R1,A
        RL A
        MOV R2,A
        inc r1
        MOVX A,@R1
        CPL A
        ANL A,#0FH
        JNZ LP0
        INC R0
        DJNZ R3,LP1
XP33:   MOV A,#20H
XP3:    mov r2,a
	    clr a
	    mov r1,#0ddh
	    movx @r1,a
	    mov a,r2
        CLR RS1
        RET
;----------------------------
LP0:    CPL A
        JB ACC.0,XP0
        MOV A,#00H
        SJMP LPP
XP0:    JB ACC.1,XP1
        MOV A,#08H
        SJMP LPP
XP1:    JB ACC.2,XP2
        MOV A,#10H
        SJMP LPP
XP2:    JB ACC.3,XP33
        MOV A,#18H
LPP:    ADD A,R0
        sjmp xp3
;--------------------------------
        END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -