一个简单的模拟串行通信程序 有点问题 麻烦各位看看
#include"reg52.h"
void send_bit(unsigned char i)
{
if(i) TXD=1;
else TXD=0;
TR0=1;
while(!TF0);
TR0=0;
TH0=0xFF;
TL0=0xA0;
}
void main()
{
unsigned char a=0xE4;
unsigned int i,j;
TMOD|=0x01;
TH0=0xFF; // 12/11.0592M*(65536-x)=1/9600; x=65440
TL0=0xA0;
while(1)
{
TF0=0;
send_bit(0);
for(i=0;i<8;i++)
{
send_bit(a&0x01);
a=a>>1;
}
send_bit(1);
for(j=0;j<50000;j++);
a=0xE4;
}
}
发的是E4 接收到的是FC 波特率应该没问题呀
[解决办法]
是你的定时器初值计算方法有误了。所以造成模拟串口通讯不正常。
[解决办法]
"让每个0 1持续1/9600的时间",那么你程序运行的时间呢?这只是游戏吧?