本实验主要是U1通过串口线TXD端将流水灯控制码以方式1发送到单片机U2的RXD,U2再利用接受的控制码控制流水灯点亮其P1口的8个发光二极管

单片机U1发送端
本文引用地址:https://www.eepw.com.cn/article/201611/320419.htm首先建立建立一个文件夹send,之后建立工作send,再添加一个send.c源文件,代码如下
#include
unsigned char code Tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void Send(unsigned char dat)
{
SBUF=dat;
while(TI==0) //若发送中断标志位没有置"1",就等待
{
;
}
TI=0;
}
void delay(void)
{
unsigned char m,n;
for(m=0;m<200;m++)
for(n=0;n<250;n++)
;
}
void main()
{
unsigned char i;
TMOD=0x20; //定时器工作在方式2
SCON=0x40; //串口工作方式1
PCON=0x00; //设置波特率为9600b/s
TH1=0xfd;
TL1=0xfd;
TR1=1;
while(1)
{
for(i=0;i<8;i++)
{
Send(Tab[i]);
delay();
}
}
}
单片机U2接收端
首先建立建立一个文件夹receid,之后建立工作receive,再添加一个receid.c源文件,代码如下
#include
unsigned char Receive(void)
{
unsigned char dat;
while(RI==0) //只要接受中断标志位RI没有被置"1"就等待,直至接受完毕
;
RI=0;
dat=SBUF;
return dat;
}
void main(void)
{
TMOD=0x20; //定时器T1工作在方式2
SCON=0x50; //串口工作在方式1,允许接受(REN=1)
PCON=0x00; //主要设置波特率为9600b/s
TH1=0xfd;
TL1=0xfd;
TR1=1; //启动定时器T1
while(1)
{
P1=Receive();
}
}
评论