打印

关于AT89C52与PC串口通信的问题

[复制链接]
2382|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dcqqok147|  楼主 | 2007-8-9 16:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在AT89C52中编的程序是:
#include <intrins.h>
#include <reg51.h>
sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
sbit P0_4=P0^4;
sbit P0_5=P0^5;
sbit P0_6=P0^6;
sbit P0_7=P0^7;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4;
sbit P2_5=P2^5;
sbit P2_6=P2^6;
sbit P2_7=P2^7;
sbit P3_0=P3^0;
sbit P3_1=P3^1;
sbit P3_2=P3^2;
sbit P3_3=P3^3;
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;
int i;
unsigned char Chh[8],Chl[8];
/*系统初始化*/
void SystemInit(void)
{
    TCON=0x05;//外部中断下降沿触发
    TMOD=0x21;//Timer1方式2,Timer0方式1
    TH1=0xFD;//波特率19200
    TR1=1;
    SCON=0x50;//串行通讯方式1,允许接收
    PCON=0x80;//SMOD=1
    IE=0x90;
}
/**********发送一帧数据*********/
void SerialSendBytes(void)
{
        unsigned char j;
    for(j=0;j<8;j++)
    {
        TI=0;
        SBUF=0x10;
        do
        {}while(TI==0);//等待TI为1后才开始下个数据的传送
        TI=0;
        SBUF=0x01;
        do
        {}while(TI==0);//等待TI为1后才开始下个数据的传送
    }
    TI=0;
}  


void Main(void)
{
        unsigned char ByteR;
        SystemInit();
    while(1)
    {     
           if (RI)
        {
                   RI=0;
                ByteR=SBUF;
             if(ByteR==0xFF) 
                 {  
                    SerialSendBytes();
                    RI=0;
                 }
         }
     }
        
}
我用串口助手调试过程中,设置了波特率19200,按一定周期十六进制发送FF,接受的十六进制不是10 01 10 01 10 01 10 01 10 01 10 01 10 01 10 01,而是一大堆fd 00 df 等等什么的乱码!
请问一下大侠是我的程序编的有问题吗?还是AT89C52硬件电路有问题?谢谢

相关帖子

沙发
gjg191| | 2007-8-9 16:32 | 只看该作者

dd

TL1呢?还有不要用do while 语句用while 就可以了

使用特权

评论回复
板凳
dcqqok147|  楼主 | 2007-8-9 16:51 | 只看该作者

还是不行

我加上TL1=0XFD后,并将do while 替换为while ,可是得到的结果仍然是:d7 df fd df fd df fd df fd df fd df fd df fd 00,与应该得到的结果差的太多,因为我初次调试串口通信,请大家帮帮忙,谢谢

使用特权

评论回复
地板
gjg191| | 2007-8-9 16:58 | 只看该作者

dd

IE=0x90;你用查询方式做串口 ,激活串口中断干什么,程序不乱才怪呢,你改成0x00看看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

17

帖子

0

粉丝