打印

时钟芯片MC12429电路及驱动问题

[复制链接]
1787|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
w410565|  楼主 | 2012-7-16 16:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

程序如下:
#include "reg51.h"
#include "intrins.h"   //_nop_()延时函数用
#define uchar unsigned char
#define uint unsigned int
sbit S_CLOCK=P3^0;
//mc12429串行数据输入时钟控制端
sbit S_DATA=P3^1;
//mc12429串行数据输入端
sbit S_LOAD=P3^2;   //mc12429移位寄存器控制端,串行输入时,为低电平;输入完成后,有点变高,再变低

/*******************11us延时函数************************************/
void delay(uint t)
{ for(;t>0;t--); }
/***************************mc12429写数据程序***********************/
void write_mc12429(uint f_val)
{
uint i;
S_CLOCK=0;
for(i=0;i<14;i++)

{
      S_DATA=(bit)(f_val&0x8001);

  S_CLOCK=0;

  delay(1);  

  S_CLOCK=1;      

  f_val=f_val>>1;//右移一位
     }

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();  

S_CLOCK=0;

delay(1);

S_LOAD=1;
    delay(1);

S_LOAD=0;
      
}

/************************************************************/
/*Fout=28MHz(TESTout=7MHz)时,N=8(1,1),M=224(0xe0),此时T0~T2全为1.
故,f_val=0x80ff;
当Fout=48MHz,N=4(1,0),M=192,f_val=0x80cf;
/************************************************************/
void main()
{
   write_mc12429(0x80ff);//f_val是配置M、N的值,进而来控制mc12429输出频率uint f_val  
   while(1);
}


说明:MC12429控制字写入方式有两种:一种是并行写入(通过S_DATA、S_CLOCK、S_LOAD三个端口),另一种是串行写入(通过P_LOAD、M[0...8]、N[0,1]).另:mc12429芯片带有个3位TEST寄存器,通过并行输入方式可以设置MC_TEST的输出类型,程序中向三个寄存器中都写了1,这样MC_TEST输出时钟的频率就为FOUT端输出频率的1/4(我用的示波器带宽是100M的,MC12429输出的时钟频率为25M~400MHz)。
问题:我用的是并行写入,用示波器检测MC_TEST端时,有时候能检测到方波(方波的波形间隔不一样,不具备规律性),有时候什么也检测不到。望高手指点!!

相关帖子

沙发
w410565|  楼主 | 2012-7-23 17:36 | 只看该作者
自己顶起!没高手用过这个?

使用特权

评论回复
板凳
w410565|  楼主 | 2012-7-30 19:14 | 只看该作者
:time:!!!!!!!!!!!!

使用特权

评论回复
地板
w410565|  楼主 | 2012-8-10 15:18 | 只看该作者
:L

使用特权

评论回复
5
w410565|  楼主 | 2013-10-25 16:26 | 只看该作者
自己搞定了,自己结贴吧

使用特权

评论回复
6
crjab| | 2013-11-11 14:11 | 只看该作者
好贴就要顶一顶~~~~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

59

帖子

1

粉丝