欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
52單片機(jī)雙機(jī)通信Proteus仿真程序
[打印本頁]
作者:
杜鳴磊
時(shí)間:
2020-5-18 08:17
標(biāo)題:
52單片機(jī)雙機(jī)通信Proteus仿真程序
在PROTEUS上采用雙單片機(jī)A和B,采取TXD連接另一個(gè)單片機(jī)的RXD,建立一對(duì)一通信A外接4個(gè)按鍵,編號(hào)1~3;B外接一個(gè)數(shù)碼管,平時(shí)顯示0。 A按鍵后,B顯示相應(yīng)鍵號(hào)0.3秒;
進(jìn)階要求1:A的TXD與B的RXD間加入按鍵開關(guān)K,通過K的ON/OFF來控制通信連接的有效和無效;
運(yùn)行中,K由ON改為OFF,通信無效時(shí),B不響應(yīng)A的按鍵表示通信未建立;
進(jìn)階2:通信無效時(shí),B顯示9,表示通信無效;運(yùn)行中K由OFF改為ON,系統(tǒng)自動(dòng)回復(fù)正常
1,首先考慮資源分配
波特率設(shè)置要用定時(shí)器1自動(dòng)重裝載模式。
定時(shí)器1用于產(chǎn)生10ms中斷
定時(shí)器2用來產(chǎn)生20ms中斷
故可選用89c52單片機(jī)
2:主函數(shù)完成3個(gè)定時(shí)器初始化函數(shù),之后在while(1)休眠或啥也不干。
3:定時(shí)器2中斷服務(wù)函數(shù):
自動(dòng)重裝載模式不需要重置本定時(shí)器
按鍵掃描函數(shù)獲取鍵號(hào),若無按鍵鍵號(hào)為0
重置并啟動(dòng)超時(shí)定時(shí)器(tim0)
根據(jù)S_OK狀態(tài)點(diǎn)亮LED(S_OK=0時(shí)點(diǎn)亮)
4:接收中斷模塊
S_OK置1
關(guān)閉超時(shí)定時(shí)器
5:10ms定時(shí)中斷模塊
S_OK=0
關(guān)閉超時(shí)定時(shí)器
接收B板模塊
同樣需要3個(gè)定時(shí)器
1:main函數(shù)中三個(gè)定時(shí)器初始化
2:接收中斷
直接顯示鍵號(hào),開啟0.3s定時(shí)器
重置啟動(dòng)超時(shí)定時(shí)器
發(fā)送信息給A板
3:0.3s定時(shí)中斷
關(guān)閉本定時(shí)器
顯示0
4:超時(shí)中斷函數(shù)
S_OK=0
數(shù)碼管顯示9
關(guān)閉本定時(shí)器
關(guān)閉0.3s定時(shí)器
發(fā)送A板主函數(shù)文件程序示例。完整程序和proteus圖見附件。
51hei.png
(6.4 KB, 下載次數(shù): 52)
下載附件
2020-5-18 14:16 上傳
單片機(jī)源程序如下:
#include <reg52.h>
#include"init.h"
//sfr T2MOD=0XC9;
void send(uchar num); //聲明子函數(shù)的時(shí)候要加分號(hào)
void delay(int z) //晶振11.592.延時(shí)z毫秒
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void key()
{
if(key3==0)
flash=4;
else if(key2==0)
flash=3;
else if(key1==0)
flash=2;
else if(key0==0)
flash=1;
else
flash=0;
}
void send(uchar num)
{
SBUF=num; //把發(fā)送的內(nèi)容寫進(jìn)sbuf,自動(dòng)發(fā)送 ,發(fā)送數(shù)據(jù)時(shí)TI為0,!0為1
while(!TI); //!邏輯非,發(fā)送完數(shù)據(jù),發(fā)送完數(shù)據(jù)時(shí)TI為1.!1為0,停止發(fā)送
// led=1;
TI=0; //TI需要軟件清零
}
void tim0() interrupt 1//超時(shí)中斷
{
static unsigned char count;
//定義變量,記錄中斷次數(shù)
// TH0=0xd8;
// TL0=0xf0; //定時(shí)器重置,一幀數(shù)據(jù)一來一回兩個(gè)多毫秒,定時(shí)10ms夠了
S_OK=0; //進(jìn)入超時(shí)中斷,說明通信已經(jīng)中斷
led=1;
led2=1;
TR0=0; //通信已經(jīng)中斷,關(guān)閉超時(shí)定時(shí)器
// count++;
// if(count==50)
// {
// led2=~led2;
// count=0;
// }
}
void receive() interrupt 4
//串行接收和發(fā)送中斷
{
if(RI==1)
{
S_OK=1; //進(jìn)入接收中斷說明通信正常
RI = 0; //RI要手動(dòng)清0
led=0;
led2=0;
TR0=0; //關(guān)閉超時(shí)定時(shí)器
}
if(TI==1)
{
TI=0;
// TH0=0xd8;
// TL0=0xf0;
TH0=0xec;
TL0=0x78;
TR0=1;
}
}
void timer_T2() interrupt 5 //中斷函數(shù)
{
static unsigned char count1; //定義變量,記錄中斷次數(shù)
TF2=0; //軟件清零定時(shí)器2溢出標(biāo)志位
count1++;
//重置并啟動(dòng)超時(shí)定時(shí)器
//根據(jù)S_OK點(diǎn)亮led3
if(count1==3)
{
key(); //掃描按鍵
SBUF=flash; //發(fā)送一次鍵號(hào)key(); //掃描按鍵
count1=0; //清零
}
}
void main()
{
//待運(yùn)行一次的初始化函數(shù)
tim2init();
tim1init() ;
tim0init();
TR0=0;
led=0;
led2=0;
led3=0;
while(1)
{
// send(flash);
// if(S_OK==0)
// led3=1;
// else
// led3=0;
//key();
}
}
復(fù)制代碼
全部資料51hei下載地址:
程序源碼和原理圖.rar
(105.97 KB, 下載次數(shù): 33)
2020-5-18 08:16 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1