資源簡介
包含源程序及proteus仿真;通過主機掃描鍵盤,捕獲要發送的數據,再有按鍵選下目的從機,然后兩機握手,收發數據

代碼片段和文件信息
//接收數據頭文件定義:
//#ifndef?_receive_data_h ????//防止_receive_data_h被重復引用
//#define?_receive_data_h //包含頭文件
#include
#include???????????????
#define?uchar?unsigned?char
#define?uint??unsigned?int
uchar?buf;
uchar?addrtmp;
sbit?P23=P2^3; ??//引腳控制二極管
//#endif
//接收數據程序:
//#include
/******************延時t毫秒***********************/
?
?void?delayXms(uint?t) ???//延時X毫秒子程序
?{
???uint?ij;
???for(i=0;i ?????for(j=0;j<125;j++)??;
?}
/*******************接收數據函數************************/
uchar?recvdata()
{
??while(!RI);
??if(RB8==1)
??return??0xee; //若接收到的為地址指針,則返回0xee
??buf=SBUF;
??RI=0;
??return?0; //返回0
}
/*********************串口初始化*********************/
void?init()
{
??TMOD=0x20;
??TH1=250;
??TL1=250; //波特率9600kb/s
??TR1=1;
??PCON=0x80; //SMOD=1
??SCON=0xd0; //工作方式,9位數據,允許接受數據
}
/*********************主程序*********************/
void?main()
{
??uchar?tmp=0xff;
??P1=0xff;
??addr=P1&0x0f; ???//獲取本機地址
??P23=1; ???//發光二極管不亮
??init(); ???//串口初始化
??EA=0; ???//關閉中斷
??while(1) ???//進入設備應答
??{
?? SM2=1; ??//只接收地址幀
while(tmp!=addr) ??//如果接收到的地址幀不是本機的,則繼續等待
{ ??
??RI=0; ??
??while(!RI)
??tmp=SBUF;
??RI=0;
}
SM2=0; //允許數據接收
tmp=recvdata(); //數據接收
if(tmp==0x00)
{
??P0=buf;
??P23=0; //綠燈亮,持續500ms,表示數據接收成功
??delayXms(30);
??P23=1;
} ???//如果接收數據時發現地址幀,則重新開始整個過程
??}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????159063??2010-08-03?23:42??多機通信電路.DSN
?????文件???????1641??2010-08-02?20:47??多機通信電路(從機1).c
?????文件????????472??2010-08-02?20:47??多機通信電路(從機1).hex
?????文件???????3539??2010-08-03?23:38??多機通信電路(主機).c
?????文件???????1590??2010-08-02?22:17??多機通信電路(主機).hex
?????文件???????5065??2010-08-02?21:11??多機通信電路.txt
-----------?---------??----------?-----??----
???????????????171370????????????????????6
- 上一篇:金剛石刀具的初步設計
- 下一篇:ISO 16845-1-2016
評論
共有 條評論