Proteus章节仿真双机通信

单片机双机通信电路的PROTEUS设计与仿真
设计任务:两片A T89C51单片机,工作在方式1,处于收发状态,波特率为1200,数据从P1口通过数字开关元件输入,从串行发送。接收数据从串行口入,通过处理后,由P2口输数码管进行显示。编程实现A机发B机收,B机发A机收。
解题思路:A、B两块单片机的程序是一样的,设A、B都工作在方式1,波特率为1200,采用中断,主程序不断将P1口的数据对外发送,中断服务程序实现将接收到的数据送P2口显示。
电路设计:在PROTEUS中选择元器件,设计电路如图所示。
在仿真过程中,改变P1口的数据,发现另一块数码管随着发生变化,这说明双机串行通信成功。
01101110B=6EH 10101011B=ABH 解题思路:
1、串行设置:主要是对SCON寄存器的设置,和波特率的设置。需注意的是,RI和TI要手动软件清0.
2、串行中断服务程序:其函数名为UART() interrupt 4,注意关键字interrupt 4 不能省略,且该函数无返回值。
#include<reg51.h>
#include<intrins.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
main( )
水性封口胶{
uchar com;
SCON=0x50; //设置串行控制初始化01010000
//SM0SM1=01,方式1;SM2=0;REN=1,允许接收;
TMOD=0x20; // T1为方式2,波特率发生器;00100000;
TH1=0xe6; //主频6MHZ时T1的初值,此时SMOD=1烟道蝶阀
硅胶气囊TL1=0xe6; //设置波特率
PCON=0x80; //SMOD=1,波特率加倍
EA=1;
扫频信号源ES=1;
TR1=1; //启动T1开始定时
P1=0xff;
_nop_();
风电功率预测
高杨氏com=P1;
SBUF=com; //启动串行发送
while(!TI); //等待发送完毕
TI=0;
}
void UART( ) interrupt 4 using 3 //串行中断服务程序编写{
uchar dat;
EA=0;
if(TI==0)
{
RI=0;
dat=SBUF;
P2=dat;
}
else
{
TI=0;
}
EA=1;
}

本文发布于:2024-09-22 09:55:34,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/177728.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:中断   串行   发送   服务程序   实现   串行口
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议