您的位置 首页 应用

proteus与keil Cx51的单片机仿真(串行口单工通讯2)

单片机U1和U2串行口均工作于方式3,其中U1作为接收机,U2作为发送机,波特率为9600,U1接收U2发送数据后,依次送P1、P0和P2口进行流水灯显

单片机U1和U2串行口均作业于方法3,其间U1作为接纳机,U2作为发送机,波特率为9600,U1接纳U2发送数据后,顺次送P1、P0和P2口进行流水灯显现,编写程序,并用Proteus仿真。

电路图:

U1程序:

#include//包括单片机寄存器的头文件
sbit p=PSW^0;
unsigned char receive(void)//接纳一个字节数据
{
unsigned char dat;
while(RI==0);
RI=0;//只需接纳中止标志位RI没有被置1,等候,直至接纳完(RI1)
ACC=SBUF;//将接纳缓冲器中的数据存于dat
if(RB8==P)//奇校验
{dat=ACC;return dat;}
}
void main(void)
{
unsigned char i;
TMOD=0x20;//定时器T1作业于方法2
SCON=0xd0;//SCON=1101 0000B,串行口作业方法1,答应接纳(REN=1)
PCON=0x00;//PCON=0000 0000B,波特率9600
TH1=0xfd;TL1=0xfd;//根据规定给定时器T1赋初值
TR1=1;//发动定时器T1
REN=1;//答应接纳
while(1)
{
for(i=0;i<9;i++)P1=receive();//将数据送P1口显现
for(i=0;i<9;i++)P0=receive();//将数据送P0口显现
for(i=0;i<9;i++)P2=receive();//将数据送P2口显现
}
}

U2程序:

#include//包括单片机寄存器的头文件
sbit p=PSW^0;
unsigned char code Tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};//流水灯灯操控码,该数据被界说为全局变量
void send(unsigned char dat)//向PC发一个字节数据
{
ACC=dat;
TB8=p;
SBUF=dat;
while(TI==0);//发送等候
TI=0;
}
void delay(void)//延时约150ms
{
unsigned char m,n;
for(m=0;m<200;m++)for(n=0;n<250;n++);
}
void main(void)
{
unsigned char i;
TMOD=0x20;//TMOD=0010 0000B,定时器T1作业于方法2
SCON=0xc0;//SCON=1100 0000B,串行口作业方法3,SM2置0,不运用多机通讯,TB8置0
PCON=0x00;//PCON=0000 0000B,波特率9600
TH1=0xfd;TL1=0xfd;//给定时器T1赋初值
TR1=1;//发动定时器T1
while(1)
{
for(i=0;i<27;i++)//模仿检测数据
{
send(Tab[i]);//发送数据i
delay();//50ms发送一次检测数据
}
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/260006.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部