打印

为什么我接受的都是乱码????????????

[复制链接]
1738|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
haochangxu|  楼主 | 2013-9-19 21:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 haochangxu 于 2013-9-20 09:52 编辑

#include <REG52.H>
#include <intrins.h>
#define  NOP() _nop_()  /* 定义空指令 */
sbit LS138A = P2^2;          //定义138译码器的输入A脚由P2.2控制
sbit LS138B = P2^3;            //定义138译码器的输入脚B由P2.3控制
sbit LS138C = P2^4;         //定义138译码器的输入脚C由P2.4控制

void delay(unsigned int i);      //函数声名

//此表为 LED 的字模, 共阴数码管 0-9  -
unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
bit Flag;
unsigned int ReData,SenData;
unsigned int LedOut[10];
unsigned int buf[1];
unsigned int a=0,b,c,count=0;



void main (void)
{
    unsigned int i;                        
    SCON = 0x50;      //REN=1允许串行接受状态,串口工作模式1               
    TMOD = 0x20;      //定时器工作方式2                    
    PCON = 0x80;                                                         
    TH1  = 0xFD;     //baud*2  /* reload value 19200、数据位8、停止位1。效验位无 (11.0592)           
     TL1 = 0xF3;  
     TR1  = 1;                                                                          
     ES   = 1;        //开串口中断                  
     EA   = 1;        // 开总中断
                        
     while(1)
        {         
                if(Flag==1)
                {               
                        SBUF=(ReData=(buf[0])+(buf[1]));                 //发送,我是想发送到串口助手上显示。但是不对
                            while(TI==0);
                                TI=0;
                                         Flag=0;
                }
        
              LedOut[0]=Disp_Tab[ReData%10000/1000];
              LedOut[1]=Disp_Tab[ReData%1000/100];
             LedOut[2]=Disp_Tab[ReData%100/10];
             LedOut[3]=Disp_Tab[ReData%10];
                                    
                for( i=0; i<4; i++)  //实现8位动态扫描循环 一直扫描
                {         
                        P0 = LedOut;  //将字模送到P0口显示                                                
                        switch(i)          //使用switch 语句控制位选  也可以是用查表的方式 学员可以试着自己修改                                 
                        {            
                             case 0:LS138A=0; LS138B=0; LS138C=0;  break;         
                            case 1:LS138A=1; LS138B=0; LS138C=0;  break;                     
                            case 2:LS138A=0; LS138B=1; LS138C=0;  break;
                            case 3:LS138A=1; LS138B=1; LS138C=0;  break;

                                default :break;
                        }
                        delay(100);        
                }
               
        
        }               
}



        
/****************************************************
               串口中断程序
//******************************************************/
void ser_int (void) interrupt 4 using 1
        {

                if(        RI==1)
                                                                                          
                                 buf[count]=SBUF-0x30;  //SUBF接受
                                RI=0;
                                count++;

                                if(count>1)
                                        {
                                                ReData=(buf[0])*10+(buf[1]);
                                                count=0;
                                                 Flag=1;
                                                
                                         }
                                                                                                                                      
         }
          void delay(unsigned int i)
{
    char j;
    for(i; i > 0; i--)
        for(j = 200; j > 0; j--);
}




相关帖子

沙发
林志财| | 2013-9-19 22:43 | 只看该作者
晶振很重要哦,

使用特权

评论回复
板凳
haochangxu|  楼主 | 2013-9-19 22:52 | 只看该作者
林志财 发表于 2013-9-19 22:43
晶振很重要哦,

我发送,显示都正常。单位接受很正常,就是多位接受的时候,除了问题。

使用特权

评论回复
地板
NE5532| | 2013-9-20 09:32 | 只看该作者
程序太乱了,实在看不下去,楼主如果发送和显示都是正常的,就试着检查接收的起始和结束条件以及缓冲区是否冲突等问题。

使用特权

评论回复
5
林志财| | 2013-9-20 11:57 | 只看该作者
本来想帮你试一试的,没晶振

使用特权

评论回复
6
haochangxu|  楼主 | 2013-9-20 19:46 | 只看该作者
NE5532 发表于 2013-9-20 09:32
程序太乱了,实在看不下去,楼主如果发送和显示都是正常的,就试着检查接收的起始和结束条件以及缓冲区是否 ...

慢慢会工整的,嘻嘻

使用特权

评论回复
7
haochangxu|  楼主 | 2013-9-20 19:46 | 只看该作者
林志财 发表于 2013-9-20 11:57
本来想帮你试一试的,没晶振

谢了,

使用特权

评论回复
8
xyz549040622| | 2013-9-20 20:10 | 只看该作者
单次正常,发多次不正常,是不是你发送的太快了

使用特权

评论回复
9
江枫渔火| | 2013-9-20 23:57 | 只看该作者
乱码是应为错别字多

使用特权

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

本版积分规则

11

主题

38

帖子

1

粉丝