阅读:1518回复:8
D12问题
我现在正在开始调试D12的程序,用的是51的单片机,在无DMA的方式下,reset、 eon_t、dmack_n 信号接5V,ale、cs_n、接地,dmreq悬空, wr_n、rd_n分别与单片机的写读信号相连。A0与p2.7相连。在初始化阶段最开始的5句程序是:
#define D12_COMMAND (*(unsigned char xdata *)0x8000) #define D12_DATA (*(unsigned char xdata *)0x0000) D12_COMMAND = 0xf3; D12_DATA = 0x06; D12_DATA = 0x03;/*初始化频率 12MHz */ 但是这积聚程序执行完以后,D12输出的时钟频率仍然为4M,这是为什么,我觉得这是最简单的功能,但是现在实现不了,下边的工作根本不用考虑了,哪位大虾指点一二,不胜感激。 |
|
沙发#
发布于:2002-10-10 09:22
多看d12 器件手册,那有详细说明
|
|
板凳#
发布于:2002-10-10 09:51
12M是初始值,很明显你的命令没有被写进去,可能是你的硬件设计有问题,是否P0口的驱动问题,如忘记加上拉电阻?方便留下电话号码,我的emial:smuhsy@163.net
|
|
地板#
发布于:2002-10-10 10:08
由于是实验板,我觉得简单,所以没有画原理图,P0口确实没有家上拉电阻,但是我目前的板子上只有89C51和D12芯片,我觉得驱动应该不存在问题的。
|
|
地下室#
发布于:2002-10-10 20:35
看看P0 P2 有没有输出,还有WR RD等.
|
|
|
5楼#
发布于:2002-10-10 22:57
#define D12_COMMAND (*(unsigned char xdata *)0x8000)
中(*(unsigned char xdata *)怎么理解啊??? |
|
6楼#
发布于:2002-10-11 09:15
因为他的板子是用A0选则地址或命令,而A0又和P2。7相接,所以0X8000地址时,P2脚输出地址的高8位,正好P2。7是1,所以是选择命令的。 :cool:
|
|
7楼#
发布于:2002-10-11 09:21
而前面的(*(unsigned char xdata *)则是用C语言写的汇编命令,在汇编语言中就是MOVX 0X8000,比如程序中的D12_COMMAND = 0xf3,在汇编中就是MOVX 0X8000,0Xf3. :cool:
|
|
8楼#
发布于:2002-10-11 09:54
用这种方式的话,最好是将普通IO口接到A0上。
要不就采用复用方式,ALE跟ALE相连,不用A0. |
|