📄 max262.c
字号:
#include"max262.h"
void GiveData(unsigned char address,unsigned char databit)
{
unsigned char i;
unsigned char pin[4];
//address的低四位赋给对应引脚,顺序对应
for(i=0;i<4;i++)
{
pin[i]=(bit)(address&0x01);
address>>=1;
}
max262a0=(bit)pin[0];
max262a1=(bit)pin[1];
max262a2=(bit)pin[2];
max262a3=(bit)pin[3];
//databit低两位赋给对应引脚,注意顺序反着
max262d0=(bit)(databit&0x02);
max262d1=(bit)(databit&0x01);
}
//参数说明ab=0选A;ab=1选B
void SetMax262(long clkab,unsigned char mode, long freq, unsigned char q, unsigned char ab)
{
unsigned char i,a,address,databit,f0;
unsigned int alldata=0;
mode-=1; //将1 2 3 4格式转化成芯片输入格式
//freq 转换
if(mode==1)f0=((unsigned char)((clkab*0.90031631615711)/(float)freq)-26);//模式2情况
else f0=((unsigned char)((clkab*0.6366197724)/(float)freq)-26);
//DispInt(0,5,f0);
//装载mode
alldata+=(unsigned int)((bit)(mode&0x01));
alldata<<=1;
alldata+=(unsigned int)((bit)(mode&0x02));
//装载f0
for(i=0;i<6;i++)
{
alldata<<=1;
alldata+=(unsigned int)(f0&0x01);
f0>>=1;
}
//装载q
for(i=0;i<7;i++)
{
alldata<<=1;
alldata+=(unsigned int)(q&0x01);
q>>=1;
}
alldata<<=1;//此时16位开始为M0 M1 F0 F1 F2 F3...Q4 Q5 Q6 0 (第1位为0)
address=0;
if(ab==1)a=8;else a=0;
max262wr=1;
for(address=a; address<(8+a); address++)
{
max262wr=1;
databit<<=1;
databit+=(unsigned char)((bit)(alldata&0x8000));
alldata<<=1;
databit<<=1;
databit+=(unsigned char)((bit)(alldata&0x8000));
GiveData(address,databit);
max262wr=0;
alldata<<=1;
max262wr=1;
}
max262wr=1;
}
//测试程序
/*
main()
{
unsigned long fre,temp=500;
unsigned char key;
InitLcd (); //初始化液晶
ClearScr();//清屏
while(1)
{
temp=InfScanPrint(3,6);
do
{
key=InfKey();
if(key==UP)temp+=10;
else if(key==DOWN)temp-=10;
else if(key==LEFT)temp++;
else if(key==RIGHT)temp--;
else if(key==BACK)break;
ClearScr();
DispDot(1,6,temp,1);
fre=temp*100;
SetMax262(3579545,1,fre,110,0); //高通
delay_50ms(3);
}
while(1);
delay_50ms(6);
}
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -