[51单片机] 串口问题

[复制链接]
 楼主| 79xiaozaizai 发表于 2013-8-18 21:03 | 显示全部楼层 |阅读模式
上位机发一串数,如何在让单片机吧同样的数发回来
qzc13457 发表于 2013-8-19 08:37 | 显示全部楼层
接着把数据给SBUF就行了 啊
void uart()
{
        if(ser_flag==1)
                {
                        ES=0;
                        ser_flag=0;
                        for(j=0;j<57;j++)
                        {
                                SBUF=receive_data[j];
                                while(!TI);
                                TI=0;
                                delay(10);
                        }

                        ES=1;
                }


}
 楼主| 79xiaozaizai 发表于 2013-8-19 12:18 | 显示全部楼层
我也是这样做的后来发现在上位机显示时,数据要处理才行后再能按我的意思显示,比如我发 电脑发 0123456789, 让电脑在显示 I get 0123456789    程序附上
#include<reg52.h>
#define uchar unsigned char
uchar flag,a,i;
uchar code table[]="I get ";
uchar table1[10];
int j=0;

void init()
{
        TMOD=0x20;                       
        SCON=0x50;
        TH1=0xfd;                         
        TL1=0xfd;
        TR1=1;                                 
        EA=1;                                 
        ES=1;                               
}

void ser()interrupt 4
{       
        RI=0;                                  
        if(j==10)
        {
            j=0;
            flag=1;                                 
        }
        table1[j]=SBUF;                                  
        j++;
}
void main()
{
    init();
        while(1)
        {
                if(flag==1)                         
                {
                    ES=0;               
                        for(i=0;i<6;i++)
                        {
                            SBUF=table[i];          
                                while(!TI);
                                TI=0;                          
                        }
                        for(i=0;i<10;i++)
                        {
                            SBUF=table1[i+1];
                                if(i<9)
                                {
                                        SBUF=table1[i+1];
                                }
                                else if(i==9)
                                {
                                        SBUF=table1[0];      //   ????很是费解
                                }
                             while(!TI);
                            TI=0;               
                        }
                        ES=1;
                        flag=0;
                }
        }
}
ningling_21 发表于 2013-8-19 12:53 | 显示全部楼层
太繁琐了
if(RI)
{
   SBUF=SBUF;
   RI=0;
}
 楼主| 79xiaozaizai 发表于 2013-8-19 14:02 | 显示全部楼层
ningling_21 发表于 2013-8-19 12:53
太繁琐了
if(RI)
{

大神啊 膜拜啊  膜拜啊:handshake@ningling_21  
ayb_ice 发表于 2013-8-19 14:06 | 显示全部楼层
if(RI){
    U8 c = SBUF;
    SBUF = c;
    RI = 0;
}
 楼主| 79xiaozaizai 发表于 2013-8-19 14:55 | 显示全部楼层
ayb_ice 发表于 2013-8-19 14:06
if(RI){
    U8 c = SBUF;
    SBUF = c;

弱弱的问,U8 什么意思
草民 发表于 2013-8-19 15:10 | 显示全部楼层
79xiaozaizai 发表于 2013-8-19 14:55
弱弱的问,U8 什么意思


typedef unsigned char  u8;

所以U8 就是unsigned char,嵌入式编程中多用。
受不了了 发表于 2013-8-19 15:28 | 显示全部楼层
找一根导线,把串口的23两个脚并起来就可以了:lol
 楼主| 79xiaozaizai 发表于 2013-8-19 16:33 | 显示全部楼层
草民 发表于 2013-8-19 15:10
typedef unsigned char  u8;

所以U8 就是unsigned char,嵌入式编程中多用。

谢谢了  意思就是符号常量
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

95

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

6

主题

95

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部