📄 tlc2543.c
字号:
/*****************************************************
| ad tlc2543采样接口
| 说明:D3-D2=00:12位数据长度
| D1=0:MSB导前格式输出
| D0=0:以单极性数据格式输出
| tlc2543rw():读取上一采样值并写入准备采样的地址
| count_give():采样值转换为实际数值
| 版本:V2 AU:姚远航
|*****************************************************/
#include "type.h"
#include "Tlc2543.h"
#include "intrins.h"
//key
extern void delay(unsigned int value);
//
/*******************************************
| Tlc2543RW()
|参数: tlc2543的通道端口地址(准备转换的地址)
|返回值: 上一次采样值,确切输出值
|*********************************************/
unsigned int Tlc2543RW(unsigned char addr)
{
unsigned int PutOut; //读取数据缓冲区
unsigned char clock_count; // 时钟计数器
EA=0;
B=addr;
PutOut=0x0000;
clock_count=12;
B<<=4; //移到字节高位
CS_2543=1; //片选
CLK_2543=0; //串行时钟
A_2543=1; // 串行地址输入端
D_2543=1; // 串行数据输入端
CS_2543=true;
delay(1);
while(clock_count--)
{
bit d;
PutOut<<=1;
A_2543=B_7; //数据加入输入信号线
//获得输出信号线上数据
d=D_2543;
if(d)
{
PutOut=PutOut | 0x0001;
}
else
{
PutOut=PutOut & 0xfffe;
}
CLK_2543=TRUE;
_nop_();
CLK_2543=FLASE; //启动一个时钟周期
_nop_();
B<<=1;
}
CS_2543=false;
delay(1);
EA=1;
delay(1);
return PutOut;
}
/*************采样值合成浮点数************************
参数: 无符号整形数组(tlc_2543得到的值)
模拟通道号值倍数
返回值: 模拟通道浮点数;
**********************************************************/
float count_give(unsigned int ad,unsigned int scale)
{
float temp;
temp=(float)(ad*REF);
temp=temp*scale;
temp=temp/4095.0;
return temp;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -