找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4640|回复: 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];  
 }

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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];  

回复

使用道具 举报

5#
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];  
 }

回复

使用道具 举报

6#
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];  

回复

使用道具 举报

7#
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];  
 }

回复

使用道具 举报

8#
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 单片机教程网

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