单片机两种方式控制步进电机旋转(3)

2025-06-22

图10 程序编写界面

10、编写好程序就要进行程序的编译,单机工具栏上的“编译”,在编译的过程中,如果出现错误,修改程序直到没有错误为止,然后一次点击“编译”“调试”,在此过程中出现错误的,也要修改程序直到没有错误为止,编译过程中出现警告一般不必考虑,但特殊时期也要通过修改程序消除警告。

第五章 设计程序

第一种方式

ORG 0000H

LJMP MAIN(跳转到主程序) ORG 0100H(主程序存放地址0100H) MAIN:

MOV SP,#60H ;设置堆栈指针(设置堆栈的长度为60H byte,首先

11

SP是堆栈指针指令,将立即数60H送SP,SP=(60H),即定义栈顶位置为 内部RAM的60H单元)

ACALL DELAY( 调用delay子程序) SMRUN: ;电机控制方式为单双八拍 MOV P1,#08H ;A ACALL DELAY MOV P1,#0CH ;AB ACALL DELAY

MOV P1,#04H ;B ACALL DELAY MOV P1,#06H ;BC ACALL DELAY

MOV P1,#02H ;C ACALL DELAY

MOV P1,#03H ;CD ACALL DELAY

MOV P1,#01H ;D ACALL DELAY

MOV P1,#09H ;DA ACALL DELAY SJMP SMRUN ;循环转动 DELAY: ;延时程序

12

MOV R4,#10 DELAY1: MOV R5,#250 DJNZ R5,$

DJNZ R4,DELAY1(总延时时间:t=2*250*10=5000μs)) RET ; END

第二种方式

ORG 0000H (程序起始位置)

AJMP START (系统复位后跳转向主程序start) ORG 000BH (start的起始地址为00BH) AJMP TT1 (跳转到TT1) ORG 0030H (TT1起始地址0030H) START:

MOV P1,#0FFH (P1口置1)

MOV TMOD,#01H (设置定时器0工作方式为1即16位定时器 ) MOV R2,#08H 08H赋值给R2 MOV R1,#02H 02H赋值给R1 MOV TH0,#0D8H 定时器0高八位初值 MOV TL0,#0F0H 低八位初始值

13

ORL IE,#82H 开启中断 MOV R0,#00H 00H赋值给R0 SETB TR0 启动定时器 LOOP:

MOV A,R0 R0的内容给定时器A

MOV DPTR,#NUM DPTR为间址寄存器 MOVC A,@A+DPTR

CJNE R1,#00H,LOOP 寄存器R1的内容与0比较,不等则跳loop

MOV P1,A 累加器A中的数据传送到p1寄存器,也就是p1端口 MOV R1,#02H

INC R0 加一指令

DJNZ R2,LOOP (R2)-1放入R2,R2-1≠0 SJMP START 跳转到start

NUM:DB 0f1h,0f3h,0f2h,0f6h,0f4h,0fch,0f8h,0f9h TT1: 定时中断程序 CLR TR0 复位定时器T0

DEC R1 寄存器R1减一再放入到R1中 MOV TH0,#0D8H }定时器高八位初值 MOV TL0,#0F0H 定时器低八位初值 SETB TR0 启动定时器T0

14

RETI 中断返回 END

图4.1 主程序流程图

如图所示,在主程序中ADC0809将采集到模拟数据(即电压值,

通过改变电位器来获得不同的电压值)转换为数字量,再将此数字量传给单片机处理。单片机处理后送给数码管显示。

4.2 显示程序设计

15


单片机两种方式控制步进电机旋转(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:巫山县餐饮店推荐 - 图文

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219