串口操作,51串口操作

51串口操作 - 故障解答 - 电脑教程网

51串口操作

日期:2006-11-29   荐:
51串口操作51串口只有4中工作方式,2和3用于双机通讯,但是我这里从机是1个起始位,1个结束位,1个效验位,7个数据位,所以不考虑误码的话采用工作方式1通讯,但是发送程序好象没问题,但是接收总 有问题,大家帮忙写个接收程序啊!???设置SCON1 = 0x50;//串口方式1,允许接收TMOD |= 0x20;//定时器1 定时方式2TCON = 0x40;//设定时器1 开始计数TH1 = 0xA0;//11.0592MHz 300 波特率TL1 = 0xA0;TI = 1;TR1 = 1;发送P1_4 = 1;//P1.4,控制485I/OACC = c;TB8_1 = P;//偶校验SBUF1 = c;C为要发送的东西while(!TI_1);TI_1 = 0;求接收!!!!!!!!!!!!!!!接收有什么问题? 是没数据没收全,数据接收的不正确,还是根本就没收到数据?51串口收发程序很经典的,我想不会有什么问题?gt;>?hr>你的接受怎么了呀跑到C 这里来了。我都忘记了。3年不动了。当时我是用51汇编。现在,现在我就会用41了。。。你可以试试把接收引脚和发送引脚连接,程序中自己给自己发送一字节数据,看结果怎样,这样可以排除波特率的问题.接收程序比发送有更多注意点:接收是被动的,没法预期发送方的数据帧之间的间隔,所以接收数据要尽可能快,否则容易丢帧.说不定是电路出了问题,我前几天在做一个串口通信就是因为外部电路出了问题,本来我那个单片机受到主机的信息后就要从一个口输出一些东西的,结果由于那个口的上拉电阻的问题反映出来就是好像单片机没有受到信息一样TB8_1 = P;//偶校验==================================================这个有问题。你的串口工作在方式1,数据区是8位,所以你的数据帧是7个数据位加1个校验位。但是那个校验位不是在TB8_1设置,应该设置在ACC.7。你的TB8_1是定义为ACC.7,还是TCON中的第九位数据?没有特别特殊的原因最好不要用7位数据传输麻烦很多,好处不多
标签: