91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

本程序實現的功能:通過串口,主機發出命令,從機1和從機2分別響應從而將從機用DS18B20采集的溫度值傳送給主機,主機用1602液晶將從機1和從機2的溫度分別顯示出來。主機用按鍵選擇更新哪一個從機的溫度。

資源截圖

代碼片段和文件信息

#include
#include
#define?uchar?unsigned?char
#define?uint?unsigned?int

#define????DW????16??????//定義數據幀寬度

uchar?KEY=0;
uchar?KSUM=0PP=0;
uchar?R_buf[2][DW]; //接收到的數據存于此數組
bit?FLAGRIGHT=0; //RIGHT為收到數據和校驗正確標志位
bit?RUN=0; //主機程序執行控制位
uchar?slave; //從機地址中間變量

///////////////////延時函數//////////////////////////////
/*
void?delay(uint?k)
{
uint?xy;
for(x=k;x>0;x--)
for(y=110;y>0;y--);
}*/

/////////////////////初始化/////////////////////////

void?init()
{
TMOD=0x20;
PCON=0x00;
TH1=0xfd;
TL1=0xfd; ??//波特率9600
TR1=1;
SM0=1;
SM1=1;
SM2=1;
EA=1;
ES=1; ?//開串口中斷
EX0=1; ?//開外部中斷0
IT0=1; ?//觸發方式
REN=1;
}


////////////////向某一從機發送命令////////////////////////

void?send(uchar?adduchar?cmd)
{
//REN=0;

TB8=1;
SBUF=add; ???//發送地址
while(!TI);
TI=0;

TB8=0;
SBUF=cmd; ???//發送命令
while(!TI);
TI=0;

//REN=1;
}

///////////////////主函數///////////////////////////

void?main()
{?
uchar?num=0;
uchar?mabshifengeshibai;
int?k;
init();
LCD_init();
delay(100);

while(1)
{
while(RIGHT)
{
/*P1=R_buf[num++];
delay(300);
if(num==8)
num=0;*/
if(RUN)
{

a=R_buf[slave][1]<<4;
b=R_buf[slave][0]>>4;

if(R_buf[slave][1]&0x80)
{
k=(int)R_buf[slave][1];
k=(k<<8)|(int)(R_buf[slave][0]);
k=~(k-1);
a=(uchar)(k>>8);
b=(uchar)k;
a=a<<4;
b=b>>4;
}


m=a|b;
bai=m/100;
shi=m%100/10;
ge=m%100%10;
shifen=(R_buf[slave][0]&0x0f)*6.25/10;

if(slave==0x00)
{
if(R_buf[slave][1]&0x80)
dspchar(11‘-‘);
else
dspchar(11bai+0x30);
dspchar(21shi+0x30);
dspchar(31ge+0x30);
dspchar(41‘.‘);
dspchar(51shifen+0x30);
dspchar(71R_buf[slave][2]);
dspchar(81R_buf[slave][3]);
dspchar(91R_buf[slave][4]);
}
if(slave==0x01)
{
if(R_buf[slave][1]&0x80)
dspchar(12‘-‘);
else
dspchar(12bai+0x30);
dspchar(22shi+0x30);
dspchar(32ge+0x30);
dspchar(42‘.‘);
dspchar(52shifen+0x30);
dspchar(72R_buf[slave][2]);
dspchar(82R_buf[slave][3]);
dspchar(92R_buf[slave][4]);
}
? RUN=0;
}
}
}
}

/////////////////中斷服務程序///////////////////////////

void?ser()?interrupt?4
{
uchar?add;
REN=0; ???? ??//關閉接收數據使能
RI=0;
if(?(RB8==1)&&(FLAG==0)?) ??//判斷從機發來的是否為地址
{
add=SBUF;?????????????????????//取從機地址
SUM=0;
PP=0;
K=0;
SM2=0; ??????????????????//改為直通方式,以便接收將要發來的數據
}

if(RB8==0)
{
R_buf[slave][K]=SBUF; ??????//取數據
SUM+=R_buf[slave][K]; ??//求和以作和校驗
K++;
FLAG=1; ??//收到第一個數據時置1以便區分地址幀與校驗幀

if(K==DW) ??//K達到數據幀長度,表明數據接收完
{
SM2=1; ??????//改回多機通訊模式

}

}

if(?(RB8==1)&&(FLAG==1)?) ??????//表示收到的是校驗值
{
FLAG=0;
PP=SBUF;??????????????????????//取校驗和
if(PP=

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????2081??2010-03-01?11:47??多機通訊\主機\LCD1602.h

?????文件???????3717??2010-05-08?23:11??多機通訊\主機\主機.c

?????文件???????4732??2010-05-08?23:11??多機通訊\主機\主機.hex

?????文件???????2141??2010-02-24?22:43??多機通訊\主機\主機.Uv2

?????文件???????3621??2010-02-25?01:12??多機通訊\從機\DS18B20.h

?????文件???????1747??2010-02-26?21:41??多機通訊\從機\從機.c

?????文件???????1665??2010-02-26?21:41??多機通訊\從機\從機.hex

?????文件???????2158??2010-02-25?01:48??多機通訊\從機\從機.Uv2

?????文件???????3621??2010-02-25?01:12??多機通訊\從機2\DS18B20.h

?????文件???????1747??2010-02-26?21:41??多機通訊\從機2\從機2.c

?????文件???????1667??2010-02-26?21:41??多機通訊\從機2\從機2.hex

?????文件???????2144??2010-02-25?10:28??多機通訊\從機2\從機2.Uv2

?????文件??????89566??2010-08-11?11:06??多機通訊\多機通訊.DSN

?????目錄??????????0??2010-08-11?10:55??多機通訊\主機

?????目錄??????????0??2010-08-11?10:55??多機通訊\從機

?????目錄??????????0??2010-08-11?10:55??多機通訊\從機2

?????目錄??????????0??2010-08-11?11:06??多機通訊

-----------?---------??----------?-----??----

???????????????120607????????????????????17


評論

共有 條評論