题外:个人认为钱是推动业余发展的动力
上mc145162驱动一份,绝对包通过!参考频率是5k,用户可自行修改
#include "reg52.h"
#include "user.h"//自写的头,内有延时,键盘等常用函数,用户可自编
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit en =p3^2;
sbit dat=p3^3;
sbit clk=p3^4;
sbit beep=p2^2;
void init_control_reg()
{
uchar temp;
uchar i;
temp=0x88;
en=1;
clk=0;
for(i=0;i<8;i++)
{
if(temp & 0x80)
dat=1;
else
dat=0;
clk=1;
temp<<=1;
clk=0;
}
en=0;
}
void init_reference_reg()
{
ulong temp=0x35004000;
uchar i;
en=1;
clk=0;
for(i=0;i<32;i++)
{
if(temp & 0x80000000)
dat=1;
else
dat=0;
clk=1;
temp<<=1;
clk=0;
}
en=0;
}
void write_counter_reg(ulong tx,ulong rx)
{
ulong temp;
uchar i;
temp=(tx<<16)|rx;
en=0;
clk=0;
for(i=0;i<31;i++)
{
if(temp & 0x80000000)
dat=1;
else
dat=0;
clk=1;
temp<<=1;
clk=0;
}
if(temp & 0x80000000)
dat=1;
else
dat=0;
clk=1;
en=1;
clk=0;
en=0;
}
void write_pll(uint tx,uint rx)
{
uint tx_temp,rx_temp;
tx_temp=tx/5;
rx_temp=rx/5;
write_counter_reg(tx_temp,rx_temp);
}
void main()//使用功能函数例程
{
delay(20);
init_control_reg();//初始化控制寄存器
init_reference_reg();//初始化参考寄存器
write_pll(29600,40300);//写频率
while(1);
}