📄 sa866.c
字号:
#include "def.h"
void iniSA866(void);
void setSA866(void);
void SetFre(void);
void rerunSA866(void);
void zrerunSA866(void);
struct STRSA sa866ae;
/********** 延时子程序 ********************/
void delay(unsigned int time)
{
unsigned int i,j;
for(i=0;i<time;i++)
for(j=0;j<100;j++);
}
/**************** 写一字节子程序***********/
//addr为要写的寄存地址参数,
//cmd为要写的寄存命令值
/******************************************/
void write_bye(U char addr,U char cmd)
{
U char temp,iv,i;
clrCLK;
i=5;
while(i>0)i--;
setCS;
i=5;
while(i>0)i--;
setDATA;
i=5;
while(i>0)i--;
setCLK;
for(iv=0;iv<4;iv++)
{
i=5;
while(i>0)i--;
clrCLK;
temp=addr&0x08;
addr=addr<<1;
if(temp==0x08){setDATA;}
else{clrDATA;}
i=5;
while(i>0)i--;
setCLK;
}
for(iv=0;iv<8;iv++)
{
i=5;
while(i>0)i--;
clrCLK;
temp=cmd&0x80;
cmd=cmd<<1;
if(temp==0x80){setDATA;}
else{clrDATA;}
i=5;
while(i>0)i--;
setCLK;
}
i=5;
while(i>0)i--;
clrCLK;
i=5;
while(i>0)i--;
clrCS;
i=5;
while(i>0)i--;
setCLK;
}
/*********** 系统初始化子程序*************/
void iniSA866(void)
{
clrCS;
clrDATA;
setCLK;
clrSETTR;
setDIR;
clrREST;
delay(600);
setREST;
}
////////////////////////////
void setSA866(void)
{
delay(10);
write_bye(0,0x56);
delay(3);
write_bye(0,0x56);//1010010
delay(3);
write_bye(1,0x63);// b7-b5(011) CFS=2.4k// b4-b3(00) WS=0(sin)//b2-b0(011) FRS=52.8
// write_bye(1,0x42);// b7-b5(010) CFS=5k// b4-b3(00) WS=0(sin)//b2-b0(010) FRS=52.8
delay(3);
//write_bye(2,0xfA); //b7-b1(1111 101) PDT=8uS//b0(0)FC=line
write_bye(2,0xB2); //b7-b1(1011 001) PDT=15uS//b0(0)FC=line
delay(3);
write_bye(3,0x4A);//b7-b2(1000 10)PDY=36uS//b1-b0(10)ZTH=100mV(L-H) 78mv(H-L)
//write_bye(3,0x9A);//b7-b2(1001 10)PDY=10uS//b1-b0(10)ZTH=100mV(L-H) 78mv(H-L)
write_bye(6,0x0d);//GRAD
delay(3);
write_bye(7,0x33);//PED 20
delay(3);
write_bye(8,0x00);//KAY
delay(3);
write_bye(9,0x00);//b3-b0AWS
delay(3);
SetFre();
}
//////////////////////////////////
void SetFre(void)
{
unsigned int temp;
unsigned char temp2;
temp=sa866ae.freset;
if(temp>520)
{
delay(3);
write_bye(4,0xff);//speedtop
delay(3);
write_bye(5,0xff);//speedlow
delay(3);
}
else
{
temp=temp*131;
temp2=temp>>8;
delay(3);
write_bye(4,temp2);//speedtop
temp2=temp&0xff;
delay(3);
write_bye(5,temp2);//speedlow
delay(3);
}
}
void rerunSA866(void)
{
delay(3);
write_bye(0,0x54);//speedtop
}
void zrerunSA866(void)
{
delay(3);
write_bye(0,0x56);//speedtop
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -