📄 cs5463的pic初始化程序.c
字号:
#include <pic.h>
//#include <P16F877A.H>
#define PORTAIT(adr,bit) ((unsigned)(&adr)*8+(bit)) //*绝对寻址位操作指令*/
static int table[3]={0xee,0xee,0xee};
void SPIINIT()
{
PIR1=0; //*清除SPI中断标志*/
SSPCON=0x22; //* SSPEN=1;CKP=0 , FOSC/4 */
SSPSTAT=0xC0;
TRISC=0X10; //*SDO引脚为输出,SDI脚输入,SCK引脚为输出*/
PIE1=0X08;
}
void SPISEND(int data)
{
SSPBUF=data; //*启动发送*/
do
{
;
}while(SSPIF==0); //*等待发送完毕*/
SSPIF=0; //*清除SSPIF标志*/
//table[0]=SSPBUF;
}
void SPIREAD()
{
//TRISC=0X30; //*SDO引脚为输出,SDI脚输入,SCK引脚为输出*/
SPISEND(0x00);
table[0]=SSPBUF;
SPISEND(0x00);
table[1]=SSPBUF;
SPISEND(0x00);
table[2]=SSPBUF;
//TRISC=0X10; //*SDO引脚为输出,SDI脚输入,SCK引脚为输出*/
}
void initial()
{
TRISA=0x00; //*A口设置为输出*/
INTCON=0x00; //*关闭所有中断*/
PORTA=0X17; //*使复位无效*/
}
void cs5463init()
{
PORTA=0X07;
PORTA=0X07;
PORTA=0X17;
PORTA=0X16; //选通A相芯片
PORTA=0X06;
#asm
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
#endasm
PORTA=0X16;
SPISEND(0xff);
SPISEND(0xff);
SPISEND(0xff);
SPISEND(0xfe); //发初始化序列
SPISEND(0x5e);
SPISEND(0x80);
SPISEND(0x00);
SPISEND(0x00); //清除状态寄存器DRDY等功能
SPISEND(0x40);
SPISEND(0x00);
SPISEND(0x00);
SPISEND(0x01); //设定K=1等
SPISEND(0x4a);
SPISEND(0x00);
SPISEND(0x0f);
SPISEND(0xa0); //设定N=4000
SPISEND(0x74);
SPISEND(0x00);
SPISEND(0x00);
SPISEND(0x00); //写屏蔽寄存器,不激活INT脚等功能
SPISEND(0x64);
SPISEND(0x00);
SPISEND(0x00);
SPISEND(0x01); //写操作模式寄存器,激活在线频率测量等功能
SPISEND(0xe8);
PORTA=0x17; //取消选通A相芯片
}
void main (void)
{
unsigned char data;
unsigned char address;
initial(); //*系统初始化*/
SPIINIT();
cs5463init();
PORTA=0X16;
;
;
; //读寄存器
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -