找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 5129|回復: 7
打印 上一主題 下一主題
收起左側(cè)

新手請教 利用中斷定時器來加速步進電機

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:46050 發(fā)表于 2012-11-9 23:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

對中斷定時器一知半解, 抄襲了下面的程序, 怎么修改成能夠修改成加速步進電機

 

#include <reg52.h>

 unsigned char code F_Rotation[]={0x01,0x05,0x04,0x06,0x02,0x0a,0x08,0x09}; 

 main()

   TMOD |=0x01;   //定時器設置 1ms in 12M crystal
   IE= 0x82;        //打開中斷     
   ET0 = 1;
   TR0=1;
   while(1)
   {  
      
   }
}
 void Timer0(void) interrupt 1 using 1
{
   static unsigned char Cnt;

   TH0=(65536-55000)/256;
   TL0=(65536-55000)%256;
  
   if(Cnt<8)   Cnt++;
   else      Cnt=0;
   P3=F_Rotation[Cnt];  
 }

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

使用道具 舉報

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

1、修改定時器的時間

 

 void Timer0(void) interrupt 1 using 1
{
   static unsigned char Cnt;

   TH0=(65536-55000)/256;
   TL0=(65536-55000)%256;
  
   if(Cnt<8)   Cnt++;
   else      Cnt=0;
   P3=F_Rotation[Cnt];  
 }

回復

使用道具 舉報

板凳
ID:27916 發(fā)表于 2012-11-10 10:16 | 只看該作者

2、修改那個8

 

 void Timer0(void) interrupt 1 using 1
{
   static unsigned char Cnt;

   TH0=(65536-55000)/256;
   TL0=(65536-55000)%256;
  
   if(Cnt<8)   Cnt++;
   else      Cnt=0;
   P3=F_Rotation[Cnt];  
 }

回復

使用道具 舉報

地板
ID:27916 發(fā)表于 2012-11-10 10:18 | 只看該作者

你上你可以測試一下如果可以那最好

 

我個人不用C

 

不過感覺下面這個地方是不是要加上大括號?

 

  if(Cnt<8)   Cnt++;
   else   

  

 Cnt=0;
   P3=F_Rotation[Cnt];  

回復

使用道具 舉報

5#
ID:46050 發(fā)表于 2012-11-16 18:43 | 只看該作者
  這個是取步進電機 4根信號線的數(shù)組的   不能修改的
以下是引用青蘋果在2012-11-10 10:16:05的發(fā)言:

2、修改那個8

 

 void Timer0(void) interrupt 1 using 1
{
   static unsigned char Cnt;

   TH0=(65536-55000)/256;
   TL0=(65536-55000)%256;
  
   if(Cnt<8)   Cnt++;
   else      Cnt=0;
   P3=F_Rotation[Cnt];  
 }

回復

使用道具 舉報

6#
ID:46050 發(fā)表于 2012-11-16 18:44 | 只看該作者
不加大括號的 如果CNT 小于8 則 cnt++ ,P0取數(shù)組CNT 否則 CNT等于0
以下是引用青蘋果在2012-11-10 10:18:41的發(fā)言:

你上你可以測試一下如果可以那最好

 

我個人不用C

 

不過感覺下面這個地方是不是要加上大括號?

 

  if(Cnt<8)   Cnt++;
   else   

  

 Cnt=0;
   P3=F_Rotation[Cnt];  

回復

使用道具 舉報

7#
ID:46050 發(fā)表于 2012-11-16 18:46 | 只看該作者
修改這個數(shù)值諾 感覺應該是對的
以下是引用青蘋果在2012-11-10 10:14:24的發(fā)言:

1、修改定時器的時間

 

 void Timer0(void) interrupt 1 using 1
{
   static unsigned char Cnt;

   TH0=(65536-55000)/256;
   TL0=(65536-55000)%256;
  
   if(Cnt<8)   Cnt++;
   else      Cnt=0;
   P3=F_Rotation[Cnt];  
 }

回復

使用道具 舉報

8#
ID:7485 發(fā)表于 2012-11-16 22:19 | 只看該作者
以下是引用cisforcer在2012-11-16 18:44:59的發(fā)言:
以下是引用青蘋果在2012-11-10 10:18:41的發(fā)言:

你上你可以測試一下如果可以那最好

 

我個人不用C

 

不過感覺下面這個地方是不是要加上大括號?

 

  if(Cnt<8)   Cnt++;
   else   

  

 Cnt=0;
   P3=F_Rotation[Cnt];  

不用C?用什么?匯編?

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表