|
本程序?yàn)閙ain.c和串口通信.c組成 密碼字符為THE password Is Corret !(注意空格也算字符)
主機(jī)箱向從機(jī)發(fā)送一個(gè)X從機(jī)收到X后就一直回應(yīng)主機(jī)X,主機(jī)收到從機(jī)發(fā)送的X后證明從機(jī)已準(zhǔn)備好接受數(shù)據(jù)(如果從機(jī)向主機(jī)發(fā)送的不是X則主機(jī)一直向從機(jī)發(fā)送X直到從機(jī)收到正確的數(shù)據(jù)即X),主機(jī)向從機(jī)發(fā)送非X的任意字符叫從機(jī)停止發(fā)送,主機(jī)向從機(jī)發(fā)送密碼“THE password Is Corret !”從機(jī)收到密碼后向主機(jī)發(fā)送M(一直發(fā))表示密碼正確,如果在傳輸數(shù)據(jù)的過程中出現(xiàn)干擾導(dǎo)致的密碼輸入錯(cuò)誤,那么就必須在發(fā)送完最后一個(gè)字符后從新發(fā)送(注意:這里最后一個(gè)字符是用來校驗(yàn)的如果發(fā)送錯(cuò)誤則必須重新發(fā)送直到最后一個(gè)字符正確后才可以重新發(fā)密碼)
/***************main.c******************/
#include<reg51.h>
void Init_Serialport1();
void Uart();
void main()
{
Init_Serialport1();
Uart();
}
/*******************串口通信.c*************************/
#include<reg51.h>
unsigned char Serial_data; //串口數(shù)據(jù)(Serial_data)用這個(gè)來保存。
static unsigned char Into=0;
static bit Password_Num1=0;
void Init_Serialport1() //初始化串口1(Serial port)
{
TMOD=TMOD&0x0F;
TMOD=TMOD|0x20;
TH1=0xFD;
TL1=0xFD;
TR1=1;
SCON=SCON&0x0F;
SCON=0x50;
EA=1;
ES=1;
}
void Uart()
{
Init_Serialport1();
while(1)
{
static bit Password1=0;
static bit Password2=0;
static bit Password3=0;
static bit Password4=0;
static bit Password5=0;
static bit Password6=0;
static bit Password7=0;
static bit Password8=0;
static bit Password9=0;
static bit Password10=0;
static bit Password11=0;
static bit Password12=0;
static bit Password13=0;
static bit Password14=0;
static bit Password15=0;
static bit Password16=0;
static bit Password17=0;
static bit Password18=0;
static bit Password19=0;
static bit Password20=0;
static bit Password21=0;
static bit Password22=0;
static bit Password23=0;
static bit Password24=0;
static bit Password25=0;
static unsigned char Into_Password=0;
while(Into==1)
{
static unsigned char I=0;
ES=0;
SBUF=Serial_data;
while(TI==0);
TI=0;
if(Serial_data=='X')
{
I=1;
}
if(Serial_data!='X'&I==1)
{
Into_Password=1;
Into=0;
}
ES=1;
}
ES=0;
SBUF='9';
while(TI==0);
TI=0;
ES=1;
while(Into_Password==1)
{
static bit Num_Password=1;
static bit o=0;
static bit y=0;
static bit r=0;
static bit c=0;
static bit u=0;
static bit v=0;
static bit l=0;
static bit q=0;
static bit m=0;
static bit h=0;
if(Password_Num1==1)
{
ES=0;
SBUF='0';
while(TI==0);
TI=0;
if(Serial_data=='T')
{Password1=1;}
else if(Serial_data=='H')
{Password2=1;}
else if(Serial_data=='E')
{Password3=1;}
else if(Serial_data==' '&r==0)
{Password4=1;r=1;}
else if(Serial_data=='p')
{Password5=1;}
else if(Serial_data=='a')
{Password6=1;}
else if(Serial_data=='s'&y==0)
{Password7=1;y=1;}
else if(Serial_data=='s'&q==0)
{Password8=1;q=1;}
else if(Serial_data=='w')
{Password9=1;}
else if(Serial_data=='o'&m==0)
{Password10=1;m=1;}
else if(Serial_data=='r'&h==0)
{Password11=1;h=1;}
else if(Serial_data=='d')
{Password12=1;}
else if(Serial_data==' '&c==0)
{Password13=1;c=1;}
else if(Serial_data=='I')
{Password14=1;}
else if(Serial_data=='s'&l==0)
{Password15=1;l=1;}
else if(Serial_data==' '&u==0)
{Password16=1;u=1;}
else if(Serial_data=='C')
{Password17=1;}
else if(Serial_data=='o')
{Password18=1;}
else if(Serial_data=='r'&o==0)
{Password19=1;o=1;}
else if(Serial_data=='r')
{Password20=1;}
else if(Serial_data=='e')
{Password21=1;}
else if(Serial_data=='c')
{Password22=1;}
else if(Serial_data=='t')
{Password23=1;}
else if(Serial_data==' '&v==0)
{Password24=1;v=1;}
else if(Serial_data=='!')
{Password25=1;Num_Password=0;} //&Password16==1&Password17==1&Password18==1&Password19==1&Password20==1&Password21==1&Password22==1&Password23==1&Password24==1&Password25==1
if(Password1==1&Password2==1&Password3==1&Password4==1&Password5==1&Password6==1&Password7==1&Password8==1&Password9==1&Password10==1&Password11==1&Password12==1&Password13==1&Password14==1&Password15==1&Password16==1&Password17==1&Password18==1&Password19==1&Password20==1&Password21==1&Password22==1&Password23==1&Password24==1&Password25==1)
{
Into_Password=2;
Password_Num1=0;
}
if(Num_Password==0)
{
Num_Password=1;
o=0;y=0;r=0;c=0;u=0;v=0;l=0;q=0;m=0;h=0;
Password1=0;Password2=0;Password3=0;Password4=0;Password5=0;Password6=0;Password7=0;Password8=0;Password9=0;Password10=0;Password11=0;Password12=0;Password13=0;Password14=0;Password15=0;Password16=0;Password17=0;Password18=0;Password19=0;Password20=0;Password21=0;Password22=0;Password23=0;Password24=0;Password25=0;}
Password_Num1=0;
ES=1;
}
}
while(Into_Password==2)
{
ES=0;
SBUF='M';
while(TI==0);
TI=0;
ES=1;
}
}
}
void Serial_port1() interrupt 4
{
static bit a1=0;
RI=0;
Serial_data=SBUF;
Password_Num1=1;
if(a1==0)
{
Into=1;
a1=1;
}
}
|
|