请高手帮我看看这个串行输出数据控制锁相环程序,似乎不停的复位,但我解决不了,求助! 请高手帮我看看这个程序,我的单片机用的是C8051F330.我是用它来控制锁相环. 程序是单片机向锁相环输出3组数据,每组数据包含3个8位二进制数.其中用到单片机3个I/O口,一个做时钟信号,一个控制信号,一个数据信号. 程序编译下载没问题,在线仿真也没问题.但用示波器查看三个口都一直有信号输出,似乎程序在一直不停的执行. 曾经怀疑是单片机在不停的复位,检查程序发现初始化时没有禁止看门狗,现在是改进后的程序,但问题仍然存在.小弟真的是没办法了. 一个很简单的程序,实现很基本的功能.我已经被拖在这好几天了,现在程序没搞定,整个系统就没法调了. 请各位高手指点一下,或者帮忙改下这程序.在此多谢了? //----------------------------------------------------------------------------- // Includes //-----------------------------------------------------------------------------
#include <c8051f330.h> // SFR declarations #include <stdio.h>
sbit Clk=P1^1; sbit Dat=P1^0; sbit Le=P1^2; unsigned char code init[9]={0X84,0X00,0X15,0X00,0X0B,0X26,0X3F,0XE9,0X20};
void main() { unsigned char i,j,count; unsigned char k=0,sendata; OSCICN=0xC3;//内部H-F振荡控制寄存器,振荡器频率24.5MHz(1100,0011) P0MDOUT=0x00;//实际并没有使用p0口,配置为漏极开路输出 P1MDOUT=0x07;//仅使用了p1.0,p1.1,p1.2.配置为推挽输出 P0SKIP=0xFF;//所有位被卧交叉开关路跳过 P1SKIP=0xFF;// XBR0=0x00;//00000010.SPI I/O连到端口引脚 XBR1=0x40;//0100,0000 交叉开关使能 IE=0x00;//禁止中断 RSTSRC=0x00; //PCA0MD=0x00;//CLR WDTE,时钟源=系统时钟的12分频 //PCA0CPL2=0xFF;//超时间隔=32.1mS for sysclk=24.5MHz //PCA0MD=0x40;//SETB WDTE //PCA0MD=0x00; //PCA0CPL2=0xFF; //PCA0MD=0x40; Le=1; Clk=0; Dat=0; for(i=0;i<3;i++) { Le=0; for(j=0;j<3;j++) { for (count=0;count<8;count++) { sendata=init[k]; sendata<<=1; Dat=CY; Clk=1; Clk=0; }; k++; }; Le=1; }; Le=0; //SendPLL();
}
|