书上和网上的相关程序很多,但是有一个问题大家可能会遇到,就是读出的数不是想要的通道的数值,我就谈谈这个的问题。见网上有人问到TLC2543多路转换时出现通道之间串位的问题,我也遇到了,例如:输入的是通道0,读的数却是通道1,等等。我分析了一下,出现问题的原因如下:书上印的、网上传的关于TLC2543转换输出12位的子函数的形参大多是uchar型的,如调取子函数:read(ucharport)。调取子函数时以十六进制表示输入的通道数,如通道0为0x00,通道1为oxl0等等,可是子函数里有一条是portvv=4;这让只有八位的ucharport向左移四位之后,原来的包含通道信息的高四位被舍弃,变为原来的低四位,通道数肯定不是你想要的那个通道了。以uchar为形参,用十六进制表示通道数时去掉port=4;才是正确的。如果你非要加上port=4;也可以,此时形参设定为uchar,那你就输入十进制的通道数,如通道0为0,通道1为1,如通道1,写为二进制是0001,那么port就是00000001,左移4位正好变为00010000,也是对的。而偏偏有人输入的是十进制的通道数,再加