论坛风格切换切换到宽版
  • 3729阅读
  • 10回复

avr的变量,可以有256个byte的类型吗? [复制链接]

上一主题 下一主题
离线hocool
 
发帖
20748
只看楼主 倒序阅读 0楼 发表于: 2011-03-03
256个byte类型组成数组来用。
离线bd1es
发帖
2096
只看该作者 1楼 发表于: 2011-03-03
可以的,网上有几个多精度库做得不错,专用来算大数。我试过bigdigits,略微修改就可以用在avr上。

当然咧,使用256字节的变量恐怕至少需要2k ram的机器才行,要不会闷热拥挤
离线BD4XR
发帖
8746
只看该作者 2楼 发表于: 2011-03-03
'
可以的,网上有几个多精度库做得不错,专用来算大数。我试过bigdigits,略微修改就可以用在avr上。
当然咧,使用256字节的变量恐怕至少需要2k ram的机器才行,要不会闷热拥挤 [表情] 。
'
楼主是说256个变量吧。。。
离线BG4UVR
发帖
11207
只看该作者 3楼 发表于: 2011-03-03
开始我也没看明白好酷说的意思,菜籽分析了后,觉得应该是这样的。可能好酷的意思是avr可不可以有256个 字节型的变量。如果是,那当然可以。
离线ba6iv
发帖
1285
只看该作者 4楼 发表于: 2011-03-04
如果是256个字节的变量应该没问题,avr低端的m8都有1k的ram,我做sd卡实验时,定义过512个uchar的数组保存扇区,估计用到900多个也没问题,给系统剩点儿就行了。
离线hocool
发帖
20748
只看该作者 5楼 发表于: 2011-03-04
for (r=0;r<=256;r++){
  shejing(r)=1024;
next r
这样用的。
离线BG4UVR
发帖
11207
只看该作者 6楼 发表于: 2011-03-04
'
for (r=0;r<=256;r++){
  shejing(r)=1024;
next r
这样用的。
'

0,1,2,3,......254,255,256 ----------> 这是257个数。。

要256个,这样就行了:

for(i=0;i<=255;i++)
{
.....
}

补充:刚才想了一下,有个重要的问题需要考虑。就是上面的i不能声明成unsinged char, 一定要声明成unsigned int,不然循环就死了……

再补充:当然,声明成 unsigned int 也并不是唯一的方法,更并不一定是最好的方法。(比如换个do... while 循环什么的~)
离线ba6iv
发帖
1285
只看该作者 7楼 发表于: 2011-03-04
'
0,1,2,3,......254,255,256 ----------> 这是257个数。。
要256个,这样就行了:
for(i=0;i<=255;i++)
{
.....
}
补充:刚才想了一下,有个重要的问题需要考虑。就是上面的i不能声明成unsinged char, 一定要声明成unsigned int,不然循环就死了……
'
好像用uchar没问题吧!

改一下
for (i = 0; i < 256; i++)
{
..........
}
离线hocool
发帖
20748
只看该作者 8楼 发表于: 2011-03-04
单片机的内存也很牛x阿。如果是

for i=1;i<=65536;i++;{

  shejing(i)=1023;

next i;

这样行不行呢?
离线BG4UVR
发帖
11207
只看该作者 9楼 发表于: 2011-03-05
'
好像用uchar没问题吧!
改一下
for (i = 0; i < 256; i++)
{
..........
}
'

uchar 的变量,最大只能表示为0xff,即255。所以“ i < 256 ”是永远成立的,这个循环无法退出,是个死循环。
离线BG4UVR
发帖
11207
只看该作者 10楼 发表于: 2011-03-05
'
单片机的内存也很牛x阿。如果是
for i=1;i<=65536;i++;{
  shejing(i)=1023;
next i;
这样行不行呢?
'

理论上是没有问题的,但实际上avr芯片还没有能拥有这么多ram容量的型号。