1、 测控仪器课程设计报告书 题目:双机通信的设计 双机通讯双机通讯 一、一、设计目的设计目的 基于单片机实现双机通信 二、二、设计要求设计要求 单片机要发送信息到另外一个单片机,另外一个单片机要反馈信息给发送 者。实现两个单片机的通信。 三、设计器材三、设计器材 STC89C52 芯片(2 个) LED 七段显示数码管(2 个) 晶振(2 个) 发光二极管(4 个) 复位开关(2 个) 5V 电源(1 个) 导线(若干) 四、设计方案及分析四、设计方案及分析 主机发送从机接收方式的主机工作流程: (1) 主机设置数据传送方法控制位 DIR 位 0,以表示主机有数据发送到从机; (2) 主机 ST
2、B 端口产生一个负脉冲,以使从机进入中断,并准备接收数据; (3) 主机将数据送 8 位数据端口,再设定 ACK 信号表示数据有效: (4) 主机检查 CHK 端口,等待从机 8 位端口取走数据; (5) 数据发送完成返回。 主机接收从机发送方式的主机工作流程: (1) 进入中断服务程序; (2) 检查数据传送的方向 (3) 如果 DIR 为 0.。则等待 CHK 信号有效,再从 8 位端读取数据,读完后设 定 ACK 信号有效 (4) 如果 DIR 为 1,从机将数据送到 8 位端上,再设定 ACK 位有喜爱哦, 并 等待主机取走数据(即 CHK 信号有效) ; (5) 推出中断服务程序。
3、程序: #include #define unchar unsigned char #define unint unsigned int sbit Key = P11; sbit Led = P10; unchar code SEG716=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x02,0xf8,0x80,0x90,0x88,0x83,0xc6,0 xa1,0x86,0x8e; unchar temp = 0; unchar count = 0; void Uartsend(unchar k) /串口发送子函数 SBUF = k; while(!TI); /待待发送结束
4、TI=0; /添加发送中断(仿真时不需要) void delay(int t) int n,m; for (n=t;n0;n-) for (m=t;m0;m-) void main() Led = 1; TMOD = 0x20; /定时器 1 工作方式 2 TH1 = 0xfa; TL1 = 0xfa; /装入定时器初值 11.0592M 晶振,波特率 4800 PCON = 0; /波特率不倍增 ET1 = 0; /定时器 1 中断允许 EA = 1; /总中断允许 ES = 1; /串口中断允许 TR1 = 1; /定时器 0 开始计时 SCON = 0x50; /串口工作方工 1,准备接收 while(1) /死循环 if(!Key) /判断是否有键按下 delay(50); while(!Key) Led = 0; count += 1; /delay(100); Uartsend(count);/用串口发送 0xaa while(!Key)