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

📄 tlc2543.c

📁 基于凌阳单片机的TCL2543读取程序
💻 C
字号:
//========================================================================

//TLC2543.c开始

//=========================================================================

//============================================================
//日期:2007.03.04
//作者:张丰盛
//审核:张丰盛
//============================================================

//============================================================
extern  unsigned int *P_IOB_Data;
extern  unsigned int *P_IOA_Data;

#define   PORT     0                       //1为IOA,0为IOB
#define   Set_TLC2543_DIN            0x0001      //DATA INPUT
#define   Clear_TLC2543_DIN          0xfffe
#define   Set_TLC2543_CLK            0x0002     //I/O CLK
#define   Clear_TLC2543_CLK          0xfffc
#define   Set_TLC2543_CS             0x0004     //CS
#define   Clear_TLC2543_CS           0xfffb
#define   Set_TLC2543_DOUT           0x0008    //DOUT
#define   Clear_TLC2543_DOUT         0xfff7
//============================================================

//============================================================
//函数名称:unsigned int  drive_TLC2543(unsigned int channal)
//函数功能:应用TLC2543进行12位的A/D转换   12位输出,高位在前
//输入参数:转换的通道号
//输出参数:A/D转换的结果
//日期:2007.03.04
//============================================================
#if PORT                                    //TLC2543接在IOA口
unsigned int  drive_TLC2543(unsigned int channal)
{	
	unsigned int i;
	unsigned int ioa;
	unsigned int result;
	ioa=*P_IOA_Data;                             //CLK=0
	ioa=ioa&Clear_TLC2543_CLK;
	*P_IOA_Data=ioa; 
	ioa=*P_IOA_Data;                                 //CS=0
	ioa=ioa&Clear_TLC2543_CS;
	*P_IOA_Data=ioa;
	channal=channal<<12;
	for(i=12;i>0;i--)                                //写入通道号给TLC2543
	{
		ioa=*P_IOA_Data; 
		if(channal&0x8000)
			ioa=ioa|Set_TLC2543_DIN;
		else
		    ioa=ioa&Clear_TLC2543_DIN;
	    *P_IOA_Data=ioa;
	    ioa=*P_IOA_Data;                             //CLK=1
	    ioa=ioa|Set_TLC2543_CS;
	    *P_IOA_Data=ioa;
	    ioa=*P_IOA_Data;
	    if(ioa&Set_TLC2543_DOUT)
	    	result=result|0x0001;
	    result=result<<1;
	   	ioa=*P_IOA_Data;                             //CLK=0
	    ioa=ioa&Clear_TLC2543_CS;
	    *P_IOA_Data=ioa;
	    channal=channal<<1;	    
	}	
	return 200;
}
   		   	
#else                                        //TLC2543接在IOB口
unsigned int drive_TLC2543(unsigned int channal)
{
	unsigned int i;
	unsigned int iob;
	unsigned int result=0;
	iob=*P_IOB_Data;                             //CLK=0
	iob=iob&Clear_TLC2543_CLK;
	*P_IOB_Data=iob; 
	iob=*P_IOB_Data;                                 //CS=0
	iob=iob&Clear_TLC2543_CS;
	*P_IOB_Data=iob;
	channal=channal<<12;
	for(i=12;i>0;i--)                                //写入通道号给TLC2543
	{
		iob=*P_IOB_Data; 
		if(channal&0x8000)
			iob=iob|Set_TLC2543_DIN;
		else
		    iob=iob&Clear_TLC2543_DIN;
	    *P_IOB_Data=iob;
	    iob=*P_IOB_Data;                             //CLK=1
	    iob=iob|Set_TLC2543_CLK;
	    *P_IOB_Data=iob;
	    iob=*P_IOB_Data;
	    if(iob&Set_TLC2543_DOUT)
	    	result=result|0x0001;
	    result=result<<1;
	   	iob=*P_IOB_Data;                             //CLK=0
	    iob=iob&Clear_TLC2543_CLK;
	    *P_IOB_Data=iob;
	    channal=channal<<1;	    
	}
	result=result>>1;
	iob=*P_IOB_Data;                                 //CS=1
	iob=iob|Set_TLC2543_CS;
	*P_IOB_Data=iob;		
	return result;
}
    		
#endif
//============================================================

//=============================================================================

//TLC2543.c结束

//=============================================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -