微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求大神帮看下51单片机的串口程序?

求大神帮看下51单片机的串口程序?

时间:10-02 整理:3721RD 点击:
本意是外部中断收到一个字节,中断,开启定时器0,disp_tc代表定时器中断三次,后将得到的值r发回串口,等待下次的外部中断触发,现在出现的问题是,隔一秒就发一个字节,一直发,我是想中断一次发回一个,求大神帮忙看下哪里出错了?感激不尽
void ser() interrupt 4
{
RI=0;
  P0=SBUF;
flag=1;
}
/*******************************************
* 函数名称: main()                          
/********************************************/
void main()
{
     oe=0;        //
     s0=1; s1=1;    //
         s2=0;s3=0;       //   
         disp_tc=0;
         init_serial_T1();     //初始化串口
while(1)
{       
  if(flag==1)
    {          flag=0;
              t0_init();    //初始化定时器0 计数器1
            }
       
        if(disp_tc==3)
         {             disp_tc=0;
              init_serial_T1();
                     play();
                   SBUF=r;
                   while(!TI);      
                    TI=0;
       
                delay_1ms(1000);
                 }
       
         }               
}
void c10ms_out() interrupt 1
{
   TR0=0;    //关闭定时
   TR1=0;    //关闭计数
  if(disp_tc<2)
    {
    TH0=0x3C;
     TL0=0xB0;
     TL1=0x00;
     TH1=0x00;
     TR0=1;
     TR1=1;
    }
      disp_tc+=1;
}

不会看

自己搞定了。

少了个ES=0;所以串口一直发

这个作何解释 是不是串口通信结束的设置语句

没关串口中断?收发都进中断

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

网站地图

Top