找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4341|回复: 7
收起左侧

新手请教 利用中断定时器来加速步进电机

[复制链接]
ID:46050 发表于 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];  
 }

回复

使用道具 举报

ID:27916 发表于 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 发表于 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 发表于 2012-11-10 10:18 | 显示全部楼层

你上你可以测试一下如果可以那最好

 

我个人不用C

 

不过感觉下面这个地方是不是要加上大括号?

 

  if(Cnt<8)   Cnt++;
   else   

  

 Cnt=0;
   P3=F_Rotation[Cnt];  

回复

使用道具 举报

ID:46050 发表于 2012-11-16 18:43 | 显示全部楼层
  这个是取步进电机 4根信号线的数组的   不能修改的
以下是引用青苹果在2012-11-10 10:16:05的发言:

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:46050 发表于 2012-11-16 18:44 | 显示全部楼层
不加大括号的 如果CNT 小于8 则 cnt++ ,P0取数组CNT 否则 CNT等于0
以下是引用青苹果在2012-11-10 10:18:41的发言:

你上你可以测试一下如果可以那最好

 

我个人不用C

 

不过感觉下面这个地方是不是要加上大括号?

 

  if(Cnt<8)   Cnt++;
   else   

  

 Cnt=0;
   P3=F_Rotation[Cnt];  

回复

使用道具 举报

ID:46050 发表于 2012-11-16 18:46 | 显示全部楼层
修改这个数值诺 感觉应该是对的
以下是引用青苹果在2012-11-10 10:14:24的发言:

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:7485 发表于 2012-11-16 22:19 | 显示全部楼层
以下是引用cisforcer在2012-11-16 18:44:59的发言:
以下是引用青苹果在2012-11-10 10:18:41的发言:

你上你可以测试一下如果可以那最好

 

我个人不用C

 

不过感觉下面这个地方是不是要加上大括号?

 

  if(Cnt<8)   Cnt++;
   else   

  

 Cnt=0;
   P3=F_Rotation[Cnt];  

不用C?用什么?汇编?

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表