當前位置:編程學習大全網 - 編程語言 - 89C51控制步進電機匯編程序

89C51控制步進電機匯編程序

我剛剛做過壹個步進電機的程序,裏面含有步進電機的加速程序。都是自己編寫的。程序如下:

RS EQU P1.0

RW EQU P1.2

E EQU P1.1

LCD EQU P2

ORG 0000H

AJMP MAIN

ORG 0030H

MAIN: NOP

C0: SETB P1.4

NOP

NOP

NOP

NOP

NOP

NOP

JB P1.4,C1

AJMP C0

;ACALL WRITE_1

C1: ACALL SET1_LCD

ACALL SHOW1

CLR P0.3

AJMP L2

;LCD初始化程序

SET1_LCD:

MOV R5,#01H ;清屏

ACALL WRITE_1

MOV R5,#3CH ;兩行顯示,5*10點矩陣

ACALL WRITE_1

MOV R5, #06H ;輸入模式為移動光標

ACALL WRITE_1

MOV R5,#0CH ;顯示開關控制

ACALL WRITE_1

MOV R5,#02H ;光標歸位

ACALL WRITE_1

RET

SHOW1:

MOV DPTR,#TAB1

MOV R1,#00H

A1: MOV A,R1

MOVC A,@A+DPTR

MOV R6,A

LCALL WRITE_D

INC R1

CJNE R1,#0AH,A1

RET

SHOW2:

MOV DPTR,#TAB2

MOV R1,#00H

A2: MOV A,R1

MOVC A,@A+DPTR

MOV LCD,A

MOV R6,A

LCALL WRITE_D

INC R1

CJNE R1,#0AH,A2

RET

;寫數據子程序

WRITE_D: SETB RS

CLR RW

MOV LCD,R6

CLR E

ACALL CHECK_BF

SETB E

RET

;寫命令子程序

WRITE_1: CLR RS

CLR RW

MOV LCD,R5

CLR E

ACALL CHECK_BF

SETB E

RET

;判斷是否忙碌子程序

CHECK_BF:

MOV LCD,#0FFH ;此時不接受外來指令

CLR RS ;RS=0,選擇指令寄存器

SETB RW ;RW=1,選擇讀模式

CLR E ;E=0,禁止讀/寫LCM

;ACALL DELAY10MS

;延時1微秒

SETB E ;E=1,允許讀/寫LCM

JB LCD.7,CHECK_BF ;忙碌循環等待

RET

DELAY10MS:

MOV R3,#0AH ;外循環10次

DL2: MOV R4,#0FAH ;內循環50次

DL1: NOP

NOP

DJNZ R4,DL1

DJNZ R3,DL2

RET

DELAY3S: MOV R3,#0FFH

DL3: MOV R4,#0FFH

DL5: MOV R5,#66H

DL6: DJNZ R5,DL6

DJNZ R4,DL5

DJNZ R3,DL3

RET

L2: MOV R1,#18H

L1: MOV R2,#82H

L0: MOV R3,#0C0H

L3: ACALL M2

SETB P1.3

JB P1.3,C2

SETB P1.5

JB P1.5,WBI1

DJNZ R3,L3

DJNZ R2,L0

DJNZ R1,L1 ;延時6秒

M20: MOV A,#036H

AJMP M0

C2: ACALL M4

;ACALL SET1_LCD

AJMP M9

M0:MOV R4,#10H ;電機加速時間參數

M12:SETB P0.5

ACALL M5

CLR P0.5

ACALL M5

DJNZ R4,M12

DEC A

CJNE A,#08H,M0

MOV A,#08H

AJMP M13 ;電機加速程序

RET

M5:MOV R7,A ;延時程序

M1: NOP

NOP

NOP

NOP

NOP

NOP

NOP

DJNZ R7,M1

RET ;延時程序

M13:MOV R4,#0FFH ;電機加速時間參數

M14:SETB P0.5

ACALL M15

CLR P0.5

ACALL M15

SETB P0.5

DJNZ R4,M14

DEC A

CJNE A,#07H,M13

AJMP D0 ;電機加速程序

RET

WBI1: AJMP WBI

M15:MOV R7,A ;延時程序

M16:NOP

NOP

NOP

NOP

NOP

NOP

NOP

DJNZ R7,M16

RET

D0: MOV R5,#2H

ACALL M4

D1: MOV R6,#083H

ACALL M4

D2: MOV R4,#0F0H

M6: ACALL M4

SETB P1.3

JB P1.3,C2

ACALL M4

SETB P1.5

JB P1.5,WBI

ACALL M4

DJNZ R4,M6

DJNZ R6,D2

ACALL M4

DJNZ R5,D1 ;延時18秒

AJMP L2 ;gaiguo

M4: SETB P0.5 ;電機穩定運行程序

ACALL M8

CLR P0.5

ACALL M8

SETB P0.5

RET

M8: MOV R7,#07H ;轉速參數

M7: NOP

NOP

NOP

NOP

NOP

NOP

NOP

DJNZ R7,M7

RET

M9: MOV A,#05H

M10:MOV R4,#02H ;電機減速時間參數

M17:SETB P0.5

ACALL M18

CLR P0.5

ACALL M18

DJNZ R4,M17

INC A

CJNE A,#0FFH,M10

;MOV A,#08H

AJMP M3 ;電機減速程序

RET

M18:MOV R7,A ;延時程序

M19:NOP

NOP

NOP

NOP

NOP

NOP

NOP

DJNZ R7,M19

RET

WBI:MOV R5,#058H

N1: MOV R6,#55H

N2: MOV R7,#7DH

N3: ACALL M2

SETB P1.5

JB P1.5,WBI

DJNZ R7,N3

DJNZ R6,N2

DJNZ R5,N1

AJMP M20

M2: SETB P0.5

RET

M3: SETB P0.5

ACALL SET1_LCD

ACALL SHOW2

TAB1: DB 53H,79H,73H,74H,65H,6DH,5FH,4FH,4EH,5FH

TAB2: DB 53H,79H,73H,74H,65H,6DH,5FH,4FH,46H,46H

END

  • 上一篇:哪位計算機達人知道概率如何用編程實現啊?
  • 下一篇:恒溫恒濕空調原理 壹樣的空調不壹樣的原理
  • copyright 2024編程學習大全網