📄 复件 tlc2543.c
字号:
#include <reg51.h>
#include <math.h>
#include <stdlib.h>
#include <intrins.h>
#include <stdio.h>
sbit TLC2543_CLK = P1^0;
sbit TLC2543_DIN = P1^1;
sbit TLC2543_DOUT = P1^2;
sbit TLC2543_CS = P1^3;
unsigned int Convert(unsigned int uiChannel);
unsigned char AD_INPUT[] =
{
/* 12 bits / MSB first / unipolar */
0x00, /* AD channel 00 select */
0x10, /* AD channel 01 select */
0x20, /* AD channel 02 select */
0x30, /* AD channel 03 select */
0x40, /* AD channel 04 select */
0x50, /* AD channel 05 select */
0x60, /* AD channel 06 select */
0x70, /* AD channel 07 select */
0x80, /* AD channel 08 select */
0x90, /* AD channel 09 select */
0xA0, /* AD channel 0a select */
0xB0, /* AD channel 0b select */
0xC0 /* AD channel 0c select */
};
unsigned int Convert(unsigned int uiChannel)
{
unsigned int i;
unsigned int dout; /*存放从DOUT端接收到的数*/
unsigned char din; /*通道控制字*/
din = AD_INPUT[uiChannel];
TLC2543_CLK = 0;
TLC2543_CS = 1;
_nop_();
_nop_();
TLC2543_CS = 0;
dout = TLC2543_DOUT;
for (i = 0; i < 8; i++) /*读高8位*/
{
if (din & 0x80) /*将通道方式控制字最高位打入TLC2543*/
TLC2543_DIN = 1;
else
TLC2543_DIN = 0;
din <<= 1;
dout <<= 1;
if (TLC2543_DOUT == 1)
dout |= 0x0001;
TLC2543_CLK = 1;
_nop_();
_nop_();
_nop_();
_nop_();
TLC2543_CLK = 0;
}
for (i = 0; i < 4; i++) /*读低4位*/
{
dout <<= 1;
if (TLC2543_DOUT == 1)
dout |= 0x0001;
TLC2543_CLK=1;
_nop_();
_nop_();
_nop_();
_nop_();
TLC2543_CLK = 0;
}
TLC2543_CS = 1;
return dout;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -