找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5426|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

關(guān)于定時(shí)器步進(jìn)電機(jī)i=0什么意思

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:34166 發(fā)表于 2012-2-11 20:18 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

在這個(gè)程序里的定時(shí)中斷子程序里if(i++>1)         //改變電機(jī)的速度
                {
                  i=0;
                      flag=1;   

 

我看了好幾天這地方i=0沒(méi)明白起什么作用,請(qǐng)幫幫忙

 

1,MCU  STC89C52
2,步進(jìn)電機(jī)驅(qū)動(dòng)芯片ULN2003
顯示效果:
1,電機(jī)的方向可改變
************************************************/
#include"AT89x52.h"
#define uint unsigned int
#define uchar unsigned char

uchar plus[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09,0x00};   //電機(jī)正轉(zhuǎn)
uchar minu[]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09,0x00};   //電機(jī)反轉(zhuǎn)

sbit key1=P3^1;
bit flag;
uchar idata *x;

void control(bit cf,uchar n)        //電機(jī)控制函數(shù),返回變量為方向和步數(shù)
{
 uchar i;
 if(cf==0)x=plus;     //改變電機(jī)方向
 else x=minu;
 for(i=0;i<n;i++)     //記錄電機(jī)的步數(shù)
 {
  while(flag==0);
  flag=0;
 }
}

void init()    //初始化,開(kāi)定時(shí)器0
{
  TMOD=0x01;
  TCON=0x10;  
  TH0=(65536-5000)/256;    
  TL0=(65536-5000)%256;
  IE=0x82;
}

void timer0() interrupt 1
{
 static uchar i;
 if(i++>1)         //改變電機(jī)的速度
 {
  i=0;
      flag=1;                  //設(shè)置中斷標(biāo)志
  P1=*x++;                 //數(shù)組地址加1
  if(*x==0)x=x-8;       //判斷8個(gè)控制字后恢復(fù)初值
 }
 TH0=(65536-5000)/256;
 TL0=(65536-5000)%256;
}

void main()
{
init();
while(1)
{
 control(0,200);     //電機(jī)正轉(zhuǎn)
 control(1,200);     //電機(jī)反轉(zhuǎn)
}
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:27916 發(fā)表于 2012-2-11 21:16 | 只看該作者

 if(i++>1) //改變電機(jī)的速度 

 

這里不是有注釋嗎?改變點(diǎn)擊速度,也就是控制電機(jī)速度,,,

 

要改變電機(jī)的速度,可以把后面的1變大,2、3、4、5、、、、、值越大,速度越慢

 

 

回復(fù)

使用道具 舉報(bào)

板凳
ID:34166 發(fā)表于 2012-2-12 22:45 | 只看該作者
謝謝您的幫助
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表