No.94665 作者:huayun 邮件:huayaoyu2002@yahoo.com.cn ID:55353 登陆:1次 文章数:3篇 最后登陆IP:222.173.17.200 最后登陆:2006/6/19 10:08:49 注册:2006/6/14 11:49:09 财富:109 发帖时间:2006/6/14 12:58:19 发贴者IP:222.173.17.200 标题:huayun:请教AD9832 摘要:No.94665请教AD9832 [size=4][size=2]我是新手,用80C52驱动AD9832,硬件没问题。改变频率控制字时,输出时而准时而不准,请求各位高手帮忙.程序如下: #include "reg52.h" #include "dy8958a.h" #include "intrins.h" #include "bianliang.h" void SendData(unsigned int d) { unsigned int i; SY9832 = 0; SDA9832=0; for(i=0;i <16;i++) { SDA9832 =(bit)(d&0x8000); SCLK9832=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); SCLK9832=0; d < <=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } SY9832 = 1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); SCLK9832=1; _nop_(); SCLK9832=0; _nop_(); } void ad9832() { void SendData(unsigned int x); unsigned long f; unsigned int x; unsigned char data y[4]; unsigned char i,*px; void *pf; x=0; f=(long int)(hz*69.905*256); px=y; pf=&f; if(~fhag) { for (i=0;i <4;i++) { *(px+i)=*((char*)pf+3-i); x=(unsigned int)(*(px+i)); switch (i) { case 0: x&=0x30ff;x|=0x3000;break; case 1: x&=0x21ff;x|=0x2100;break; case 2: x&=0x32ff;x|=0x3200;break; case 3: x&=0x23ff;x|=0x2300;break; } SendData(x); } SendData(0x5000); fhag=1; } else { for (i=0;i <4;i++) { *(px+i)=*((char*)pf+3-i); x=(unsigned int)(*(px+i)); switch (i) { c ......
>>返回讨论的主题
|