📄 cmx823.c
字号:
#include <c8051f020.h> // SFR声明
typedef unsigned int uint;
typedef unsigned char uchar;
typedef unsigned long ulong;
//--------------------------------------------------------------------
//全局变量
//--------------------------------------------------------------------
sbit CMX823_SCK =P2^3;
sbit CMX823_CDA =P2^4;
sbit CMX823_RDA =P2^5;
sbit CMX823_CS =P2^6;
extern void Delayus(uchar ius);
extern void Delayms(uint Count);
//-------------------------------------------------
//CMX823写数据子程序
//-------------------------------------------------
void CMX823_COMMAND(uchar CMX823_WCOM,uchar CMX823_DAT1,uchar CMX823_DAT2,uchar CMX823_NUM)
{
uchar i;
CMX823_CS=0;
for(i=1;i<=8;i++)
{
CMX823_CDA=(CMX823_WCOM&0x80);
CMX823_WCOM<<=1;
CMX823_SCK=0;
Delayus(1);
CMX823_SCK=1;
Delayus(1);
}
Delayus(4);
if(CMX823_NUM>=2)
{
for(i=1;i<=8;i++)
{
CMX823_CDA=(CMX823_DAT1&0x80);
CMX823_DAT1<<=1;
CMX823_SCK=0;
Delayus(1);
CMX823_SCK=1;
Delayus(1);
}
Delayus(4);
}
if(CMX823_NUM>=3)
{
for(i=1;i<=8;i++)
{
CMX823_CDA=(CMX823_DAT2&0x80);
CMX823_DAT2<<=1;
CMX823_SCK=0;
Delayus(1);
CMX823_SCK=1;
Delayus(1);
}
Delayus(4);
}
CMX823_CS=1;
Delayus(1);
}
//-------------------------------------------------
//CMX823读数据子程序
//-------------------------------------------------
uchar CMX823_REPLY(void)
{
uchar i;
uchar CMX823_RCOM;
CMX823_CS=0;
CMX823_RCOM=0x3f;
for(i=1;i<=8;i++)
{
CMX823_CDA=(CMX823_RCOM&0x80);
CMX823_RCOM<<=1;
CMX823_SCK=0;
Delayus(1);
CMX823_SCK=1;
Delayus(1);
}
Delayus(4);
for(i=1;i<=8;i++)
{
CMX823_SCK=0;
Delayus(1);
CMX823_SCK=1;
Delayus(1);
CMX823_RCOM<<=1;
if(CMX823_RDA)CMX823_RCOM|=0x01;
}
Delayus(4);
CMX823_CS=1;
Delayus(1);
CMX823_RCOM&=0x2e;
return(CMX823_RCOM);
}
//-------------------------------------------------
//CMX823初始化解码子程序
//-------------------------------------------------
void Cmx823_Init(void)
{
CMX823_COMMAND(0x01,0x00,0x00,0x01);//general reset registe
CMX823_COMMAND(0x30,0x02,0x00,0x02);//control register
Delayms(30);
CMX823_COMMAND(0x30,0x01,0x00,0x02);//clear RAM
Delayus(100);
CMX823_COMMAND(0x32,0x01,0x00,0x02);//set input signal flow
CMX823_COMMAND(0x30,0x2a,0x00,0x02);//set RAM1,slow,decode bandwidth 2.1%,normal mode
CMX823_COMMAND(0x34,0xa0,0x81,0x03);//tone parameters register
CMX823_COMMAND(0x32,0x00,0x00,0x02);
CMX823_COMMAND(0x33,0x80,0x00,0x02);
}
//-------------------------------------------------
//CMX823解码子程序
//-------------------------------------------------
bit Cmx823_Decode(void)
{
switch(CMX823_REPLY())
{
Delayus(5);
case 0x0c:
CMX823_COMMAND(0x33,0x00,0x00,0x02);
Delayus(20);
CMX823_COMMAND(0x33,0x80,0x00,0x02);
return(1);
break;
case 0x08:
CMX823_COMMAND(0x33,0x00,0x00,0x02);
Delayus(20);
CMX823_COMMAND(0x33,0x80,0x00,0x02);
return(0);
break;
default:
return(0);
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -