RxQHead = 0;
CmdStage = CMD_STAGE0;
CodecCmd = 0;
ClkAdjTrig = 0;
TRISFbits.TRISF6 = 1; //编码解码器(Codec)引脚为输入
IFS2bits.DCIIF = 0;
IEC2bits.DCIIE=1;
IPC10bits.DCIIP=7;
DCICON1=0X8040; // 配置DCI模块用于传送16位数据且工作在多通道模式
DCICON2=0XFFFF;
DCICON3=( CLOCK_FREQ / ( 2 * FRAMECLKRATE) ) - 1;
TSCON=1;
RSCON=1;
LATFbits.LATF6 = 0; //复位编码解码器
TRISFbits.TRISF6 = 0;
TimeDelay(200);
TRISFbits.TRISF6 = 1; //编码解码器设为输入
TimeDelay(1);
WriteCodecCtrl( 3, 0); //SI3000寄存器3
WriteCodecCtrl( 4, 19); //SI3000寄存器4
WriteCodecCtrl( 1,0X18 ); //SI3000寄存器1
WriteCodecCtrl( 2, 0); //SI3000寄存器2
WriteCodecCtrl( 5, 2); //SI3000寄存器5
WriteCodecCtrl( 6, 0X5E ); //SI3000寄存器6
WriteCodecCtrl( 7, 0X5F ); //SI3000寄存器7
WriteCodecCtrl( 9, 0); //SI3000寄存器9
}
//*************写命令到编码解码器子程序**********************
void WriteCodecCtrl( unsigned char adr, unsigned char parm )
{
CodecCmd = (unsigned int)adr;
CodecCmd = (CodecCmd<<8) & 0x1F00; //SI3000寄存器的5位地址
CodecCmd += (unsigned int)parm; //待写入的数据
CmdStage = CMD_STAGE1;
while( CmdStage != CMD_STAGE0 ){}
}
//*************从编码解码器读命令子程序**********************
unsigned char ReadCodecCtrl( unsigned char adr )
{
CodecCmd = (unsigned int)adr;
CodecCmd = (CodecCmd<<8) & 0x1F00;
CodecCmd |= 0x2000; //读功能
CmdStage = CMD_STAGE1;
while( CmdStage != CMD_STAGE0 ){}
return CodecCmd&0x00FF;
}
//**********************主函数*******************************
int main(void)
{
TRISG=0X1000;
InitCodec();
while(1);
}
上一页 [1] [2]
本文关键字:暂无联系方式PIC单片机,单片机-工控设备 - PIC单片机