sjshe
驱动牛犊
驱动牛犊
  • 注册日期2003-10-02
  • 最后登录2006-09-18
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1402回复:6

初学D12

楼主#
更多 发布于:2003-10-24 20:42
我现在刚刚在弄D12,什么经验也没有,也看了一些资料,感觉还是有点不懂,我准备将我做的一点点写下了,也许对其他像我一样的初学者有些帮助,大家也可以一起学习!

现在我只是把D12的电路自己搭起来了,弄了一个程序来测试了一下
芯片应该是正常工作了。以后的还要慢慢做了。
下面是测试的程序。c51编写的。

#include \"ADUC812.h\"
#include \"stdio.h\"
#include \"intrins.h\"

#define D12_command (*(unsigned char xdata *) 0xfff3)
#define D12_data (*(unsigned char xdata *) 0xfff2)

sbit D12_cs = P2^6;

void delay(char n)
{
          char i;
for(i=0;i<n;i++)
{
                     _nop_();
}
}


void main(void)
{
unsigned char a,b;
SCON = 0x52;
TMOD = 0x20;
TL0 = 0xfd;
TH0 = 0xfd;
TR1 = 1;        /*这一段是串口初始化*/
TI = 1;

printf(\"D12 test\");

P2=0xff;

D12_command=0xf3; /*设置D12的模式*/
delay(1); /*延时,保证时序,我用11.0592的晶振,可以不加,下同*/
D12_data=0x0b; /* 默认值*/
delay(1);
D12_data=0x03; /* 输出频率12M*/
delay(100);

D12_command=0xfd; /* 读D12 的ID*/
delay(1);
a=D12_data;
delay(1); /*一定要延时*/
b=D12_data;
delay(100);

printf(\",%x,%x,\",(int)a,(int)b);

while(1);
}

好了! 运行程序如果正常的话 从clockout应该有12m的频率,同时串口 因该有 两个数据 0x12 0x10 ,没问题就表示硬件ok! 我的ok了。
pandengzhe
驱动中牛
驱动中牛
  • 注册日期2003-01-17
  • 最后登录2005-04-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-10-25 09:46
这是固件吧,驱动呢?

你的驱动在2000、xp下正常吗?
大风卷兮,林木为摧,意苦若死,招憩不来。 百岁如流,富贵冷灰,大道日往,苦为雄才。 壮士拂剑,浩然弥哀,萧萧落叶,漏雨苍苔。
hanxuerong
驱动牛犊
驱动牛犊
  • 注册日期2003-05-14
  • 最后登录2003-12-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-10-25 09:56
能告诉我D12的具体型号吗?我是个新手 :)
z_bing
驱动中牛
驱动中牛
  • 注册日期2002-09-28
  • 最后登录2008-04-14
  • 粉丝0
  • 关注0
  • 积分22分
  • 威望4点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-10-25 17:10
能告诉我D12的具体型号吗?我是个新手 :)


PDIUSBD12
爱国守法,明理诚信,团结一致,战胜非典!
sjshe
驱动牛犊
驱动牛犊
  • 注册日期2003-10-02
  • 最后登录2006-09-18
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-10-25 21:22
上面的程序是固件,只是测试了一下D12的工作是否正常,其他的还没有做,可能要在搞懂一些,多看些书了。
sjshe
驱动牛犊
驱动牛犊
  • 注册日期2003-10-02
  • 最后登录2006-09-18
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-10-25 21:25
不好意思 在
P2=0xff;后面少一句,
D12_cs=0;
片选D12.不好意思了。
sjshe
驱动牛犊
驱动牛犊
  • 注册日期2003-10-02
  • 最后登录2006-09-18
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-10-27 21:51
今天 又在弄,遇到了一个情况,可能很多人都有,就是上电后,D12的中断脚一直为低,结果反复中断。经过试验总算搞定了,就是初始化时,先读取一下D12的中断寄存器,以后中断脚就可拉高了。以后系统中断后,要读取上次状态把中段寄存器清空。
以上 供大家参考.
游客

返回顶部