• “龙江二号”微卫星传回地月合影 2019-04-18
  • 中国驻泰国大使考察合艾国光中学孔子课堂 2019-04-18
  • 【清园20年】感恩大回馈!半价!半价! 2019-04-18
  • 中央纪委紧盯节点 4年来通报曝光问题近4000起 2019-04-13
  • 2013环球企业领袖宁夏圆桌会议嘉宾云集 2019-04-13
  • 《魔兽世界》未解之谜 那些仍不能被玩家们踏足的领地 2019-04-11
  • 钱江潮评 让高质量发展插上人才的翅膀 2019-04-10
  • 习近平两会期间谈社会主义核心价值观 2019-04-02
  • 文脉颂中华——黄河新闻网 2019-04-02
  • 陈小林的专栏作者中国国家地理网 2019-03-29
  • 中英航母大战谁能赢歼151枚炸弹就能炸瘫女王 2019-03-22
  • 独特“光捕捉器”可控制分子生化性质 2019-03-22
  • 女性之声——全国妇联 2019-03-19
  • 【理上网来·辉煌十九大】德国北威州经济部长:十九大报告表明中国有能力为世界做出更多贡献 2019-03-11
  • 全国小麦收获进度过八成 2019-03-07
  • 打印

    如何一天内弄到5万块钱: [疑难问答] MA801串口问题

    [复制链接]
    459|4
    跳转到指定楼层
    楼主
    有两个问题想请教。
    一个是发送数据:在中断里清零发送中断位,就会出现我发多个字节,在串口助手上只能收到最后一个字节。后来我改为在不用中断在程序里等待发送中断位TI变为1时清零中断位,就不会出现之前的情况,但是差不多超过六七个字节程序就会卡死没有数据,不清楚原因是什么。
    还有一个问题:接收到特定数据后会返回BB _ _ CC  但是用串口接收,刚开始几次就只能收到BB 00 CC  后来改为BB FF CC  又只能收到 BB EE CC,,。
    还请各位可以帮帮忙
    沙发
     楼主 | 2019-1-8 17:46 | 只看该作者
    #include"main.h"
    unsigned int ceshi=0,shou=0,fa=0,ttt=0;

    void delay_s(unsigned int d);
    void fanhui (int wei);

    void main()
    {
    //        unsigned int i,add_pint,add_pint1,refresh_count;//////j,k,l,p,
            unsigned int i,vcd=0;
            delay_s(2000);

            SM0=0;
            SM1=1;
            SM2=0;
            REN=1;
            PCON=0x00;            //电源波特率控制寄存器
            TMOD=0x20;            //定时器1模式2
            TCON=0x00;
            AUXR=0x00;           //辅助寄存器
            TH1=0xFD;
            TL1=0xFD;
            ET1=1;
            TR1=1;
            IP=0x10;          //中断优先级
            IPH=0x10;         //中断优先级
            TI=0;
            RI=0;

           


            mot=1;

    //        for(i=0;i<126;i++)data_in_buf[i]=0x30;

            while(1)
            {
                    EA=1;
                    ES=1;
                           
                    if ((data_in_buf[0]==0xee) && (data_in_buf[2]==0x03) && (data_in_buf[byte_count]==0xcc))
                    {
                            if (data_in_buf[1]==(byte_count-2))
                            {
                                    //这里可以忽略
                            }
                            else
                            {
                                    r_succ(0xff);
                      }
                    }
                    else
                    {
                            r_succ(0x06);
                    }
           
            }
    }




    /********串口中断程序**********/

    void serial() interrupt 4 using 1          //  串口中断子程序
    {

           
            if(RI)
            {
                    RI=0;
                    if (SBUF==0xee)           //  
                    {
                                    byte_count=0;
                    }       
                    data_in_buf[byte_count]=SBUF;         //  
                    ++byte_count;
           
                    shou=SBUF;

                    ceshi=ceshi+4;
             }
             else if(TI)
             {

                    fa += 1;
             }
             else
             {
                    ttt=ttt+1;
             }
    }


    void delay_s(unsigned int d)
    {
            unsigned int i=0,j=0,c=100;
            for(i=0;i<d;i++)
                    for(j=0;j<c;j++);
    }



    void r_succ(unsigned int d)       //  
    {
                   
                   
              SBUF=0xbb;                  //  d
              while (TI==0);                          //  
              TI=0;                                                  //  注

              SBUF=d;                                          //  CMD 0x01,0x02,0x03,0x05,0x06
              while (TI==0);
              TI=0;

              SBUF=0xcc;                                  //  注
              while (TI==0);
              TI=0;
    }
    板凳
     楼主 | 2019-1-9 14:26 | 只看该作者
    串口发送会乱,,比如发CE 55 AA    会收到CA E5 之类的   但是如果延时到差不多一秒以后 就会正常。
    希望有博学多识的人才看到可以帮想我,,谢谢。
    地板
    | 2019-1-15 10:00 | 只看该作者
    1,查看波特率是不是一致
    2,串口中断的优先级是不是有其它中断打断,将串口优先级设置成最高级试试
    5
    | 2019-1-15 13:18 | 只看该作者
    主频是多少?可以使用示波器看看串口的波形是否正确!
    扫描二维码,随时随地手机跟帖
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    我要发帖 投诉建议 创建版块 申请版主

    快速回复

    您需要登录后才可以回帖
    登录 | 注册
    高级模式

    论坛热帖

    快速回复 广东快乐十分走势图 返回列表
  • “龙江二号”微卫星传回地月合影 2019-04-18
  • 中国驻泰国大使考察合艾国光中学孔子课堂 2019-04-18
  • 【清园20年】感恩大回馈!半价!半价! 2019-04-18
  • 中央纪委紧盯节点 4年来通报曝光问题近4000起 2019-04-13
  • 2013环球企业领袖宁夏圆桌会议嘉宾云集 2019-04-13
  • 《魔兽世界》未解之谜 那些仍不能被玩家们踏足的领地 2019-04-11
  • 钱江潮评 让高质量发展插上人才的翅膀 2019-04-10
  • 习近平两会期间谈社会主义核心价值观 2019-04-02
  • 文脉颂中华——黄河新闻网 2019-04-02
  • 陈小林的专栏作者中国国家地理网 2019-03-29
  • 中英航母大战谁能赢歼151枚炸弹就能炸瘫女王 2019-03-22
  • 独特“光捕捉器”可控制分子生化性质 2019-03-22
  • 女性之声——全国妇联 2019-03-19
  • 【理上网来·辉煌十九大】德国北威州经济部长:十九大报告表明中国有能力为世界做出更多贡献 2019-03-11
  • 全国小麦收获进度过八成 2019-03-07