打印

C51关于外部RAM的读写 想具体知道硬件是怎么操作的

[复制链接]
3148|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhjyuanji|  楼主 | 2012-9-30 13:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
char xdata CS1 _at_ 0xfe00; // CALL1使能
char xdata CS2 _at_ 0xfd00; // LK1使能
char xdata CS3 _at_ 0xfb00; // CALL2使能
char xdata CS4 _at_ 0xf700; // LK1使能
char xdata CS5 _at_ 0xef00; // LED1使能
char xdata CS6 _at_ 0xdf00; // LED2使能
char xdata CS7 _at_ 0xbf00; // LED1使能
char xdata CS8 _at_ 0x7f00;

然后程序中有这样一条代码:
powerFailure = CS1&0x40; //读入第一个芯片输出引脚的状态
if(powerFailure==0x40)
{//有电源失电
LED = 0;
}
else if(muteflag == 1)
{
LED = 1;
}
CS1到CS8是外部器件的片选端,我现在出现一个理解的问题,以前我以为xdata是指外部RAM(一个存储区),现在碰到这个也能像操作外部RAM一样的读取芯片的数据,一时转不过弯来,总工给我解释的很玄乎,是不是可以这么理解,在硬件上P2口自动输出0xfe,使第一个芯片使能,然后P1口读入该芯片输出口的八位数据(powerFailure = CS1&0x40;)

相关帖子

沙发
sedatefire| | 2012-9-30 14:18 | 只看该作者
当你访问xdata时,地址信号会从P1、P2口丢出
还有wr、ne等等
微机原理去翻出来看看吧

使用特权

评论回复
板凳
dqyubsh| | 2012-9-30 18:21 | 只看该作者
你这个定义是片选,那里的地址由所有地址线组合出来的,片选低电平时选中对应的芯片。选中的同时,数据线、控制线(读、写等)一起操作该外设芯片。这种并行操作方式,必须三总线同时操作。至于外设是RAM还是别的神马,都一样。

使用特权

评论回复
地板
znmcu| | 2012-9-30 19:35 | 只看该作者
确实有很多人认为外部ram的读写是需要写驱动的。

使用特权

评论回复
5
ningling_21| | 2012-9-30 20:37 | 只看该作者
相当于读取片外RAM,读取时需要P0,P2,ALE,WR,RD互相配合实现,汇编用MOVX指令...

使用特权

评论回复
6
znmcu| | 2012-9-30 21:21 | 只看该作者
以后,你会发现外部总线是多么有用。

使用特权

评论回复
7
zhjyuanji|  楼主 | 2012-10-2 09:39 | 只看该作者
5# ningling_21
ALE,WR,RD我看了下源代码里好像没有体现

使用特权

评论回复
8
coody| | 2012-10-2 09:43 | 只看该作者
LZ找一本51的基础书看看,里面有详细的访问时序。

使用特权

评论回复
9
znmcu| | 2012-10-2 12:32 | 只看该作者
程序里是看不到的,硬件自动完成

使用特权

评论回复
10
NE5532| | 2012-10-2 13:05 | 只看该作者
CPU硬件行为,只要是外部总线访问指令,会自动调用外部总线访问的,与程序无关,就像你要用自己的脚,脑袋可以下命令,你要别人帮你跑路,就得通过语言跟他交流。

使用特权

评论回复
11
znmcu| | 2012-10-2 13:11 | 只看该作者
寻址是cpu最基本的功能,是cpu取指和运行的基础,由cpu架构内核所实现的,无需使用者介入。总线,寻址等深入认识,确实需要领悟和体系结构方面的知识。需要积累。

使用特权

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

本版积分规则

61

主题

188

帖子

2

粉丝