极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15388|回复: 5

ARDUINO实现同样的功能,用自带函数很占资源啊

[复制链接]
发表于 2012-3-27 20:18:29 | 显示全部楼层 |阅读模式
今天小试了一把0-7口的流水灯,一个用digitalWrite,一个用PORTD,两个资源占用率差三分之一啊!

void setup()
{
  char i;
  for(i=0;i<8;i++)
  {
   pinMode(i,OUTPUT);
  }
}

void loop()
{
  char i;
  while(1)
  {
   for(i=0;i<7;i++)
   {
     digitalWrite(i,HIGH);
     delay(100);
     digitalWrite(i,LOW);
   }
   
   for(i=7;i>0;i--)
   {
     digitalWrite(i,HIGH);
     delay(100);
     digitalWrite(i,LOW);
   }
}
}
占用资源:Binary sketch size: 1072 bytes (of a 30720 byte maximum)


void setup()
{
  DDRD=0xff;
}

void loop()
{
  unsigned char i;
  PORTD=B00000001;
  while(1)
  {
    for(i=0;i<7;i++)
    {
      delay(100);
      PORTD=PORTD<<1;
    }
   
    for(i=7;i>0;i--)
    {
      delay(100);
      PORTD=PORTD>>1;
    }

  }
}

占用资源:Binary sketch size: 710 bytes (of a 30720 byte maximum)
回复

使用道具 举报

发表于 2012-3-28 11:22:40 | 显示全部楼层
便利性上有得,资源利用上有失。我觉得Arduino有点中级语言的意思,就像C语言的效率拼不过汇编是必然地,看需求了呗。Arduino调试起来方便,大体框架上调好了,效率上跟不上再重写移植什么的工作量就小多了吧。

想起来那个64K大赛了,那代码写的……神迹啊,不过别说写了,能看懂的我觉得就是神人了{:soso__16737568882237233485_2:}
回复 支持 反对

使用道具 举报

发表于 2012-3-28 11:45:52 | 显示全部楼层
肯定的嘛~~~
回复 支持 反对

使用道具 举报

发表于 2012-3-28 16:27:57 | 显示全部楼层
这样的方法,你得记清楚arduino 引脚号与mega芯片引脚号对应关系,在适当的地方用这个可以,如果每个地方都这么用就没必要了~~~
回复 支持 反对

使用道具 举报

发表于 2012-3-29 09:17:10 | 显示全部楼层
双刃剑而已,凡是必是有利有弊,再说如果绕过arduino的库去直接编程,那还要arduino干嘛,直接用avr的环境算了
回复 支持 反对

使用道具 举报

发表于 2012-3-30 12:26:41 | 显示全部楼层
{:soso_e120:}汇编吧,最小了
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-29 16:11 , Processed in 0.044164 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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