flysquirrel
驱动牛犊
驱动牛犊
  • 注册日期2003-11-27
  • 最后登录2004-06-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1319回复:5

20请教对sl811内部寄存器的寻址方法

楼主#
更多 发布于:2003-12-23 09:36
读了相关芯片介绍,知道对sl811内部寄存器的寻址方法有A0  mode(index addressing) 和direct address两种,在A0 mode 下,讲到
A0为低时,写入地址,A0为高时,写入数据.那位兄弟说说这个的具体实现方法,A0指的又是什么?
还有用仿真器可以查看到sl811内部的寄存器数值吗?
flysquirrel
驱动牛犊
驱动牛犊
  • 注册日期2003-11-27
  • 最后登录2004-06-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-12-24 08:09
自己顶下
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-12-24 08:41
A0是811的引脚,你看仔细了吗?
flysquirrel
驱动牛犊
驱动牛犊
  • 注册日期2003-11-27
  • 最后登录2004-06-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-12-24 09:05
这个我知道的呀 我想知道A0的改变是怎样实现的,在写数据时的子程序
如下
void SL811Write(unsigned char a, unsigned char d)
{  
SL811H_ADDR=a;
SL811H_DATA=d;
}
我不知道在这过程中,A0由什么控制其值的改变.
wqs_79
驱动牛犊
驱动牛犊
  • 注册日期2003-11-27
  • 最后登录2009-09-25
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望31点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-12-24 09:22
请注意这样一段预定义:
xdata BYTE SL811H_ADDR _at_ 0x4000; // A0 = \'0\' to external memory
xdata BYTE SL811H_DATA _at_ 0x4001; // A0 = \'1\' (EZ-USB Dev Kit - SW4 ON)
最后那一位就是A0,是直接用I/O控制的,你自己的程序可以用一个I/O来控制它就行了。
我用的是430,没有并口功能,所以我用软件来做:
//*****************************************************************************************
// Output the Address to the 8-bit Data Bus -----------
//*****************************************************************************************
void OutPortAddr(uchar Addr)
{
 CS1_0; //Chip select
 A0_0; //A0 set to low, bus data is address
 PortOut; //set the port output!
 DataOut=Addr; //set the address to bus
 WR_0; //write enable the data read by the device
 nop;
 WR_1; //write disable,stop bus data
 A0_1;
 CS1_1;
}

//*****************************************************************************************
// Output one byte data to the 8-bit Data Bus ---------
//*****************************************************************************************
void OutPortData(uchar Data)
{
 CS1_0;
 A0_1; //A0 set to high,bus data is date
 PortOut; //set the port output
 DataOut=Data; //set date to bus
 nop;
 WR_0;
 nop;
 WR_1;
 CS1_1;
}
//*****************************************************************************************
// Byte Write to SL811H
// a = register address
// d = data to be written to this register address
//*****************************************************************************************
void SL811Write(BYTE a, BYTE d)
{
 OutPortAddr(a);
 OutPortData(d);
}

应该很清楚了吧,我也在做SL811,并口没有问题,我写SRAM已经成功了,USB部分正在做,一起努力吧。
flysquirrel
驱动牛犊
驱动牛犊
  • 注册日期2003-11-27
  • 最后登录2004-06-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-12-24 09:48
谢谢各位 发分了   以后多交流.我做的是读写u盘  
游客

返回顶部