⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmx823.c

📁 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 + -