使用TLC2543
芯片采集电压,通过串口发送数据,但是现在发现在串口调试助手一直出现错误值,并且这个错误值一直跳动。 还有一个问题,TLC2543芯片我使用了AIN1,AIN2,AIN3。供电后,没接电压信号,我发现除了这三个口,其他AIN4~AN10的电压都是0.89V左右,请问这种现象正确吗。
下边是程序。
uint read2543(unsigned char port)
{
unsigned int i;
uint ad = 0;
clock = 0;
cs = 0;
eoc = 1;
port <<= 4;
for(i=0;i<12;i++)
{
if(out)
ad |= 0x01;
in = (bit)(port&0x80);
clock = 1;
_nop_();_nop_();_nop_();
clock = 0;
_nop_();_nop_();_nop_();
port = port << 1;
ad = ad << 1;
}
cs = 1;
ad = ad >> 1;
return ad;
}
void main ()
{
u8 i = 0;
uint temp ;
uint result ;
P3M0 = 0X20; //强制推挽输出P35
P3M1 = 0X00;
P2M0 = 0X01; //强制推挽输出P21
P2M1 = 0X00;
RS485_enable = 1; //485使能,不影响程序
usart_init(); //串口初始化
while(1)
{
i = 0;
result = 0;
temp = 0;
read2543(1);
j++;
if(j >= 7)
j=0;
result = read2543(1);
temp = result;
//temp =(uint)(result*1.0/4096*2496); // 此指令不再使用,因测试时无法进行运算//基准电压2.496V
//temp = (uint)(temp*6/10); // 0.6094
delay_ms(100);
TX1_Buffer[0] = (u8)(temp>>24);
TX1_Buffer[1] = (u8)(temp>>16);
TX1_Buffer[2] = (u8)(temp>>8);
TX1_Buffer[3] = (u8)(temp);
delay_ms(100);
while(TX1_Buffer[i] != 'x')
{
SBUF = TX1_Buffer[i]; //发一个字节
while(!
ti);
TI=0;
i++;
}
}
}
没有示波器真的没办法调试。我遇到的问题是 在线路一端可以收到信号。传到另一端就没信号,但是用万用表测,线路是通的。这种问题没示波器一万年也弄不出来,因为硬件检测是通的。
一周热门 更多>