阅读:2221回复:15
D12是怎么判断传的是数据还是命令(附上周立功开发板的原理图)viod outportb(unsigned int Addr,unsigned char Data) { *((unsigned char xdata *)Addr)=Data; } 周立功说Addr是D12的地址,Data是输出的数据和命令。当Addr为奇数时表示输出的是命令, 而偶数标是输出的是地址,但我在电路图上怎么也看不出。A0脚接地了,迷糊; A0:地址位。A0=1:选择命令,A0=0:选择数据。该位在多路地址/数据总线配置时可忽略, 应将其接高电平。这就更加迷糊了。 请问“在多路地址/数据总线配置时”怎么D12区分地址和数据 |
|
沙发#
发布于:2003-12-31 11:30
我也想知道原因!
|
|
板凳#
发布于:2003-12-31 11:40
我刚刚看了一下电路图,不知道你的跟我的是不是一样的,我先寄一份给你,你再看看。
据我理解,单片机和D12之间接了8根数据线,D0-D7,单片机通过这几根线和D12通讯。当D12的数据是奇数时,是地址,反之是数据! 不知道我的理解是不是正确的,因为我才开始学。呵呵 |
|
地板#
发布于:2003-12-31 11:44
我刚刚看了一下电路图,不知道你的跟我的是不是一样的,我先寄一份给你,你再看看。
据我理解,单片机和D12之间接了8根数据线,D0-D7,单片机通过这几根线和D12通讯。当D12的数据是奇数时,是命令,反之是数据! 不知道我的理解是不是正确的,因为我才开始学。呵呵 |
|
地下室#
发布于:2003-12-31 11:53
谢谢!
给我一份! xujie3u@21cn.com |
|
5楼#
发布于:2003-12-31 14:12
刚才没说清楚,现在再说一下.
首先mcu假如是8051,用d0-d7与d12连接,用的是分时复用技术。首先8051通过d0-d1发送一个地址,d12接受,判断,是偶数则下一个数据是数据,否则下一个数据则是命令;8051发数据的整个过程分两步,先发地址,再发数据或命令,d12根据前面一步的数据判断下面的数据是什么! 不知道说清楚没有?希望以后能多多交流,共同进步。可以发信交流哦。 |
|
6楼#
发布于:2003-12-31 14:51
中午,我把以前有关d12的帖子看了一遍,有收获,这个问题
版主在2000年就已经回答了,拷贝如下: 1. 如果你是用总线方式和D12通讯: inportb -> movx dptr, a outportb -> movx a, dptr 其实,就是把D12当作一个外部RAM来读写; 2. yes.Interrupt Register的bit 0; 3. 如果是用51的总线方式,就是把51的ALE,RD,WR和D12的ALE,RD,WR对应相 连,P0接D12的D0-7,就把A0接VCC,用下面的代码发送SetAddress: mov dptr, #1 ; 给奇数地址发送命令 mov a, #d0h movx dptr, a mov dptr, #0 ; 给偶数地址发送数据 mov a, ADDRESS or a, #80h ; 把地址的最高位设为1(Enable Address) mov dptr, a 如果你没有用总线方式,比如没有把ALE,RD,WR相连,就要控制A0并且把P0当作 普通的I/O口来操作。 |
|
7楼#
发布于:2003-12-31 15:05
电路图
|
|
|
8楼#
发布于:2003-12-31 15:13
是的我也是2001年就开始搞usb,由于当时只处在学习阶段,看了一段时间没看明白。再加上毕业压力比较大就没有搞他了。
以前我是看到过有人问这个问题,但是我上网不方便,而且网速其慢。所以没有找以前的,请原谅。 我一年多没有上驱动网了,想不到驱动朋友的热情有赠无减。 thanks to all |
|
9楼#
发布于:2003-12-31 15:27
我看了也觉得是这样。但我在philips的芯片资料上找不到相应的说明。
这是芯片说明 |
|
|
10楼#
发布于:2003-12-31 15:43
我在资料中也没找到明确的说明.
但是,ale\\a0 的管脚说明可以看出一点. 不管怎样,做个实验就知道了. |
|
11楼#
发布于:2003-12-31 19:04
周立功那里有一份中文版的关于D12的说明
|
|
12楼#
发布于:2003-12-31 20:20
周立功那里有一份中文版的关于D12的说明 我怎么没有,我还买了它的书,好像也没有,你能传上来看看吗? 谢谢 |
|
13楼#
发布于:2004-01-01 14:04
我在资料中也没找到明确的说明. 是不是那个中文的关于firmware编程的,我看了上面好像也没有啊 |
|
14楼#
发布于:2004-01-01 21:27
我今天做了实验,没成功!
程序很简单,就是读芯片id,但结果是0000。肯定错了。 电路也很简单,照d12资料上的接。 d12_A0接51_P3.3, d12_cs,d12_ale接地, d12_rst接高电平, d12_rd,d12_wr接51_rd,51_wr d12_data(0-7)接51_P0 其他都悬空。 51的时钟没用d12_clkout,会有问题吗? 程序中用三总线读写d12,如果是命令:先a0=1,然后像读写 外部ram的方法。数据类似,不可以否? 请高手指点!!! |
|
15楼#
发布于:2004-01-02 10:50
多路的情况下,需要使用ALE、CS锁存地址,我不喜欢使用,就把他们接到固定电平上了,也就是说没有使用“多路”。
把单片机的P1接到D12的数据总线,单片机的一个通用IO接到D12的管脚 A0,由其电平决定是命令还是数据。 关键还是要看你的具体应用电路的接法。 |
|
|