(完整word版)步进电机驱动程序(用定时的方式来控制步进电机)
#include <REG52.H>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit PUL  = P1^0;          //脉冲输入端
sbit DIR  = P1^1;          //方向控制端
sbit ENBL = P1^2;          //使能端       
uint num;
/*xms*1ms毫秒延时函数*/
av女神void delay(uint xms)
{        uint a,b;
        for(a=xms;a>0;a--)
                for(b=110;b>0;b--);
}
void init()
{
转租        TMOD|= 0x01;                          //设置定时器0为工作方式1,16为定时器/计数器
        TL0 = (65535-10)%256;                //设置定时初值
        TH0 = (65535-10)/256;                //设置定时初值
        ET0  = 1;                                      //开启定时器0中断
        TR0  = 1;                                      //关闭定时器0
沈阳3.8大案        EA  = 1;
}
void main()
{
    init();
        DIR  = 1;
          ENBL = 1;星际之狼
        while(1)
        {if(num==12800)
                  {
                    DIR=~DIR;
                          num=0;
                  TR0=0;
                  delay(1000);
                  TR0=1;
                  }
        }
               
私募基金运作模式}
/*定时器0中断服务函数 */
void T0_timer() interrupt 1               
{
        TL0 = (65535-10)%256;                //设置定时初值
        TH0 = (65535-10)/256;                //设置定时初值
//        TL0 = 0xEE;                //设置定时初值
//        TH0 = 0xFF;                                 
        PUL = ~PUL;
        num++;
}
使能端打开,电机处于工作状态
输出的脉冲数计数
//使能端关闭,电机处于停止工作状态
初始化定时器1
当过兵站过岗禁止所有中断
预加时间timer
256分频
启用定时器溢出中断
允许所有中断
常规中断服务
预加载timer
异或运算
计算方式65536-16000000/256/20HZ=62411

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。