今天我们来开始单片机的通信实验。我们知道,单片机的通信接口是RXD(接收端)和TXD(发送端),要实现两个单片机的通信,只要将两个单片机的RXD和TXD交叉连接就可以了(一个单片机的RXD接另一个单片机的TXD,TXD接另一个单片机的RXD)。
好了,硬件连接就这么简单。现在我们开始写程序吧。要完成个什么任务呢?就用一个单片机做主机向另一个单片机发信息,用主机单片机控制从机的发光二极管亮吧。
首先必须规定一下:当主机的按键1按下的时候,发送0x41给从机(刚然,你爱规定成什么就规定成什么),而从机呢,只要收到0x41就让第一个发光二极管亮;当主机的按键2按下是,就发送0x42给从机,从机只要收到0x42就使第二个放光二极管亮;以此类推,总共四个按键,控制从机的四个二极管。
下面开始编程吧,先写主机(发送方)的程序,当然也是从查询开始:
#include <reg51.h>
#define S1 P2^4
#define S2 P2^5
#define S3 P2^6
#define S4 P2^7
void SCI_Init()
{
TMOD="0x20";
TH1=0xE8;
TL1=0xE8;
PCON="0x00";
TR1=1;
SCON="0x50";
}
void main()
{
SCI_Init();
for(;;)
{
if(S1==0)
{
SBUF=0x41;
while(TI==0);
TI="0";
}
else if(S2==0)
{
SBUF="0x42";
while(TI==0);
TI=0;
}
else if(S3==0)
{
SBUF="0x43";
while(TI==0);
TI="0";
}
else if(S4==0)
{
SBUF=0x44;
while(TI==0);
TI="0";
}
else
{
SBUF="0x45";
while(TI==0);
TI=0;
}
}
}
未完,待续……
Cybershu 2009-3-14 14:20
用户405314 2008-12-22 22:23
用户160720 2008-12-22 22:20
用户1400901 2008-12-8 14:09
用户1532875 2008-12-6 12:12
用户518079 2008-12-2 17:12