微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机串口中断接收多个字节问题

51单片机串口中断接收多个字节问题

时间:10-02 整理:3721RD 点击:
#include<reg52.h>
#define uchar unsigned char
char A[8],num;
sbit LED = P1^3;
void ck_zhongduan() interrupt 4
{
   
    if(RI==1)                           //判断是否为接受
    {
   
        A[num++]=SBUF;
       if(num>7)
       {
         num=0;
       }
         RI=0;
      }   
           
}
void uart()
{
    SCON=0x50;                            //主程序开始进行配置
    PCON=0x80;
    TH1=243;                               //波特率为4800
    TL1=243;
    TMOD  |=0x20;                      //配置定时器1:方式2
    TR1=1;
    ES=1;
    EA=1;
}
void timer0()
{
    TMOD |=0x01;                         //设T0为方式1,GATE=1;
    TH0=0;
    TL0=0;
    ET0=1;                                    //允许T0中断
}
void main()
{
       uart();
       timer0();
    while(1)
    {
      
        if((A[0]==0x23)&&(A[7]==0x26))
        {
            if(A[1]==0x23)
            LED=0;
             else
                LED=1;
         }
    }
}
以上是我编写的程序,一次发8个字节,第1个字节和第8个字节为校验,当第二个字节为“#”时,LED亮,否则灭。可是我调试的时候,有的时候行,有时不行,求指教!

是不是接收的时候没有判断是否结束的问题

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

网站地图

Top