打印

上次被华为鄙视了,写程序还真用到了他出的那道题,请大

[复制链接]
3003|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ccjchen|  楼主 | 2007-11-25 14:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是我学习大家的将n个字节从一个地址拷贝到另一个地址的函数,但是发现如果将这个函数调用7次以上,程序就不能正常运行。我的主芯片为AT89C55,用8279扩展 的4*4键盘来控制选择lcd 不同的屏幕。当调用mem_cpy函数在程序中出现7次以后,键盘不起作用;7次及以下完好。这是为什么?难道堆栈区不够用吗?请各位大哥大姐再给小弟指导一下!

void mem_cpy(void *t,void *s,uchar len)
{
    char *t1,*s1;
    t1=(char *)t;
    s1=(char *)s;
    while (len--)  
    {
      *t1++=*s1++;
    }
}
在程序中也就是将以下两种名字的数组相互拷贝而已,
uchar idata dig1[7]={"0 2.6 0"};
uchar idata dig2[7]={"4 5.0 0"};
uchar idata dig3[7]={"4 5.0 0"};
uchar idata dig4[7]={"4 5.0 0"};
uchar idata shu1[7]={"0 3.5 0"};
uchar idata shu2[7]={"4 3.5 0"};
uchar data shu3[7]={"4 3.5 0"};
uchar idata shu4[7]={"4 3.5 0"};

相关帖子

沙发
ccjchen|  楼主 | 2007-11-25 20:13 | 只看该作者

郁闷,把idata 去掉就行了,难道间接寻址的片内存储空间不

使用特权

评论回复
板凳
原野之狼| | 2007-11-25 23:35 | 只看该作者

这事儿够玄乎~~~

不过你写得这个程序是不对的。
请参阅旧贴。

还有你的数组初始化比较奇怪,不知道这样做的目的何在?
去查阅一下C语言的教材,看看字符串的处理应该注意些什么问题?

使用特权

评论回复
地板
ayb_ice| | 2007-11-26 08:29 | 只看该作者

感觉程序本身问题不大

只是有点重复定义,char *t1,*s1;两个变量完全没有必须定义。
进不了华为是正常的。

使用特权

评论回复
5
forthlab| | 2007-11-26 09:30 | 只看该作者

char *t1,*s1;没有分配空间

将内部idata的数据冲掉了。

使用特权

评论回复
6
xwj| | 2007-11-26 09:40 | 只看该作者

唉,这程序写得...

使用特权

评论回复
7
qiushui007| | 2007-11-26 14:07 | 只看该作者

重复定义,重复占用空间

使用特权

评论回复
8
qiushui007| | 2007-11-26 14:09 | 只看该作者

贴段代码

void _memcpy(uchar *t,uchar *s,ulong Len)
{   
    while(Len--)    
       (*t++) = (*s++);    
}

使用特权

评论回复
9
eydj2008| | 2013-4-16 19:56 | 只看该作者
练内功是不能浮躁的,要静得下心。

你看8楼的,写得多简练。而且不需要申请内存空间。

使用特权

评论回复
10
eydj2008| | 2013-4-16 19:56 | 只看该作者
好好反省一下,自己为什么要画蛇添足。

使用特权

评论回复
11
duhemayi| | 2013-4-17 08:37 | 只看该作者

使用特权

评论回复
12
jiangfuquan999| | 2013-4-17 11:18 | 只看该作者

使用特权

评论回复
13
HORSE7812| | 2013-4-17 17:29 | 只看该作者
forthlab 发表于 2007-11-26 09:30
将内部idata的数据冲掉了。

不明白,求解

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

446

帖子

1

粉丝