单片机控制系统汇编程序

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

; step motor control

; ASM for MCS51

mode equ 082h

contrl equ 08003h

ctl equ 08000h ;8255接口芯片PA口的地址值

Astep equ 01h ;对A相通电,PA口的赋值

Bstep equ 02h ;对B相通电,PA口的赋值

Cstep equ 04h ;对C相通电,PA口的赋值

Dstep equ 08h ;对D相通电,PA口的赋值

dly_c equ 10h ;启动初值(加速度)寄存器

sd1 equ 80 ;0--255 加速度初值:值越小,加速越快

sd2 equ 40 ;

sd3 equ 60 ;0--255 延时子程序内循环初值,数值越大速度越小

org 0h

step: ;系统初始化

mov a,#mode ;8255工作模式:控制字

mov dptr,#contrl ;8255控制寄存器

movx @dptr,a

mov dptr,#8002h ;对8002h送00h值

mov a,#0

movx @dptr,a

mov dly_c,#sd1 ;送加速度初值:值越小,加速越快

jmp loop2 ;跳转不同的控制方式:loop--单双8拍

;loop1--双4拍,loop2--单4拍

;单/双八拍工作方式

loop:

mov dptr, #ctl ;送PA口的地址到DPTR

mov a,#astep+bstep ;D相通电

movx @dptr,a

call delay

mov a,#astep ;D相\A相通电

movx @dptr,a

call delay ;调用延时子程序

mov a,#dstep+astep ;A相通电

movx @dptr,a

call delay

mov a,#dstep

movx @dptr,a

call delay

mov a,#cstep+dstep

movx @dptr,a

call delay

mov a,#cstep

movx @dptr,a

call delay

mov a,#bstep+cstep

movx @dptr,a

call delay

mov a,#bstep

movx @dptr,a

call delay

mov a, dly_c

dec a ; 提高转速

cjne a,#sd2, nn1 ; 最快速度,值越小速度越快,但受DELAY的内循环限制inc a

nn1: mov dly_c,a

ljmp Loop1

; 双四拍工作方式

loop1:

mov dptr,#ctl

mov a, #dStep+astep

movx @dptr,a

call delay

mov a, #cstep+dstep

movx @dptr,a

call delay

mov a, #bstep+cstep

movx @dptr,a

call delay

mov a,#astep+bstep

movx @dptr,a

call delay

mov a, dly_c

dec a

cjne a,#sd2, nn2

inc a

nn2: mov dly_c,a

jmp loop1

; 单四拍工作方式

loop2:

mov dptr,#ctl

mov a,#dstep

movx @dptr,a

call delay

mov a,#cstep

movx @dptr,a

call delay

mov a,#bstep

movx @dptr,a

call delay

mov a,#astep

movx @dptr,a

call delay

mov a, dly_c

dec a

cjne a,#sd2, nn3

inc a

nn3: mov dly_c,a

jmp loop2

delay: ;延时子程序mov r6,dly_c ;外循环初值dd1:

mov r7,#sd3 ;内循环初值

djnz r7,$ ;内循环

djnz r6,dd1 ;外循环

ret ;子程序返回

end

相关文档
最新文档