如何使串口通信和按钮动作一起进行

2019-07-16 04:13发布

#include <REG52.H>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit LED1=P0^0;
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit K1=P1^0;
sbit K2=P1^1;
//延时子程序模块
//**********************************************
void mdelay(uint delay)
{ uchar i;
  for(;delay>0;delay--)
     {for(i=0;i<115;i++) //1ms延时.
         {;}
     }
}
//***********************************************

//***************************************
//串口通信模块
//***************************************
//**********************************
//串口初始化程序
//**********************************//
void uartint(void)
{
SCON=0x40;
PCON=0x00;
REN=1;
TI=0;
RI=0;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
}
//**********************************
//串口发送字符程序
//**********************************
void sendchar(uchar _data)
{
SBUF=_data;
while(TI==0);
TI=0;
}
//**********************************
//串口接收字符程序
//**********************************
uchar inceptchar(void)
{
uchar uart_data;
while(RI==0);
RI=0;
uart_data=SBUF;
return(uart_data);
}
//************************************
//主程序
//实现功能:串口接收字符03,LED1亮0.5秒后灭,LED2亮。
//串口接收字符04,LED2灭,0.5秒后,LED3亮。
//按下按钮K1,LED1、LED2灯亮,按下按钮K2,LED3灯亮。
//*************************************
void main( )
{
  uartint();
  if((inceptchar()==0x03))
      {
   LED1=0;
   mdelay(500);
   LED1=1;
   LED2=0;
   }  
  
  else if((inceptchar()==0x04))
      {
   LED2=1;
   mdelay(500);
   LED3=0;
   }
  else if(K1==0)
   {
   mdelay(15);
    if(K1==0)
    {
    LED1=LED2=0;
    }
   while(!K1);
   }
  
  else if(K2==0)
   {
   mdelay(15);
    if(K2==0)
    {
    LED3=0;
    }
   while(!K2);
   }
  

}
问题:串口可以正常接收数据并有相应的LED闪亮,但是按钮却不起任何作用?盼各位大虾指导一二。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
lovezjf234
1楼-- · 2019-07-16 05:02
你的按键函数是否正确,或者你的逻辑表达是否有问题,按照正常来讲不会有什么太大的问题
草根白骨精
2楼-- · 2019-07-16 05:20
 精彩回答 2  元偷偷看……
HARRY007
3楼-- · 2019-07-16 06:09
程序是不是没有贴完啊?
笑靥
4楼-- · 2019-07-16 07:14
没有WHILE循环,上电后串口没接受到数据,MAIN函数在你还没来得及按按键就很快就执行完啦!可以试下把初始化以后的程序放到while(1)中!
cheatsl
5楼-- · 2019-07-16 11:13
谢谢大家!

一周热门 更多>