arduino就像一个美丽的女人却开发不了
之前买来的UNO感觉引脚太少了,不好用。现在嘛自己做了一块MEGA2560,经过测试没有问题,可是引脚多是多了,但是感觉编程纯小白的我没有能力用起那么多引脚了,不得不感叹人就是个矛盾体啊,我在想ARDUINO确实比起其它单片机容易上手,但是要学深入好像比其它单片机难也。为什么这样觉得呢?因为我觉得ARDUINO要像其它单片机灵活控制IO口很坑爹,AVR单片机(为了输写方便,我知道ARDUINO本身主控制器就是一块AVR单片机,这里指的AVR单片机是非ARDUINO的AVR单片机)比如操作PB口的八个引脚时可以DDRB=0xff;一句多简单的事就设置了八个IO口为输出了,然后呢,在读和写碰到要同时控制8个IO口时实在不敢恭维ARDUINO,到现在还不知道怎么样同时方便地操作八个IO口的输出状态以及读取八个IO口状态。求高手指点下怎么样方便地像AVR单片机一样PORTB=0x_ _给八个IO口赋值;或者 D = PINB方便地读取等这样的操作。对了,下面附上一个我写的:同时(一个字节赋值给8个IO口)写八个IO口的输出的程序,希望有高手在帮我指点上面问题时,也帮我改善一下下面的程序:char pin[] ={ 6, 7, 8, 9, 10, 11, 12, 13 };//用一个数组定义要控制的8个IO口
void setup()
{
Serial.begin(9600);
for(int a=0;a<8;a++)//设置要控制的8个IO为输出状态
{
pinMode(pin,OUTPUT);
}
}
void loop()
{
Wrt_CMD(0xaa);//这里我写出了一个值为1010 1010,经过检测,这8个IO口确实如愿实现IO口的电平控制。
}
void Wrt_CMD(unsigned int cmd)//通过给cmd赋值实现同时控制8个IO口。
{
for (int db_line = 0;db_line < 8;db_line++ )
{
if (cmd & 0x80)
digitalWrite(pin, HIGH);
else
digitalWrite(pin, LOW);
cmd <<= 1;
}
}
在发此贴之前,先谢谢本论坛高手的回复和帮助! 本帖最后由 奈何col 于 2011-12-28 13:08 编辑
PORTB = 0xFF;
DDRB= 0xFF;
直接这样写,就PB全高了~~~程序效率高多了
直接写gcc代码~可以正常编译的~
奈何col 发表于 2011-12-28 13:03 static/image/common/back.gif
PORTB = 0xFF;
DDRB= 0xFF;
直接这样写,就PB全高了~~~程序效率高多了
:'(无奈老大理解错我的意思啦,用普通AVR单片机编程的话,利用ICC,WINAVR等编程软件这样写是没有问题的,但我的意思是ARDUINO是否也可以这样写呢?看我上面写的一个程序如果用普通AVR写的话只要两行:DDRB=0XFF;PORTB=0XAA;就搞定了。但是我用ARDUINO就不知道怎么写好了。特别是一次性读取八个IO口。:( プ汏坏疍 发表于 2011-12-28 19:10 static/image/common/back.gif
无奈老大理解错我的意思啦,用普通AVR单片机编程的话,利用ICC,WINAVR等编程软件这样写是没有问题的, ...
比如说:我要用ARDUINO 控制一个16个按键的矩阵键盘,要怎么样控制比较好呢? 用arduino的函数,就只能一个个的读啊~对程序有要求的话,就直接用GCC写啊~ 奈何col 发表于 2011-12-28 19:20 static/image/common/back.gif
用arduino的函数,就只能一个个的读啊~对程序有要求的话,就直接用GCC写啊~
嗯嗯。请问一下无奈大哥,arduino的主IC我们用GCC写了程序生成HEX文件后可以烧到上面去吗?另外烧写的时候是不是就不能用USB线直接给ARDUINO烧HEX文件呢? 你要直接烧,得用spi接口下,就UNO上面那个ICSP,,,,买个10多块的usbisp就可以下了 其实也可以用转串口的usb下载,但得有单独的上位机程序,,,这个我就不知道哪有了 奈何col 发表于 2011-12-29 23:27 static/image/common/back.gif
其实也可以用转串口的usb下载,但得有单独的上位机程序,,,这个我就不知道哪有了
额额,如果这样的话就是直接抛开ARDUINO,把ARDUINO的主IC当成普通的AVR用了,对吗? 是的~~~~~~~· 奈何col 发表于 2011-12-30 02:46 static/image/common/back.gif
是的~~~~~~~·
看来这样还是很杯具。我想要的结果是如果能够:既有ARDUINO的“血统”,可以方便应用ARDUINO的库和编程语言,又有普通AVR的另外一个优点,可以方便地控制ARDUINO的八个口,实现一个字节之类的赋值,如果可以这样的话估计写程序就可以集百家之所长,变得很灵活了。特别是对于习惯了玩51,AVR,PIC的人来说。:lol 奈何col 发表于 2011-12-30 02:46 static/image/common/back.gif
是的~~~~~~~·
谢谢无奈老大在此贴的不断解答哦。 奈何col 发表于 2011-12-28 19:20 static/image/common/back.gif
用arduino的函数,就只能一个个的读啊~对程序有要求的话,就直接用GCC写啊~
无奈老大,现在我好高兴呀,貌似找到方法了,http://www.geek-workshop.com/forum.php?mod=viewthread&tid=389 这是我们论坛的高手写的一个程序。哈哈。好激动啊。宣告问题解决,太谢谢老大们的无私解惑和分享了。
页:
[1]