3089|4

84

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

(高分求救)我用T2作中断发生器,串口接收正常,发送不对 [复制链接]

我用T2作中断发生器,串口接收正常,发送不对,不知道哪个设定不比好心人帮帮忙.程序如下#include
#include
uint08 com1data[15];
uint08 point1=0;
uint08 com2data[6];
uint08 point2=0;
  uint08 sbuf[15];

void initUart(void)
{   IE=0x90;      //允许总中断和串口0的中断
     TMOD=0x20;      //定时器1工作在模式1
    //T1 用于com1波特率 9600
        switch (4)/*串口1波特率选择*/
    {
        case 1:
         TH1=0xE8;        //1200
          TL1=0xE8;
          break;
        case 2:
          TH1=0xF4;       //2400
          TL1=0xF4;
          break;
        case 3:
          TH1=0xFA;        //4800
         TL1=0xFA;
         break;
        case 4:
         TH1=0xFD;        //9600
        TL1=0xFD;
         break;
    }

        SCON1=0x58;   //工作在模式1,允许接收
     PCON=0x00; // SM0=0 SM1=1 在10位异步收发模式 SMOD=0 溢出速率/32
     ES1=1;    //串口1中断允许

     SCON0=0x58;      //工作在模式1,接收允许
     T2CON=0x30;  //用定时器2做串口0的波特率发生器

    //TCLK=1;
    //T2 用于com0波特率 9600
        switch (4)/*串口0波特率选择*/
    {
        case 1:
         RCAP2H=0xFE;        //1200
          RCAP2L=0xE0;
          break;
        case 2:
          RCAP2H=0xFF;       //2400
          RCAP2L=0x70;
          break;
        case 3:
          RCAP2H=0xFF;        //4800
         RCAP2L=0xB8;
         break;
        case 4:
         RCAP2H=0xFF;        //9600
        RCAP2L=0xDC;
         break;
        case 5:
         RCAP2H=0xFF;        //19200
         RCAP2L=0xEE;
        break;
    }
     TR2=1;
     TR1=1;
}

void Int_serial1() interrupt 7
{
    uint16 uctimes=5000;
    while((RI_1==0)&&(uctimes>0))
    {
        uctimes--;
    }
    if(uctimes!=0)
    {     com2data[point2]=SBUF1;
           point2++;

    }
      RI_1=0;
}
void Intcom ()interrupt 4               //串口1接收
{

    uint16 uctimes=5000;
    while((RI==0)&&(uctimes>0))
    {
        uctimes--;
    }
    if(uctimes!=0)
    {
    if(point1==0)
    {
    if(SBUF==0x7e)
      {
     com1data[point1]=SBUF;
     point1++;
      }

    }
    else
    {
          com1data[point1]=SBUF;
            point1++;
    }
    }
     RI=0;
}
void DelayMs(uint08 usTime)
{
    uint16  i;
    uint16  j;
    for(j=0;j     for(i=0;i<227;i++);
}

       void putchar(uint08 xdata *ucBuff)    //串口1发送
{     uint08 ucNum;

      for(ucNum = 0; ucNum <15; ucNum++)
    {
        SBUF = ucBuff[ucNum];

        while (0 == TI);

        TI = 0;

        }
}

void main()
{               sbuf[0] = 0x7e;
                sbuf[1] = 0x01;
                sbuf[2] = 0x00;
                sbuf[3] = 0x10;
                sbuf[4] = 0x01;
                sbuf[5] = 0x00;
                sbuf[6] = 0x12;
                sbuf[7] = 0x0d;
                sbuf[8] = 0x08;
                sbuf[9] = 0x09;
                sbuf[10] = 0x0a;
                sbuf[11] = 0x0b;
                sbuf[12] = 0x0c;
                sbuf[13] = 0x0d;
                sbuf[14] = 0x0e;// 获取实时信息

    initUart();
    while(1)
    {
        SBUF1=1;
        if(point1==15)
            {
                ES1=0;
               putchar(sbuf);
               ES1=1;

            point1=0;
            }
        if(point2==6)
            point2=0;

    }
}

  void putchar(uint08 xdata *ucBuff)    //串口1发送
{     uint08 ucNum;

      for(ucNum = 0; ucNum <15; ucNum++)
    {
        SBUF = ucBuff[ucNum];

        while (0 == TI);

        TI = 0;

        }
}
数据不对

最新回复

这一版块,太没人气了,是不是大家都成大侠了 如果成大侠了,也常回家看看嘛,家里太冷清了 据说努力顶帖也是一种美德,但我只想大家常回家看看 毕竟每天都有新手需要帮忙,而我能帮的只能是把帖子顶起来  详情 回复 发表于 2008-4-4 01:23
点赞 关注

回复
举报

61

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
只发送一个数据,把Txd撬起来,用示波器量,
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
只发送一个数据,把Txd撬起来,用示波器量,
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

4
 
怎么不对?说说情况。你发给PC还是其他单片机?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
这一版块,太没人气了,是不是大家都成大侠了

如果成大侠了,也常回家看看嘛,家里太冷清了

据说努力顶帖也是一种美德,但我只想大家常回家看看

毕竟每天都有新手需要帮忙,而我能帮的只能是把帖子顶起来
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表