基于RS485单片机多机通信模型
第5章 程序设计
掌握Keil软件在单片机仿真中的应用,为开发、调试单片机应用系统做准备。
Keil C51软件集成了文件编辑处理、编译连接、项目管理、窗口、工具引用和软件仿真调试等多种功能,是非常强大的C51开发工具,在Keil C51的仿真功能中,提供了两种仿真模式:软件模拟仿真和目标板调试。
主机程序清单如下:
#include
unsigned char cort=0;
sbit P3_5=P3^5;
/*********************************
按键扫描子程序
*********************************/
key_serial() interrupt 0 using 1 {
++cort; }
/*********************************
发送子程序
*********************************/
void master(void) {
if(cort==1) { SBUF=0x01;
19
基于RS485单片机多机通信模型
}
}
while(TI!=1);TI=0; P3_5=0; SM2=0;
while(RI!=1);RI=0; P2=SBUF; SM2=1; P3_5=1;
if(cort==2) { }
if(cort==3)cort=1; SM2=1;
SBUF=0x02;
while(TI!=1);TI=0; SM2=0; P3_5=0;
while(RI!=1);RI=0; P2=SBUF; SM2=1; P3_5=1;
/***************主程序****************/
void main(void) {
P2=0xff; TMOD=0x20; TL1=0xfd; TH1=0xfd; PCON=0x00; TR1=1; SCON=0xf8; EA=1; EX0=1; IT0=1; P3_5=1;
20
基于RS485单片机多机通信模型
while(1) {
master();
//发送
} }
从机1程序清单如下:
#include
unsigned char serial_receiver;
sbit P3_5=P3^5;
/****************************************
串行口中断子程序
****************************************/
void serial (void) interrupt 4 using 1 {
ES=0; RI=0;
if(SBUF==0x01) {
P3_5=1; SM2=0; P1=0x10; SBUF=0x10;
while(TI!=1);TI=0; }
SM2=1; ES=1; P3_5=0; }
/*****************主程序******************/
void main(void)
21
基于RS485单片机多机通信模型
{ }
P1=0x00; TMOD=0x20; TL1=0xfd; TH1=0xfd; PCON=0x00; TR1=1;
SCON=0xf0; EA=1; ES=1; P3_5=0; while(1) { _nop_(); }
从机2程序清单如下:
#include
unsigned char serial_receiver;
sbit P3_5=P3^5;
/****************************************
串行口中断子程序
****************************************/
void serial (void) interrupt 4 using 1 {
ES=0; RI=0;
if(SBUF==0x02) {
P3_5=1;
22
基于RS485单片机多机通信模型
SM2=0; P1=0x80; SBUF=0x80;
while(TI!=1);TI=0; }
SM2=1; ES=1; P3_5=0; }
/*****************主程序******************/
void main(void) {
P1=0x00; TMOD=0x20; TL1=0xfd; TH1=0xfd; PCON=0x00; TR1=1;
SCON=0xf0; EA=1; ES=1; P3_5=0; while(1) { _nop_();
} }
23