yishuicanhong
逸璞丷昊
2016-08-07 18:26
采纳率: 100%
浏览 1.9k
已采纳

单片机串口方式0的接收

想要用串口方式0从两一个缓存器里读数据,方式0的发送没有问题,但是允许接收
后怎么去启动接收这个动作?怎么控制我的TX去发出时钟脉冲信号?还是说这个TX是一直在工作的?求各位大侠帮帮忙,指点一下小弟

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • fanleung
    fanleung 2016-08-10 09:44
    已采纳

    你可以串口中断读取,也可以把收到的数据放进一个缓冲区(实时更新,也叫DMA吧),用定时器间隔去读

    点赞 评论
  • xinxiaoci
    懒人在行动 2016-08-07 23:24

    串口有中断啊,在中断里面进行数据接收。收到数据单片机会自动触发中断的

    点赞 评论
  • devmiao
    devmiao 2016-08-08 00:11

    #include //单片机51头文件,存放着单片机的寄存器

    unsigned char dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
    sbit gewei=P2^2; //个位选通定义
    sbit shiwei=P2^3; //十位选通定义
    unsigned char code table[]=;
    //;// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
    void Delay(unsigned int tc) //延时程序
    {
    while( tc != 0 )

    {unsigned int i;

    for(i=0; i tc--;}
    }
    void LED() //LED显示接收到的数据
    {
    shiwei=0;
    P0=~table[dat/16];
    Delay(8);
    shiwei=1;
    gewei=0;
    P0=~table[dat%16];
    Delay(5);
    gewei=1;
    }
    void Init_Com(void)//功能:串口初始化,波特率9600,方式1
    {
    TMOD = 0x20;
    PCON = 0x00;
    SCON = 0x50;
    TH1 = 0xFd;
    TL1 = 0xFd;
    TR1 = 1;
    }
    void main()//主程序功能:实现接收数据并把接收到的数据原样发送回去///////
    {
    Init_Com();//串口初始化
    // P1=0xf0;
    while(1)
    {
    if ( RI ) //扫描判断是否接收到数据,
    {
    dat = SBUF; //接收数据SBUF赋与dat
    RI=0; //RI清零。
    SBUF = dat; //在原样把数据发送回去
    }
    LED(); //显示接收到的数据
    }
    }#include //单片机51头文件,存放着单片机的寄存器

    unsigned char dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
    sbit gewei=P2^2; //个位选通定义
    sbit shiwei=P2^3; //十位选通定义
    unsigned char code table[]=;
    //;// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
    void Delay(unsigned int tc) //延时程序
    {
    while( tc != 0 )

    {unsigned int i;

    for(i=0; i<100; i++);

    tc--;}
    }
    void LED() //LED显示接收到的数据
    {

    shiwei=0;
    P0=~table[dat/16];
    Delay(8);
    shiwei=1;
    gewei=0;

    P0=~table[dat%16];
    Delay(5);
    gewei=1;
    }
    void Init_Com(void)//功能:串口初始化,波特率9600,方式1
    {
    TMOD = 0x20;
    PCON = 0x00;
    SCON = 0x50;

    TH1 = 0xFd;
    TL1 = 0xFd;
    TR1 = 1;

    }
    void main()//主程序功能:实现接收数据并把接收到的数据原样发送回去///////
    {
    Init_Com();//串口初始化
    // P1=0xf0;
    while(1)
    {
    if ( RI ) //扫描判断是否接收到数据,
    {
    dat = SBUF; //接收数据SBUF赋与dat
    RI=0; //RI清零。
    SBUF = dat; //在原样把数据发送回去
    }

    LED(); //显示接收到的数据
    }
    }

    点赞 评论

相关推荐