tlc2543.c
来自「12位多通道AD TLC2543的接口程序,包括其中寄存器的读写等」· C语言 代码 · 共 56 行
C
56 行
#include <reg52.h>
//#include <absacc.h>
#include "delay.h"
#include "tlc2543.h"
/////////////////////////////////////////////////
//A/D转换子程序
unsigned int read2543(unsigned char ch_no,unsigned char bit_n)//ch_no---通道选择,bit_n---输出位数
{
data unsigned char i,data_in,adl,adh;
unsigned int ad=0;
data_in = ch_no;
D_OUT = 1; /* DATA OUT */
delay(50); /* while(!P1_0){}; P1_0---EOC ***/
CLOCK = 0; /* I/O CLOCK */
P2 = P2&0x0f|0xa0;
delay(20);
adl = 0;
adh = 0;
for(i=0;i<4;i++)
{
adh = ( adh<<1 );
D_OUT = 1;
if( D_OUT )
adh++; /* out */
if( (data_in&0x08) != 0 )
D_IN = 1;
else D_IN = 0;
data_in = (data_in << 1);
CLOCK = 1; /* I/O CLOCK */
CLOCK = 1; /* I/O CLOCK */
CLOCK = 1; /* I/O CLOCK */
CLOCK = 0; /* I/O CLOCK */
CLOCK = 0; /* I/O CLOCK */
CLOCK = 0; /* I/O CLOCK */
}
D_IN = 0;
for(i=0;i<bit_n-4;i++)
{
adl = ( adl<<1 );
D_OUT = 1;
if( D_OUT )
adl++;
CLOCK = 1; /* I/O CLOCK */
CLOCK = 1; /* I/O CLOCK */
CLOCK = 1; /* I/O CLOCK */
CLOCK = 0; /* I/O CLOCK */
CLOCK = 0; /* I/O CLOCK */
CLOCK = 0; /* I/O CLOCK */
}
P2 = P2&0x0f|0xf0;
ad = 256*adh + adl;
return(ad);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?