步进电机控制及其汇编程序

合集下载

51单片机步进电机控制汇编语言程序

51单片机步进电机控制汇编语言程序

51单片机步进电机控制汇编语言程序;本程序是通过秒信号触发中断来实现的,要求中断程序必须在1S内执行完毕;步进电机转速控制是通过8255输入信号在每次执行中断程序内调整控制信号的循环次数来实现的CODE SEGMENTASSUME CS:CODESTART: PUSH CSPOP DS;数据段和代码段共用一个地址JMP MAINNUM DB 08H,04H,02H,01H; 定义循环控制信号DAT1 DB 0H ;定义循环参量DAT2 DB 0H;---------初始化8253计数器-----------MAIN:MOV DX,203H;计数器0初始化,工作在方式3 MOV AL,36HOUT DX,ALMOV DX,200H;给计数器0赋计数初值960H(2400)MOV AL,60H ;低8位OUT DX,ALMOV AL,09H ;高8位OUT DX,ALMOV DX,203H;计数器1初始化,工作在方式3 MOV AL,76HOUT DX,ALMOV DX,201H;给计数器1赋计数处值80H(128) MOV AL,80H ;低8位OUT DX,ALMOV AL,00H ;高8位OUT DX,AL;-----------初始化8255--------------- MOV DX,021BH;A口输入,B口输出MOV AL,90HOUT DX,AL;-----------初始化向量表8号中断-------- MOV AX,0;ES:DIMOV ES,AXMOV DI,20H;4*8=32MOV AX,OFFSET INTP;装载中断函数的偏移地址MOV ES:[DI],AXMOV AX,8100H;MOV ES:[DI+2],AX;-------------初始化8259A--------------MOV DX,210H;ICW1初始化MOV AL,13H;上升沿触发,单片,要ICW4OUT DX,ALMOV DX,211H;ICW2初始化MOV AL,08H;初始化中断类型码范围,08-0F对应INT0-INT7OUT DX,ALMOV DX,211H;ICW4初始化MOV AL,01H;OUT DX,AL;--------------打开中断-------------- MOV DX,211H;打开8259A八号中断IN AL,DXAND AL,0FEH;1111 1110OUT DX,ALSTI;开CPU中断,IF=1MOV BX,OFFSET NUM;取控制信号的偏移地址MOV SI,0 ;将SI循环归零LOP: MOV AX,0JMP LOP;死循环,等待中断到来;------------中断程序开始----------INTP PROC FAR;LTP:MOV DX,219HMOV AL,[BX+SI]OUT DX,ALINC SICMP SI,04HJNZ NEXTMOV SI,0NEXT: MOV CX,03FFFH ;简短延时LOOP $CALL REFRESH;调用按键扫描子程序DEC DAT1 ;循环次数减一JNZ LTP ;循环次数减为零时跳出循环MOV AL,DAT2;重新填装DAT1的值MOV DAT1,ALMOV DX,210H;中断结束命令MOV AL,20HOUT DX,ALIRET;中断返回INTP ENDP;-------按键扫描程序---------- REFRESH PROC FARMOV DX,218HIN AL,DXCMP AL,00HJNZ NEXT1 ;若输入信号为00,则循环参量置为1 MOV DAT2,01HNEXT1: CMP AL,01HJNZ NEXT2 ;若输入信号为01,则循环参量置为2 MOV DAT2,02HNEXT2: CMP AL,03HJNZ NEXT3 ;若输入信号为11,则循环参量置为3 MOV DAT2,03HNEXT3: CMP AL,07HJNZ NEXT4 ;若输入信号为111,则循环参量置为4 MOV DAT2,04HNEXT4 MOV DAT1,0HRETREFRESH ENDP;-------按键扫描结束----------CODE ENDSEND START。

步进电机驱动程序(汇编)

步进电机驱动程序(汇编)

附件:ORG 0000HLJMP MAINORG 0003HLJMP Speed_UpORG 0013HLJMP Speed_DownORG 0100HMAIN:;打开外部中断IT0/IT1SETB EASETB EX0SETB EX1SETB IT0SETB IT1;扫描键盘,无键按下显示0,并继续扫描MAKEY:MOV DPTR,#TABMOV A,#0MOVC A,@A+DPTRMOV P0,AMOV P3,#0FFHMOV A,P3CPL AJZ MAKEYLCALL D10MSJZ MAKEY;当有键按下时,启动步行电机转动Speed EQU 20HNum EQU 21HMOV Speed,#60 ;Speed初始化,Speed控制延时的时间,即脉冲的频率MOV Num,#1 ;Num初始化,Num存放数码管显示的转速数值JNB ACC.4,TO_TWO ;默认设置为正向转动,转速为1,当有反向键按下,按反向转动;------------------------ 1号程序:控制步行电机正转--------------------------------TO_ONE:MOV R7,#4MOV A,#01HMOV P3,#0FFHLP1:MOV P1,ALCALL DELAYLCALL DISPLAYRL A ; 正向输入脉冲信号DJNZ R7,LP1JNB P3.4,TO_TWO ; 有反向键按下,跳转到2号程序LJMP TO_ONE;------------------------2号程序:控制步行电机反转---------------------------------- TO_TWO:MOV R7,#4MOV A,#08HMOV P3,#0FFHLP2:MOV P1,ALCALL DELAYLCALL DISPLAYRR A ; 反向输入脉冲信号DJNZ R7,LP2JNB P3.5,TO_ONE ;有正向键按下,跳转到1号程序LJMP TO_TWO;----------------------------中断服务程序----------------------------------------------- Speed_Up: ; 外部中断IT0,控制加速PUSH ACCLCALL D10MSMOV A,SpeedCJNE A,#12,L1 ; 最大速度时,速度不再增加LJMP L2L1: ; 速度加1(减小脉冲周期)SUBB A,#12MOV Speed,AINC NumL2: POP ACCRETISpeed_Down: ;外部中断IT1,控制减速PUSH ACCLCALL D10MSMOV A,SpeedCJNE A,#60,L3 ;最小速度时,速度不再减小LJMP L4L3: ;速度减1(增大脉冲周期)ADD A,#12MOV Speed,ADEC NumL4: POP ACCRETI;----------------------------------延时、显示子程序--------------------------------------------- DISPLAY: ;显示子程序,显示步行电机的转速PUSH ACCMOV A,NumMOVC A,@A+DPTRMOV P0,APOP ACCRETDELAY: ;延时子程序,用于产生脉冲信号,并可通过改变延时来改变脉冲的频率PUSH ACCMOV R6,Speedd1:MOV R5,#100DJNZ R5,$DJNZ R6,d1POP ACCRETD10MS: ;延时10ms,软件去抖动MOV R4,#10D1MS:MOV R3,#249DL: NOPNOPDJNZ R3,DLDJNZ R4,D1MSRETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H ;速度显示:0~5END。

步进电机控制及其汇编程序

步进电机控制及其汇编程序

综合实践报告之第二次大作业题目:步进电机控制设计说明:在工业电气自动化工程中,步进电机是一种常用的控制设备,它以脉冲信号控制电机的转速,在数控机床、仪器仪表、计算机外围设备以及其它自动设备中有广泛的应用。

步进电机是指一步步走的电动机,所谓“步”指转动角度,每步都会使电机转过一个固定的角度。

步进电机有不同的种类,但其控制方法均相同,均以脉冲信号进行驱动,很适合使用单片机来进行控制。

本次大作业要求设计一个步进电机的控制部分。

已知:1. 采用2相制5线步进电机,其结构如下图所示,线圈中心抽头X1与X2连接在一起;B 相X1A 相2相步进电机2. 步进电机采用1相激磁法,即在每一个瞬间只有一个线圈导通,其它线圈休息;3. 单片机与步进电机之间可采用ULN2003类的驱动IC ;要求:1.查找资料,设计出步进电机的硬件连接电路图;2.给出控制软件流程图;3.用汇编语言写出控制软件的代码。

提示:本作业对电机的转动方向不做要求,在实际应用中,改变线圈激磁的顺序可以改变步进电机的转动方向,每送一次激磁信号后应经过一小段时间延时,让步进电机有足够的时间建立激励磁场及转动。

可以使用单片机的P0.0~P0.3端口输出控制信号,经驱动IC传至步进电机。

一.电路图设计说明此控制电路选用AT89S51型单片机作为驱动时序的输出控制器,其P0.1-P0.3输出作为两相四线步进电机的时序信号,经过驱动芯片ULN2003放大后输入到两相四线步进电机的输入端口;单片机P1.0-P1.2作为控制指令的输入按键K1-K3的输入端口,K1为电机正转按键,K2为电机正转按键,K3为电机停止按键,这三个按键均为高电平输入有效,按一下K1电机正转,按一下K2电机反转转,按一下K3电机停止。

其硬件电路如图一:二.控制程序流程图由于ULN2003是非们输出电路所以P0.0-P0.3端口输出低电平才是有效驱动电平,其控制程序流程图如图二:三.控制程序K1BIT P1.0K2BIT P1.1K3BIT P1.2K_OLD EQU30HK_NEW EQU31H;---------------------------------------------------------ORG0000HJMP MAINORG0030H;---------------------------------------------------------MAIN:MOV SP,#60HMOV P1,#00HMOV P0,#0FFHMOV K_OLD,#04HMAIN1:MOV R2,#4;给R2赋值4循环移位次数CALL K_SCAN;键扫描MOV A,K_NEWCJNE A,#00H,MAIN2 ;是否有按键按下MOV A, K_OLD;JMP MAIN4MAIN2:CALL DELAY;延时示去抖动CALL K_SCAN;再次判断键是否按下MOV A,K_NEWCJNE A,#00H,MAIN3 ; 再次判断键是否按下MOV A, K_OLDJMP MAIN4MAIN3:MOV K_OLD,AMAIN4:JB ACC.0,LOOP1;K1按下既P1.2-P1.0输入为001电机正转指令JB ACC.1,LOOP2;K2按下既P1.2-P1.0输入为010电机反转指令JB ACC.2,LOOP3;K3按下既P1.2-P1.0输入为110电机停止指令JMP MAIN1;电机正转控制时序LOOP1:MOV A,#0FEHLOPP1A:MOV P0,ACALL DELAY ;延时RLC A ;左移1位DJNZ R2,LOPP1AJMP MAIN1;电机反转控制时序LOOP2:MOV A,#0F7HLOPP2A:MOV P0,ACALL DELAY ;延时RRC A ;右移1位DJNZ R2,LOOP1AJMP MAIN1;电机停止控制时序LOOP3:MOV A,#0FFHMOV P0,A ;P0.0-P0.3输出1111电机停止JMP MAIN1;---------------------------------------------------------;K_SCAN:;MOV K_NEW,#00H;MOV A,P1 ;将P1端口的输入状态读入;ANL A,#07H ;保留P1端口状态的低三位;MOV K_NEW,A ;将K1,K2,K3的输入状态存入K_NEW, ;RET;---------------------------------------------------------;---------------------------------------------------------;延时子程序DELAY:MOV R6,#200DEL:MOV R7,#0FFHDJNZ R7,$DJNZ R6,DELRET;---------------------------------------------------------Welcome To Download !!!欢迎您的下载,资料仅供参考!。

单片机步进电机控制程序代码

单片机步进电机控制程序代码

单片机步进电机控制程序代码引言:步进电机是一种常见的电机类型,它具有准确的位置控制和高速运动的特点,在许多应用中被广泛使用。

为了实现步进电机的精确控制,我们需要编写相应的单片机控制程序代码。

本文将介绍一种常见的单片机步进电机控制程序代码,并详细解析其实现原理和使用方法。

一、控制原理:步进电机通过控制电流的方向和大小来控制转子的运动,常见的步进电机控制方式有两相和四相控制。

本文将以四相控制为例进行介绍。

四相控制是指通过控制四个线圈的电流状态来控制步进电机的运动。

具体控制方式有全步进和半步进两种。

全步进模式下,每一步都是四个线圈中的两个同时激活;半步进模式下,每一步都是四个线圈中的一个或两个同时激活。

在本文中,我们将介绍半步进模式的控制程序代码。

