當前位置:編程學習大全網 - 編程語言 - C51單片機電動機驅動程序

C51單片機電動機驅動程序

;利用DELAY副程序(0.05秒XR5),產生驅動信號

;由P1輸出,正轉200步(1圈),再反轉200步(1圈),

;#11H為1相驅動,#33H為2相驅動

;速度為 1/(0.05XTIMES) 步/秒

STEPS: EQU 200 ;步數設定

TIMES EQU 10 ;時間延遲次數

PHASE EQU 11H ;激磁方式

OUT REG P1 ;指定輸出埠

;======================================================

ORG 0 ;程序開始位置

CALL POSITION ;呼叫定位副程序

START: MOV A, #PHASE ;指定驅動信號

;=============正轉=====================================

MOV R4, #STEPS ;指定正轉步數

RL_1: MOV OUT, A ;輸出驅動信號

MOV R5, #TIMES ;指定重復數

CALL DELAY ;呼叫延遲副程序

RL A ;下壹個驅動信號

DJNZ R4, RL_1 ;是否已200步?

;=============反轉=====================================

MOV R4, #STEPS ;指定正轉步數

RR_1: MOV OUT, A ;輸出驅動信號

MOV R5, #TIMES ;指定重復數

CALL DELAY ;呼叫延遲副程序

RR A ;下壹個驅動信號

DJNZ R4, RR_1 ;是否已200步?

;=============延遲副程序==R5x0.05秒===================

DELAY: MOV R7, #100

這是正傳反轉

;利用DELAY副程序(0.05秒XR5), 產生驅動信號

;由P1輸出

;#11H為1相驅動, #33H為2相驅動

;速度為 1/(0.05XTIMES) 步/秒

TIMES EQU 10

PHASE EQU 11H

OUT REG P1

ORG 0

CALL POSITION ;呼叫定位副程序

MOV A, #PHASE ;指定驅動信號

RL_1: MOV OUT, A ;輸出驅動信號

MOV R5, #TIMES ;指定重復數

CALL DELAY ;呼叫延遲副程序

RL A ;下壹個驅動信號

JMP RL_1 ;跳至RL_1形成回圈

;================================================

DELAY: MOV R7, #100

D1: MOV R6, #250

DJNZ R6, $

DJNZ R7, D1

DJNZ R5, DELAY

RET

;=======定位副程序===============================

POSITION:

MOV 30H, #4 ;四個驅動信號

MOV A, #PHASE ;指定驅動信號

P_1: MOV OUT, A ;輸出驅動信號

MOV R5, #TIMES ;指定重復數

CALL DELAY ;呼叫延遲副程序

RL A ;下壹個驅動信號

DJNZ 30H, P_1 ;跳至RL_1形成回圈

RET

;==================================================

END

這是單步驅動

  • 上一篇:想知道壹些關於徐良的信息?朋友們,幫幫忙哦!!!
  • 下一篇:遊戲幕後⑤--CS
  • copyright 2024編程學習大全網