欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

。c51单片机用l298驱动42步进电机

更新时间: 2014-01-05 03:15:14 责任编辑: Author_N1

 

求助。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变量定义(声明)
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:15:14
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20156/
本文WWW.DOC100.NET DOC100.NET版权所有。