标题: 求助:若单片机收到字符‘a’,则打开所有发光二级管;若收到字符‘b’,则关闭所... [打印本页]

作者: threatenxiaolai    时间: 2020-6-16 23:52
标题: 求助:若单片机收到字符‘a’,则打开所有发光二级管;若收到字符‘b’,则关闭所...
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void Uartlnit();
unsigned char flag,i,a=0x00,b=0xff;
typedef unsigned int u16;   //?????????????????????
typedef unsigned char u8;
#define led P1    //??P1??????led,???????????led????P1??
void delayms(u16);                              
void delayms(uint);   //????????????????  
                  
void Uartlnit()     
{
while(1)  
{
u8 i;
  led=0x00;   //??????? ???????з????????                        
  delayms(1000); //??????? ???1000ms                        
  led=0xff;     //??????? ??????з????????                        
  delayms(1000);  
}
                    
SM0=0; //??????? ?洢?????                        
SM1=1; //??????? ??????????????1                        
TMOD=0X20; //??????? ?趨?????1?8λ?????????  
REN=1; //??????? ??????????????                        
TR1=1; //??????? ????????1                        
  TH1=0XFD;
TL1=0XFD; //??????? ?趨?????????????????9600bps                        
EA=1; //??????? ????ж????                        
ES=1; //??????? ?????ж????

}
void main()
{
Uartlnit();
   while(1)
{
    if(flag==1)
    {
      ES=0;
   for(i=0;i<6;i++)
   {
    SBUF=a;
    led=0x00;
    while(!TI);
    TI=0;
   }
      flag=0;
      SBUF=a;
   led=a;
      while(!TI);
      TI=0;
      ES=1;
     }

    else if(flag==1)
    {
      ES=0;
   for(i=0;i<6;i++)
   {
    SBUF=b;
    led=0xff;
    while(!TI);
    TI=0;
   }
      flag=0;
      SBUF=b;
   led=b;
      while(!TI);
      TI=0;
      ES=1;
    }
  else
  {
    led=0x00;
     delayms(1000); //??????? ???1000ms                        
     led=0xff;
}
}
}

void ser() interrupt 4    //??????? ???崮???ж?               
{
RI=0;
P1=SBUF;
a=SBUF;
b=SBUF;
flag=1;
}         
void delayms(uint x)
{
uint i,j;
for(i=x;i>0;i--)   //??????? i=x???????x????                        
  for(j=114;j>0;j--);
}

这是我的,不知道哪里出问题了,能帮我看看嘛,谢谢。

作者: threatenxiaolai    时间: 2020-6-16 23:53
若单片机收到字符‘a’,则打开所有发光二级管;若收到字符‘b’,则关闭所有发光二级管;否则,所有发光二级管每隔1s闪烁一次。
作者: 烈火    时间: 2020-6-17 08:17
自定义与宏定义冲突了 #define uint unsigned int
#define uchar unsigned char
typedef unsigned int u16;
typedef unsigned char u8
作者: wulin    时间: 2020-6-17 08:43
#include<reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
#define led P1

void Uart_Init()     
{              
        TMOD=0X20;
        TH1=0XFD;
        TL1=0XFD;   
        TR1=1;
        REN=1;
        SM0=0;
        SM1=1;
        EA=1;
        ES=1;
}

void main()
{
        Uart_Init();
        while(1);
}

void ser() interrupt 4
{
        u8 i;
        RI=0;
        i=SBUF;
        if(i=='a')
                led=0x00;
        if(i=='b')
                led=0xff;
}




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1