微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 串口中断的程序是不是有问题啊,调了好久

串口中断的程序是不是有问题啊,调了好久

时间:10-02 整理:3721RD 点击:
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit Beep =  P1^5 ;
uint z,flag,a;
uchar b;
void delay(uint i);
void init();
void wuyuanbeep(uint z);
void main()
{
         init();
         while(1)
         {
                 if(flag==1)
                {       
                        flag=0;       
                        switch(a)
                        {       
                                case 1:wuyuanbeep(400);break;
                                   case 2:wuyuanbeep(200);break;
                                case 3:wuyuanbeep(100);break;
                                case 4:wuyuanbeep(0)  ;break;
                        }
                                                 
                  }
         }
}
void wuyuanbeep(uint z)
{
         Beep= 1;
         delay(z);
         Beep= 0;
         delay(z);
}
void ser() interrupt 4
{
        RI=0;
        a=SBUF;
        flag=1;
}
void init()
{         
        TMOD=0x20;//设置定时器1为工作方式2
        TH1=0xfd;
        TL1=0xfd;
        TR1=1;
        REN=1;
        SM0=0;
        SM1=1;
        EA=1;
        ES=1;
}
void delay(unsigned int i)
{
    char j;
    for(i; i > 0; i--)
        for(j = 110; j > 0; j--);
}


void ser() interrupt 4
{
        RI=0;
        a=SBUF;
        flag=1;
}
换成
{
        while(!RI);
        a=SBUF;
        RI=0;
}
另外,flag是做什么的?

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

网站地图

Top