微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求助,c51上位机通过按键给下位机发送数据显示在lcd1602上。下边是程序,现在1602显示不了串口发送的数据。

求助,c51上位机通过按键给下位机发送数据显示在lcd1602上。下边是程序,现在1602显示不了串口发送的数据。

时间:10-02 整理:3721RD 点击:
跪求知道是什么原因。
#include <reg52.h>
#include"1602h.h"
#define uchar  unsigned char
#define uint   unsigned int
uchar i=0,dat,q,playflag;
uchar buf[]={"   "};
void  serial() interrupt 4
{
   ES = 0;         //关闭串口中断
        if(RI==1)
               
  {  
                   RI = 0;         //清楚串口接受标志
               
                if(dat!=0)        //判断SBUF中是否有数据,如果没有则不进行发送数据
                {         playflag=1;     //显示标志位
                           dat=SBUF;       
                  for(i=0;i<3;i++)
                    {  
                            dat=SBUF;
                            if(dat>0)
                      buf[ ]=dat;
                   }
          }
        }               
                 ES=1;    //允许串口中断
        }               
void display()     //显示串口接收数据
        {
               
                if(playflag)
                {
                        write_com(0x80);
                        write_data(buf[0]);
                        write_data(buf[1]);
                        write_data(buf[2]);
                        playflag=0;
                }       
  }
void main(void)
{
          init();              //lcd初始化
    SCON=0x50;           //设定串口工作方式
    PCON=0x00;           //波特率不加倍
                       
    TMOD=0x20;           //定时器1工作与8位自动重装模式
    EA=1;
    ES = 1;              //允许串口中断
    TL1=0xfd;
    TH1=0xfd;             //波特率9600
    TR1=1;
          delay_ms(5);
    while(1)
                {
     display();   //显示串口发送的数据
                }
}

if(dat!=0)        //判断SBUF中是否有数据,如果没有则不进行发送数据,那dat什么时候清零

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top