打印

再问所长:MCU通用处理程序的几个问题!

[复制链接]
2678|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
guorock|  楼主 | 2007-3-2 17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、“51系列内部的堆栈是向FF生长的,内部RAM内存分配是从FF向00开始的。”
我是这样理解的:51的堆栈范围只能为30H~7FH,00H~2FH为通用寄存器,80H~FFH为特殊功能寄存器,我们不能使用这两部分空间。剩下的30H~7FH可以用作堆栈或是用户数据存储。比如我们指定栈顶为30H,即MOV SP,#30H ,则堆栈从30H开始向上生长,而用户数据变量是从7FH开始向下分配,这样就要保证堆栈和用户数据不能冲突。

2、“该内存管理,只分配内存不释放内存,相当于在模块初始化时才确定的全局变量。”
这里全局变量的内存分配可以说是由我们来分配的。我想问的是:如果在.C文件开头定义全局变量,对它的内存分配应该是由编译器完成的。对这两种全局变量的内存分配,在地址上会不会有冲突呢?呵呵。

3、“int操作(对两个char操作)中被中断时可能发生操作熟被改变的情况”
以前编程序时,并没有这方面的考虑。这种考虑是只限于51呢,还是别的处理器也有这方面的考虑,那是不是所有的int操作都应进行关闭中断的保护措施。谢谢!

4、您给的文档中少给了Msg_PopMsg()函数,它应该是这样的:
//-------------------
//弹出消息字
//-------------------
unsigned char Msg_PopMsg()
{
    return sInMsg.aReadMsgBuffer[0];
}
对吧?
5、“后面几个阶段的培训内容:
图形设计软件的理论
嵌入系统图形窗口
设计辅助工具的重要性
大程序结构的软件设计模型

什么时候推出?期待ING。

多谢!

相关帖子

沙发
guorock|  楼主 | 2007-3-5 08:25 | 只看该作者

顶。

使用特权

评论回复
板凳
IC1008| | 2007-3-5 09:09 | 只看该作者

问题三,只限于8位机吧,我想

INT 是16位的
同理 LONG类型也会出现类似问题

使用特权

评论回复
地板
guorock|  楼主 | 2007-3-6 14:32 | 只看该作者

我顶。

使用特权

评论回复
5
guorock|  楼主 | 2007-3-8 08:18 | 只看该作者

UP!

使用特权

评论回复
6
电子之子| | 2008-6-27 00:28 | 只看该作者

关注

使用特权

评论回复
7
chinaboy20| | 2010-10-26 11:29 | 只看该作者
所长 你跑到哪去了!
好久没见你的大作了!
问题5 是不是夭折了!

使用特权

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

本版积分规则

141

主题

169

帖子

1

粉丝