搜索
bottom↓
回复: 6

飞思卡尔--图像采集--数组指针

[复制链接]

出0入0汤圆

发表于 2010-3-14 14:34:36 | 显示全部楼层 |阅读模式
图像采集的时候为了能尽可能多的采点,需要给从IO口读回来的数尽快地保存到数组中,有几种方法.
##############pooorfoool######
1.        汇编.(没有研究过该单片机的汇编指令和内存分配)
2.        将for循环拆开例如
For(i=0;i<3;i++)
{
                a=PORTA;
}
可以用
a[0]=PORTA;
a[1]=PORTA;
a[2]=PORTA;
代替,速度大大提高,但是代码量也相应增大很多。
3.使用for循环,速度慢,代码量小。现在要在此基础上优化。


使用for循环也后好几种方法
假设图像存储在二维数组中:unsigned char pic[2][10];

1.        直接保存到二维数组,
row为当前行
每次行中断中采集
void gather(void)
{
         char i;       
for(i=0;i<100;i++)
{
        pic[row]=PORTA;
}
row++;
}
速度慢,仿真了一下,大约要240条指令。
2.        先保存到一维数组中,有时间再转存到二维数组中。
假设有temp[10]一维数组
void gather(void)
{
         char i;       
for(i=0;i<100;i++)
{
        temp=PORTA;
}
row++;
}
大约110条指令,转存的时间没有算,不过应该不多。
3.        使用指针。也是有两种用法。
1)        unsigned char (*ptr)[10];
ptr=pic;
void gather(void)
{
         char i;       
       
for(i=0;i<100;i++)
{
        (*ptr)=PORTA;
}

ptr++;
}
                大约140条指令。使用简单。注意,经过在电脑上查看汇编(并不是codewarrior上,看不懂,vc上看的),unsigned char (*ptr)[10];并没有多分配空间,仅仅是分配了一个指针的空间,后面的10只是说明ptr每次前进几个存储单位(我猜的)你可以在电脑上用ptr自加前后printf(“%d”,ptr)看一下ptr变了多少。
        2)
2)                unsigned char (*ptr)[10];
unsigned char *pp;
ptr=pic;
void gather(void)
{
         char i;       
pp=*p
for(i=0;i<100;i++)
{
        *(pp++)=PORTA;
}

ptr++;
}
        大约99条指令,比一维数组还要快。这个里面相当于一维数组使用了指针(p指向一维数组的指针)

代码不严谨,没有判断指针有没有超界。这仅仅是在xs128上的结果,在51上,我查看了一下生成的汇编,发现代码条数是一维数组<二维数组<二维指针<一维指针,感觉是51寄存器太少,倒来倒去的造成的,没有具体分析。

出0入0汤圆

发表于 2010-3-14 21:35:04 | 显示全部楼层
mark!

出0入0汤圆

发表于 2010-4-24 00:21:42 | 显示全部楼层
ll

出0入0汤圆

发表于 2010-12-16 14:11:49 | 显示全部楼层
先标记

出0入0汤圆

发表于 2011-1-3 16:26:47 | 显示全部楼层
好,玩就是这样,采用不同方法测试

出0入0汤圆

发表于 2011-2-28 20:46:18 | 显示全部楼层
不是太懂,先标记一下

出0入0汤圆

发表于 2011-2-28 20:56:50 | 显示全部楼层
正在做飞思卡尔,很有参考价值~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-7 16:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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