请教51 内存 初始化

[复制链接]
3519|15
 楼主| itelectron 发表于 2010-3-18 13:47 | 显示全部楼层 |阅读模式
#include <reg52.h>

#define RAM_START *(( unsigned char *)0x01




void Memory_Memset(unsigned char idata *pRam, unsigned char mChar, unsigned char mLen)
{
  while (mLen--)
  {
    *pRam++=mChar;
  }
}

//-----------------------------------------------------------
void main(void)
{
//系统模块初始化
Memory_Memset(&RAM_START, 0xFF, 0x7F);//内存初始化
while(1)
{
}
}
 楼主| itelectron 发表于 2010-3-18 13:48 | 显示全部楼层
郁闷啊  就是初始化 不了
HWM 发表于 2010-3-18 13:57 | 显示全部楼层
你把“寄存器”都扰乱了,把RAM_START (0x01)后移。

其实根本不用费此心,启动程序中早已经初始化好了。
 楼主| itelectron 发表于 2010-3-18 14:03 | 显示全部楼层
#define        RAM_START        (*(( unsigned char *)0x20)) //内存起始地址
还是不行:L

Memory_Memset(&RAM_START, 0xFF, 0x7F);                //内存初始化
 楼主| itelectron 发表于 2010-3-18 14:05 | 显示全部楼层
void Memory_Memset(unsigned char idata *pRam, unsigned char mChar, unsigned char mLen)
{
  while (mLen--)
  {
    *(pRam++)=mChar;
        P1=        pRam;
        P2=        *pRam;
  }
}
 楼主| itelectron 发表于 2010-3-18 14:07 | 显示全部楼层
你把“寄存器”都扰乱了,把RAM_START (0x01)后移。

其实根本不用费此心,启动程序中早已经初始化好了。
HWM 发表于 2010-3-18 13:57


我只是用KEIL  调试下看看
 楼主| itelectron 发表于 2010-3-18 14:08 | 显示全部楼层
前面 忘了 已经用了一些  变量  不能从0x00开始
HWM 发表于 2010-3-18 14:18 | 显示全部楼层
注意填数的范围,别碰到其他已用单元(如寄存器组,变量,栈等);
假程序匠人 发表于 2010-3-18 16:27 | 显示全部楼层
你死定了,哈哈,有这样做的吗!
 楼主| itelectron 发表于 2010-3-18 17:02 | 显示全部楼层
TO 9 楼 肯定有 啊

要是做一些 功率 器件的控制

然后看门够REST  那么就要清RAM
HWM 发表于 2010-3-18 17:11 | 显示全部楼层
to 10 楼:

建议别这样做。watch-dog复位时通常还是从系统复位点开始执行的,因此和上电复位一样无需考虑清RAM操作。
abcejs 发表于 2010-3-18 17:45 | 显示全部楼层
是51单片机的内存吗??
maomao2126 发表于 2010-3-18 21:09 | 显示全部楼层
没看明白第一个参数unsigned char idata *pRam 中idata是什么东西?
 楼主| itelectron 发表于 2010-3-18 21:47 | 显示全部楼层
反正偶 用51是不会去清RAM  的、
只是用了DSP 后  突然想在 51上 试下看
原野之狼 发表于 2010-3-19 08:34 | 显示全部楼层
1 看门狗复位等同于上电复位 不需要再清内存
2 楼主这样的做法 得避开寄存器区 变量区 堆栈区
3 函数没有做参数检查 很容易误伤
 楼主| itelectron 发表于 2010-3-19 23:29 | 显示全部楼层
谢谢 楼上 各位

貌似 看到个 山寨 圈圈  12楼
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:MARK: zhi kan ji shu

274

主题

2761

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部