打印
[51单片机]

串口问题

[复制链接]
3080|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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;
}

使用特权

评论回复
5
79xiaozaizai|  楼主 | 2013-8-19 14:02 | 只看该作者
ningling_21 发表于 2013-8-19 12:53
太繁琐了
if(RI)
{

大神啊 膜拜啊  膜拜啊:handshake@ningling_21  

使用特权

评论回复
6
ayb_ice| | 2013-8-19 14:06 | 只看该作者
if(RI){
    U8 c = SBUF;
    SBUF = c;
    RI = 0;
}

使用特权

评论回复
7
79xiaozaizai|  楼主 | 2013-8-19 14:55 | 只看该作者
ayb_ice 发表于 2013-8-19 14:06
if(RI){
    U8 c = SBUF;
    SBUF = c;

弱弱的问,U8 什么意思

使用特权

评论回复
8
草民| | 2013-8-19 15:10 | 只看该作者
79xiaozaizai 发表于 2013-8-19 14:55
弱弱的问,U8 什么意思


typedef unsigned char  u8;

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

使用特权

评论回复
9
受不了了| | 2013-8-19 15:28 | 只看该作者
找一根导线,把串口的23两个脚并起来就可以了:lol

使用特权

评论回复
10
79xiaozaizai|  楼主 | 2013-8-19 16:33 | 只看该作者
草民 发表于 2013-8-19 15:10
typedef unsigned char  u8;

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

谢谢了  意思就是符号常量

使用特权

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

本版积分规则

6

主题

95

帖子

2

粉丝