51单片机proteus串口仿真问题
时间:10-02
整理:3721RD
点击:
第一个单片机控制第二个单片机的灯,按一下不亮,按两下第一个亮,按三下第二个亮,按四下都亮。
单片机1的程序:
#include<reg51.h>
#define uchar unsigned char
sbit K1=P1^0;
uchar num=0;
void send(uchar);
void main()
{
SCON=0X40;
TMOD=0x20;
PCON=0X00;
TH1=0XE8;
TL1=0XE8;
TI=0;
TR1=1;
while(1)
{
if(K1==0)
{
while(K1==0);
num=(num+1)%4;
if(num==0)
{
send(1);
P0=0XFF;
}
else if(num==1)
{
send(2);
P0=0XF0;
}
else if(num==2)
{
send(3);
P0=0X0F;
}
else
{
send(4);
P0=0X00;
}
}
}
}
void send(uchar i)
{
SBUF=i;
while(TI==0);
TI=0;
}
单片机2的程序:
#include<reg51.h>
#define uchar unsigned char
uchar state;
void main()
{
SCON=0X50;
TMOD=0x20;
PCON=0X00;
TH1=0XE8;
TL1=0XE8;
RI=0;
TR1=1;
while(1)
{
if(RI==1)
{
state=SBUF;
if(state==1)
{
P0=0XFF;
}
else if(state==2)
{
P0=0XF0;
}
else if(state==3)
{
P0=0X0F;
}
else
{
P0=0;
}
RI=0;
}
}
}
求救:为何无论如何单片机2收到的都是00呢?程序哪里的错误呢,谢谢!
单片机1的程序:
#include<reg51.h>
#define uchar unsigned char
sbit K1=P1^0;
uchar num=0;
void send(uchar);
void main()
{
SCON=0X40;
TMOD=0x20;
PCON=0X00;
TH1=0XE8;
TL1=0XE8;
TI=0;
TR1=1;
while(1)
{
if(K1==0)
{
while(K1==0);
num=(num+1)%4;
if(num==0)
{
send(1);
P0=0XFF;
}
else if(num==1)
{
send(2);
P0=0XF0;
}
else if(num==2)
{
send(3);
P0=0X0F;
}
else
{
send(4);
P0=0X00;
}
}
}
}
void send(uchar i)
{
SBUF=i;
while(TI==0);
TI=0;
}
单片机2的程序:
#include<reg51.h>
#define uchar unsigned char
uchar state;
void main()
{
SCON=0X50;
TMOD=0x20;
PCON=0X00;
TH1=0XE8;
TL1=0XE8;
RI=0;
TR1=1;
while(1)
{
if(RI==1)
{
state=SBUF;
if(state==1)
{
P0=0XFF;
}
else if(state==2)
{
P0=0XF0;
}
else if(state==3)
{
P0=0X0F;
}
else
{
P0=0;
}
RI=0;
}
}
}
求救:为何无论如何单片机2收到的都是00呢?程序哪里的错误呢,谢谢!