0 跪求大侠赐教:C8051F040的外部存储器接口配置(已解决) - 电子设计论坛 - 21ic电子技术开发论坛
打印

跪求大侠赐教:C8051F040的外部存储器接口配置(已解决)

[复制链接]
2107|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
geergeer|  楼主 | 2008-9-20 19:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先对浏览帖子的大侠表示深深的感谢!
C8051F040的外部存储器接口配置代码如下所示(用低口作存储器接口,非复用方式,有块选择的分片模式,使用了串口0和外部中断0)
void Config_IO (void)
{
    SFRPAGE  = EMI0_PAGE;
    EMI0CF   = 0X18;
    EMI0CN   = 0X80;
    EMI0TC   = 0X83;

    SFRPAGE  = CONFIG_PAGE; //Port SFR's on Configuration page
    P0MDOUT  = 0XFF;
    P1MDOUT  = 0XFF;
    P2MDOUT  = 0XFF;
    P3MDOUT  = 0XFF;    
    XBR0     = 0X04;
    XBR1     = 0X04;
    XBR2     = 0X42;
    P0       = 0XC0;
    P1       = 0X00;
    P2       = 0X00;
    P3       = 0X00;
}
初始化好之后,我用仿真器单步执行程序,每次对外部存储单元(例如0X8010)寻址时,即执行指令MOVX @DPTR A时,用示波器无法抓到地址线(P1,P2口)上的电平变化(芯片工作在11M频率,示波器调到10NS级),说明地址线没有工作啊,这是为什么呢?
恳请大侠们赐教,再次感激!

相关帖子

沙发
geergeer|  楼主 | 2008-9-22 08:24 | 只看该作者

顶上去,急!

使用特权

评论回复
板凳
geergeer|  楼主 | 2008-9-22 09:39 | 只看该作者

补充

我已经在外部寻址的函数里加了SFRPAGE = CONFIG_PAGE,如下:

功能:向端口发送数据
void outportb(unsigned int DataOrCmd, unsigned char Data)
{
    SFRPAGE  = CONFIG_PAGE;
    *((volatile unsigned char *) DataOrCmd) = Data;//向外部写
}

功能:向端口接收数据
unsigned char inportb(unsigned int DataOrCmd)
{
    SFRPAGE  = CONFIG_PAGE;
    return *((volatile unsigned char *) DataOrCmd);//从外部读
}

示波器依然没有能够抓到地址线的变化。
之前,我反反复复用示波器抓地址线波形,重新编译,然后再抓,试了不下几十次,曾经有几次编译后能够抓到每次向外部选址时地址线的变化,但是重新编译后又抓不到了,好奇怪!!!

使用特权

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

本版积分规则

13

主题

54

帖子

0

粉丝