当前位置: 代码迷 >> 单片机 >> 。C51单片机用L298驱动42步进电机
  详细解决方案

。C51单片机用L298驱动42步进电机

热度:62   发布时间:2016-04-28 15:18:30.0
求助。C51单片机用L298驱动42步进电机
我想把程序中的Delay_N_ms(10),换成用定时器延时0.5ms。要怎么改。求大神赐教。。在线等

#include<reg52.h>
typedef  unsigned char   uint8;
typedef  unsigned int    uint16;
 sbit IN1=P0^0;
 sbit IN2=P0^1;
 sbit IN3=P0^2;
 sbit IN4=P0^3;
 sbit ENA=P3^0;
 sbit ENB=P3^1;
unsigned char C[5]={0x01,0x04,0x02,0x08,0x00};

uint8 i = 0;
uint8 j = 0;
uint8 zf = 0;
uint16 counter;
void Delay_N_ms(uint16 N)
{
uint8 cnt = 110;
while(N--)
{
for(cnt = 110;cnt > 0; cnt--);
}
}



void main (void)               

{  
TMOD = 0x11;
TH0  = 0xFE;
TL0  = 0x34;
//TH1  = 0xFC;
//TL1  = 0x67;
TR0  = 1;
TR1  = 1;
ET0  = 1;
ET1  = 1;
EA   = 1;
ENA=0;
    ENB=0;
   



  while(1)
{
if( j > 180 ) j = 4;
if( j > 4 ) j = 0;

P0= C[j];
Delay_N_ms(10);
if(0 == zf)
{
j++; //控制 逆时针
}   
else
{  
j--;   //控制顺时针
}


 
}
 
void time1() interrupt 3
{
TH1  = 0xFC;
TL1  = 0x67;
counter++;
if(counter == 2000)
{
zf = ~zf;
counter = 0;
}
}


------解决方案--------------------
给你个类似的参考程序:
while(1)
{//加入的成对大括号
for(thou=0;thou
#defineuintunsignedint
#defineucharunsignedchar
sbitLED4=P2^0;//数码管千分位
sbitLED3=P2^1;//数码管百分位
sbitLED2=P2^2;//数码管十分位
sbitLED1=P2^3;//数码管个分位
ucharms20,s1;//20毫秒和1s变量定义(声明)
  相关解决方案