两个单片机通信时数码管不能正常显示

2019-07-16 01:28发布

发送单片机
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P3^2;      //两个独立键盘
sbit key2=P3^4;
uchar a;
void delayms(uint x)   //延时程序
{
uint i,j;
for(i=x;i>0;i--)
  for(j=110;j>0;j--);
}
void keyscan()      //键盘扫描
{

if(key1==0)
{
  delayms(10);       //去除抖动延时
  if(key1==0)
  {
   a=0;
   while(!key1);
  }
}
if(key2==0)
{
  delayms(10);
  if(key2==0)
  {
   a=1;
   while(!key2);
  }
}
SBUF=a;   //信息传输给SBUF寄存器
}
void main()
{
TMOD=0x20; // 计时器1的设定
TH1=0xfd;
TL1=0xfd;
TR1=1;
EA=1;  //  中断的设定
ES=1;
SM0=0;  //  中断工作方式1
SM1=1;
while(1)
  keyscan();
}
void ser() interrupt 4 //   进入中断,把ti置零
{
TI=0;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
yao1
2019-07-16 03:42
接受单片机
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0x3f,0x06,0x5b}; //          数码管显示数字
uchar a;
void main()
{
        TMOD=0x20;                 //        计时器1的设定
        TH1=0xfd;
        TL1=0xfd;
        TR1=1;
        EA=1;                        //        中断的打开
        ES=1;
        SM0=0;                   //        中断方式设定为工作方式1,接受
        SM1=1;
        REN=1;
        while(1)
        {
                a=SBUF;                   //  把SBUF寄存器中的数据送个P1端口
                P1=table[a];         //显示数字
        }
}
void ser() interrupt 4         //         进入中断,将RI置零
{
        RI=0;
}

一周热门 更多>