二、程序代码:下面是一段常见的单片机步进电机控制程序代码:```c#include <reg51.h>sbit A1 = P1^0;sbit A2 = P1^1;sbit B1 = P1^2;sbit B2 = P1^3;void delay(unsigned int t){unsigned int i, j;for (i = 0; i < t; i++)for (j = 0; j < 120; j++);}void main(){unsigned int i;unsigned char step[8] = {0x01, 0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x09};while (1){for (i = 0; i < 8; i++){P1 = step[i];delay(1000);}}}```三、代码解析:1. 引用头文件reg51.h,该头文件定义了单片机51的寄存器等相关信息。

2. 定义了四个IO口A1、A2、B1、B2,分别对应步进电机的四个线圈。

3. 定义了一个延时函数delay,用于控制电机转动的速度。

(毕业设计)基于单片机的步进电机控制系统(汇编及C语言程序各一个)

(毕业设计)基于单片机的步进电机控制系统(汇编及C语言程序各一个)

基于单片机的步进电机控制系统设计前言步进电机是一种进行精确步进运动的机电执行元件,它广泛应用于工业机械的数字控制,为使系统的可靠性、通用性、可维护性以及性价比最优,根据控制系统功能要求及步进电机应用环境,确定了设计系统硬件和软件的功能划分,从而实现了基于8051单片机的四相步进电机的开环控制系统。

控制系统通过单片机存储器、I/O接口、中断、键盘、LED显示器的扩展、步进电机的环形分频器、驱动及保护电路、人机接口电路、中断系统及复位电路、单电压驱动电路等的设计,实现了四相步进电机的正反转,急停等功能。

为实现单片机控制步进电机系统在数控机床上的应用,系统设计了两个外部中断,以实现步进电机在某段时间内的反复正反转功能,也即数控机床的刀架自动进给运动,随着单片机技术的不断发展,单片机在日用电子产品中的应用越来越广泛,自六十年代初期以来,步进电机的应用得到很大的提高。

人们用它来驱动时钟和其他采用指针的仪器,打印机、绘图仪,磁盘光盘驱动器、各种自动控制阀、各种工具,还有机器人等机械装置。

此外作为执行元件,步进电机是机电一体化的关键产品之一,被广泛应用在各种自动化控制系统中,随着微电子和计算机技术的发展,它的需要量与日俱增,在各个国民经济领域都有应用。

步进电机是机电数字控制系统中常用的执行元件,由于其精度高、体积小、控制方便灵活,因此在智能仪表和位置控制中得到了广泛的应用,大规模集成电路的发展以及单片机技术的迅速普及,为设计功能强,价格低的步进电机控制驱动器提供了先进的技术和充足的资源。

1.步进电机原理及硬件和软件设计1.1步进电机原理及控制技术由于步进电机是一种将电脉冲信号转换成直线或角位移的执行元件,它不能直接接到交直流电源上,而必须使用专业设备一步进电机控制驱动器,典型步进电机控制系统如图1所示:控制器可以发出脉冲频率从几赫兹到几千赫兹可以连续变化的脉冲信号,它为环形分配器提供脉冲序列,环形分配器的主要功能是把来自控制环节的脉冲序列按一定的规律分配后,经过功率放大器的放大加到步进电机驱动电源的各项输入端,以驱动步进电机的转动,环形分配器主要有两大类:一类是用计算机软件设计的方法实现环形分配器要求的功能,通常称软环形分配器。

步进电机的控制电路和程序

步进电机的控制电路和程序

步进电机的控制电路和程序先看一下我们将要使用的51单片机综合学习系统能完成哪些实验与产品开发工作:分别有流水灯,数码管显示,液晶显示,按键开关,蜂鸣器奏乐,继电器控制,IIC总线,SPI总线,PS/2实验,AD模数转换,光耦实验,串口通信,红外线遥控,无线遥控,温度传感,步进电机控制等等。

上图是我们将要使用的51单片机综合学习系统硬件平台,本期实验我们用到了综合系统主机、步进电机,综合系统其它功能模块原理与使用详见前几期《电子制作》杂志及后期连载教程介绍。

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。

在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。

可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。

步进电机分类与结构现在比较常用的步进电机分为三种:反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)。

本章节以反应式步进电机为例,介绍其基本原理与应用方法。

反应式步进电机可实现大转矩输出,步进角一般为1.5度。

反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。

常用小型步进电机的实物如图1所示。

图1步进电机实物图图2 步进电机内部图步进电机现场应用驱动电路综合系统使用的是小型步进电机,对电压和电流要求不是很高,为了说明应用原理,故采用最简单的驱动电路,目的在于验证步进电机的使用,在正式工业控制中还需在此基础上改进。

一般的驱动电路可以用图3的形式。

图3 一般驱动电路在实际应用中一般驱动路数不止一路,用上图的分立电路体积大,很多场合用现成的集成电路作为多路驱动。

步进电机控制程序设计

步进电机控制程序设计

步进电机的驱动电路根据控制信号工作,控制信号由各类 控制器来产生。 其基本原理作用如下: ①控制换相顺序,通电换相。这一过程称为“脉冲分配”。 例如:四相步进电机的单四拍工作方式,其各相通电顺序 为a-b-c-d。通电控制脉冲必须严格按照这一顺序分别控 制a、b、c、d相的通断,控制步进电机的转向。如果给 定工作方式正序换相通电,则步进电机正转;如果按反序 换相通电,则电机就反转。 ②控制步进电机的速度。如果给步进电机发一个控制脉冲, 它就转一步,再发一个脉冲,它会再转一步。两个脉冲的 间隔越短,步进电机就转得越快。调整控制器发出的脉冲 频率,就可以对步机是数字控制电机,它将脉冲信号转变成 角位移,即给一个脉冲信号,步进电机就转动一 个角度,因此非常适合对数字系统的控制。 步进电机可分为反应式步进电机(简称“vr”)、永 磁式步进电机(简称“pm”)和混合式步进电机(简 称“hb”)。 步进电机区别于其他控制电机的最大特点是,通 过输入脉冲信号来进行控制,即电机的总转动角 度由输入脉冲数决定,而电机的转速由脉冲信号 频率决定。
步进电机控制及程序设计
步进电机是一种将电脉冲信号转换成相应的角位 移的特殊电机,每改变一次通电状态,步进电机 的转子就转动一步。
目前大多数步进电机控制器需要主控制器发送时 钟信号,并且要至少一个i/o口来辅助控制和监 控步进电机的运行情况。在单片机或dsp的应用 系统中,经常配合cpld或者fpga来实现特定的功 能。

步进电机内部结构、驱动原理图和汇编程序

步进电机内部结构、驱动原理图和汇编程序

步进电机在控制系统中具有广泛的应用。

它可以把脉冲信号转换成角位移,并且可用作电磁制动轮、电磁差分器、或角位移发生器等。

有时从一些旧设备上拆下的步进电机(这种电机一般没有损坏)要改作它用,一般需自己设计驱动器。

本文介绍的就是为从一日本产旧式打印机上拆下的步进电机而设计的驱动器。

本文先介绍该步进电机的工作原理,然后介绍了其驱动器的软、硬件设计。

1. 步进电机的工作原理该步进电机为一四相步进电机,采用单极性直流电源供电。

只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。

图1是该四相反应式步进电机工作原理示意图。

图1 四相步进电机步进示意图开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。

当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。

而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。

依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。

四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。

单四拍与双四拍的步距角相等,但单四拍的转动力矩小。

八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。

单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2.a、b、c所示:a. 单四拍b. 双四拍c八拍图2.步进电机工作时序波形图2.基于AT89C2051的步进电机驱动器系统电路原理步进电机驱动器系统电路原理如图3:图3 步进电机驱动器系统电路原理图AT89C2051将控制脉冲从P1口的P1.4~P1.7输出,经74LS14反相后进入9014,经9014放大后控制光电开关,光电隔离后,由功率管TIP122将脉冲信号进行电压和电流放大,驱动步进电机的各相绕组。

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

综合实践报告之第二次大作业
题目:步进电机控制设计
说明:在工业电气自动化工程中,步进电机是一种常用的控制设备,它以脉冲信号控制电机的转速,在数控机床、仪器仪表、计算机外围设备以及其它自动设备中有广泛的应用。

