我的模拟串口程序发送可以成功,但为什么我的接收程序在发字符时出现乱码,还有发送16进制时快了也会出现乱码,更奇怪的是只能发送0011这样的数才能成功,234这些都不行?我的232转换
电路如下:
我的程序编写如下:
#pragma vector
timer0 @ 0x14//中断入口地址
#define uchar unsigned char
#define uint unsigned int
//*************
//接收一个字节数据
//*****************
uchar RXD_byte()
{
uchar output = 0;
uchar i = 8;
_t0af=0;//中断标志位
_t0on=1;//打开定时器
while(!_t0af);//等过起始位
while(i--)//8位数据位
{
if(RXD)
output &= 0x80;
_t0af=0;
while(!_t0af);
output = output>>=1;
}
_t0af=0;
while(!_t0af)
{
if(RXD) break;
}
_t0on=0;
return output;
}
void main()
{
char gch;
INIT_PA();//初始化
INIT_timer();
_t0on= 0 ;//关定时器
/ while(1)
{
if(RXD == 0)
gch = RXD_byte();
}
}
void timer0 (void)//中断响应
{
_t0af= 1;//多功能中断寄存器,需要手动清零,而中断控制寄存器是自动清零(见书上P57)
}
-
下面这个是你的程序,你改一下试试。你看看是不是这个问题。
- while(i--)//8位数据位
- {
- if(RXD)
- output &= 0x80;
- _t0af=0;
- while(!_t0af);
- output = output>>=1;
- }
复制代码一周热门 更多>