是一道单片机C51程序设计题:设计一个双机通信系统。

2025-04-08 14:56:55
推荐回答(2个)
回答1:

#include //头文件
#include //循环文件
#define uchar unsigned char//宏定义
#define uint unsigned int
uchar count,cnt;//定义全局变量
sbit LED2=P3^4;
sbit LED1=P3^5;
sbit key3=P3^6;
sbit key4=P3^7;
sbit buzze=P2^3;
uchar temp,flag1,flag2;
void delay(uchar i)
{
uchar x,y;
for(x=i;x>0;x--)
for(y=110;y>0;y--);
}
void init()
{
TMOD=0x20;//T1工作在方式2
TH1=0XFd; //波特率为:4.8kbit/s,发送与接收的波特率要相等
TL1=0XFd;
TR1=1; //启动定时器1
SCON=0X50;//串口中断工作在方式1,允许接收
EA=1;
ES=1;
}

void key_scan2()
{
cnt=0x55;
SBUF=cnt;
//送给缓冲区,发送
while(!TI); //等待发送完
TI=0;
// flag1=1; //发送完了,标志位清零

delay(5000); //判断是否有按键按下

cnt=0xff;
SBUF=cnt;
//送给缓冲区,发送
while(!TI); //等待发送完
TI=0;
// flag1=1;
delay(5000); //发送完了,标志位清零

}

void main()
{

init(); //调用初始化子函数
while(1)
{
key_scan2();
}

}

void recive() interrupt 4
{
if(RI)
{
RI = 0;
//add your code here!
temp=SBUF;
// P4=temp;
P0=temp;
// LED1=0;
// delay(5000);
// LED1=1;
}
else
TI = 0;
}

#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit key1=P3^5;
sbit key2=P3^4;
uchar count,cnt,flag1,flag2,temp;

void delay(uchar i)
{
uchar x,y;
for(x=i;x>0;x--)
for(y=110;y>0;y--);
}
void init()
{
TMOD=0x20; //T1工作在方式2
TH1=0XFd; //波特率为4.8kbit/s
TL1=0XFd;
TR1=1; //启动定时器1
SCON=0X50; //REN=1; SM0=0;SM1=1;
EA=1;
ES=1;

//串口工作在方式1,允许接收
}
void key_scan2()
{
cnt=0x55;
SBUF=cnt;
//送给缓冲区,发送
while(!TI); //等待发送完
TI=0;
// flag1=1; //发送完了,标志位清零

delay(5000); //判断是否有按键按下

cnt=0xff;
SBUF=cnt;
//送给缓冲区,发送
while(!TI); //等待发送完
TI=0;
// flag1=1;
delay(5000); //发送完了,标志位清零

}
void main()
{
init(); //调用初始化子函数
while(1)
{
key_scan2();
}
}
void UARTInterrupt(void) interrupt 4
{
if(RI)
{
RI = 0;
//add your code here!
temp=SBUF;
P0=temp;

}
else
TI = 0;
}

回答2:

你这个是要单片机设计,当然你是要实现具体的
功能要求的