步进电机是指一步步走的电动机,所谓“步”指转动角度,每步都会使电机转过一个固定的角度。

步进电机有不同的种类,但其控制方法均相同,均以脉冲信号进行驱动,很适合使用单片机来进行控制。

本次大作业要求设计一个步进电机的控制部分。

已知:
采用2相制5线步进电机,其结构如下图所示,线圈中心抽头X1与X2连接在一起;
B 相X1A 相
2相步进电机
步进电机采用1相激磁法,即在每一个瞬间只有一个线圈导通,其它线圈休息; 单片机与步进电机之间可采用ULN2003类的驱动IC ;
要求:
查找资料,设计出步进电机的硬件连接电路图; 给出控制软件流程图;
用汇编语言写出控制软件的代码。

提示:本作业对电机的转动方向不做要求,在实际应用中,改变线圈激磁的顺序可以改变步进电机的转动方向,每送一次激磁信号后应经过一小段时间延时,让步进电机有足够的时间建立激励磁场及转动。

可以使用单片机的~端口输出控制信号,经驱动IC 传至步进电机。

电路图设计说明
此控制电路选用AT89S51型单片机作为驱动时序的输出控制器,其输出作为两相四线步进电机的时序信号,经过驱动芯片ULN2003放大后输入到两相四线步进电机的输入端口;单片机作为控制指令的输入按键K1-K3的输入端口,K1为电机正转按键,K2为电机正转按键,K3为电机停止按键,这三个按键均为高电平输入有效,按一下K1电机正转,按一下K2电机反转转,按一下K3电机停止。

其硬件电路如图一:
控制程序流程图
由于ULN2003是非们输出电路所以端口输出低电平才是有效驱动电平,其控制程序流程图如图二:
控制程序
K1 BIT
K2 BIT
K3 BIT
K_OLD EQU 30H
K_NEW EQU 31H
;---------------------------------------------------------
ORG 0000H
JMP MAIN
ORG 0030H
;---------------------------------------------------------
MAIN:
MOV SP,#60H
MOV P1,#00H
MOV P0,#0FFH
MOV K_OLD,#04H
MAIN1:
MOV R2,#4 ;给R2赋值4循环移位次数
CALL K_SCAN ;键扫描
MOV A,K_NEW
CJNE A,#00H,MAIN2 ;是否有按键按下
MOV A, K_OLD ;
JMP MAIN4
MAIN2:
CALL DELAY ;延时示去抖动
CALL K_SCAN ;再次判断键是否按下
MOV A,K_NEW
CJNE A,#00H,MAIN3 ; 再次判断键是否按下
MOV A, K_OLD
JMP MAIN4
MAIN3:
MOV K_OLD ,A
MAIN4:
JB ,LOOP1 ;K1按下既输入为001电机正转指令JB ,LOOP2 ;K2按下既输入为010电机反转指令
JB ,LOOP3 ;K3按下既输入为110电机停止指令
JMP MAIN1
;电机正转控制时序
LOOP1:
MOV A,#0FEH
LOPP1A:
MOV P0,A
CALL DELAY ;延时
RLC A ;左移1位
DJNZ R2,LOPP1A
JMP MAIN1
;电机反转控制时序
LOOP2:
MOV A,#0F7H
LOPP2A:
MOV P0,A
CALL DELAY ;延时
RRC A ;右移1位
DJNZ R2,LOOP1A
JMP MAIN1
;电机停止控制时序
LOOP3:
MOV A,#0FFH
MOV P0,A ;输出1111电机停止
JMP MAIN1
;---------------------------------------------------------
;K_SCAN:
; MOV K_NEW,#00H
; MOV A,P1 ;将P1端口的输入状态读入
; ANL A,#07H ;保留P1端口状态的低三位
; MOV K_NEW,A ;将K1,K2,K3的输入状态存入K_NEW, ; RET
;---------------------------------------------------------
;---------------------------------------------------------
;延时子程序
DELAY:
MOV R6,#200
DEL:
MOV R7,#0FFH
DJNZ R7,$
DJNZ R6,DEL
RET
;---------------------------------------------------------。

相关文档
最新文档