//这里时代码!
//延时部分可以去掉
//main.c
//单片机为at89c51,单片机时钟12mhz。
//引脚连接
//clk p2_3
//din p2_2
//adin p2_1
//enb p2_0
//mc145162时钟4mhz。不想打字了,大家增加看看吧!
//采用四线控制模式控制mc145162!
//有问题请qq联系qq:411736004,name:life-filter!
void mc145162_reset(unsigned int,unsigned long int,unsigned int,unsigned int);
void delay(unsigned int);
void main (void)
{
delay(200); //延时,可以不用
mc145162_reset(0x90,0x3fa04000,29500,29500);//括号里分别是控制寄存器数据,基频控制器数据,发射部分分频控制数据,接收部分分频控制器数据
while(1);
}
//mc145162_reset.c
#include <at89x51.h>
#define clk p2_3
#define din p2_2
#define adin p2_1
#define enb p2_0
void mc145162_reset(unsigned int ctrl_data,unsigned long int ref_data,unsigned int tx_count,unsigned int rx_count)
{
unsigned int i;
unsigned long int mask;
enb=0;
clk=0;
adin=0;
din=0;
enb=1;
mask=0x80;
for(i = 0;i < 8;i++)
{
clk=0;
if(ctrl_data & mask)
{
din=1;
}
else
{
din=0;
}
clk=1;
mask = mask >> 1;
din=0;
}
clk=0;
enb=0;
mask=0x80000000;
enb=1;
for(i = 0;i < 32;i++)
{
clk=0;
if(ref_data & mask)
{
din=1;
}
else
{
din=0;
}
clk=1;
mask = mask >> 1;
din=0;
}
clk=0;
enb=0;
mask = 0x8000;
for(i = 0;i < 16; i++)
{
clk=0;
if(tx_count & mask)
{
adin=1;
}
else
{
adin=0;
}
if(rx_count & mask)
{
din=1;
}
else
{
din=0;
}
clk=1;
mask = mask >> 1;
adin=0;
din=0;
clk=0;
}
enb=1;
enb=0;
}
//delay.c
void delay(unsigned int time_delay)
{
unsigned int time_delay_counter;
for (time_delay_counter=0; time_delay_counter<time_delay; time_delay_counter++)
{}
}