单片机控制系统汇编程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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