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

📄 liubo.txt

📁 步进电动机的设计和检测 步进电动机单片机课程设计 源代码
💻 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 + -