📄 3tlc2543.c
字号:
#include<reg51.h>
#include<intrins.h>
sbit D_CLOCK=P1^3;
sbit D_IN=P1^2;
sbit D_OUT=P1^1;
sbit D_CS=P1^0;
uint Read2543(uchar port) //从TLC1543读取采样值,形参port是采样的通道号
{
uchar mRetADHi,mRetADLo; //返回的测量值的高位、8低位
uchar mTemp;
uchar i;
D_CLOCK=0;
D_CS=0;
mRetADHi=0;
mRetADLo=0;
//把通道号(4位)打入2543 **代码虽然麻烦,但编译后的执行速度很快**
D_IN=(bit)(port&0x08);
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADHi|=mTemp<<3;
D_CLOCK=0;
D_IN=(bit)(port&0x04);
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADHi|=mTemp<<2;
D_CLOCK=0;
D_IN=(bit)(port&0x02);
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADHi|=mTemp<<1;
D_CLOCK=0;
D_IN=(bit)(port&0x01);
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADHi|=mTemp;
D_CLOCK=0;
//参数设定开始
//注意:参数的设定只对下一周期的测量有效,对本次取样没有作用
D_IN=0;
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADLo|=mTemp<<7;
D_CLOCK=0; //选择12位的数据长度
D_IN=0;
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADLo|=mTemp<<6;
D_CLOCK=0;
D_IN=0;
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADLo|=mTemp<<5;
D_CLOCK=0; //高位在前输出
D_IN=0;
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADLo|=mTemp<<4;
D_CLOCK=0; //单极性输出
//参数设定结束
D_CLOCK=1; //填充4个任意位
mTemp=(uchar)D_OUT;
mRetADLo|=mTemp<<3;
D_CLOCK=0;
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADLo|=mTemp<<2;
D_CLOCK=0;
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADLo|=mTemp<<1;
D_CLOCK=0;
D_CLOCK=1;
mTemp=(uchar)D_OUT;
mRetADLo|=mTemp;
D_CLOCK=0;
D_CS=1;
return (uint)(mRetADHi*256+mRetADLo);
}
void main()
{uint ad;
while(1)
{
ad=Read2543(0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -