|
发表于 2011-4-29 13:04:22
|
显示全部楼层
不知道你的接收程序怎么写的,不过大同小异了;看样子你是检测RB8来判断BREAK的;
这样试试
先设置好串口(250K,9位数据,1停止位),如果你接了75176的话,还要把RE和DE管脚拉高
void dmxout()
{
static uchar tt,ii;
TI=0;
TB8=0; //
SBUF=0x00; //break,替代你的TXD=0;for(ii=100;ii>0;ii--);TXD=1;
while(!TI);
TI=0;
//如果你的接收是通过判断RB8,且没延时才能这样,否则只能:
//TXD=0;
//for(ii=100;ii>0;ii--);//delay 100 us
//TXD=1;
TB8=1;
SBUF=0x00; //start-code 起始码
while(!TI);
TI=0;
for(tt=1;tt<4;tt++) //正常数据
{
SBUF=(nBuffer[tt]);//通道数值
while(!TI);
TI=0;
//for(ii=8;ii>0;ii--); //要确定延时时间足够,要么通过判断TI位
//TI=0;
}
} |
|