串口收发典例
时间:10-02
整理:3721RD
点击:
密码锁。
1、用串口实现解锁功能。单片机复位后向串口调试助手发送“Please Input The Password:”并换行,
2、假设密码为1234,那么由串口助手向单片机发送字符串“1234”后则单片机向串口调试助手发送“Welcome!”并且八位led灯闪烁。
3、若发送的不是“1234”则单片机向串口调试助手发送“ERROR!Please Input The Password Again!”并换行。直到密码输入正确。
(注:单片机依次连续向串口调试助手发送0x0d、0x0a可以实现换行。)
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar dat[4];
uchar dat1[]="Please Input The Password:";
uchar dat2[]="Welcome!";
uchar dat3[]="ERROR!Please Input The Password Again!";
uchar flag=1,i,j,k;
void main()
{
TMOD=0X20;
TH1=0XFD;
TL1=0XFD;
SM0=0;
SM1=1;
REN=1;
TR1=1;
EA=1;
ES=1;
while(1)
{
if(flag==1)
{
SBUF=dat1[i++];
while(!TI);TI=0;
if(i==26){SBUF=13;while(!TI);TI=0;SBUF=10;while(!TI);TI=0;i=0;flag=2;}
}
if(flag==3)
{
if(dat[0]=='1'&&dat[1]=='2'&&dat[2]=='3'&&dat[3]=='4')
{
SBUF=dat2[j++];
while(!TI);TI=0;
if(j==8){SBUF=13;while(!TI);TI=0;SBUF=10;while(!TI);TI=0;j=0;flag=0;}
}
else
{
SBUF=dat3[k++];
while(!TI);TI=0;
if(k==38){SBUF=13;while(!TI);TI=0;SBUF=10;while(!TI);TI=0;k=0;flag=1;}
}
}
}
}
void zd() interrupt 4
{
if(flag==2)
{
RI=0;
dat[j++]=SBUF;
if(j==4){j=0;flag=3;}
}
}
1、用串口实现解锁功能。单片机复位后向串口调试助手发送“Please Input The Password:”并换行,
2、假设密码为1234,那么由串口助手向单片机发送字符串“1234”后则单片机向串口调试助手发送“Welcome!”并且八位led灯闪烁。
3、若发送的不是“1234”则单片机向串口调试助手发送“ERROR!Please Input The Password Again!”并换行。直到密码输入正确。
(注:单片机依次连续向串口调试助手发送0x0d、0x0a可以实现换行。)
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar dat[4];
uchar dat1[]="Please Input The Password:";
uchar dat2[]="Welcome!";
uchar dat3[]="ERROR!Please Input The Password Again!";
uchar flag=1,i,j,k;
void main()
{
TMOD=0X20;
TH1=0XFD;
TL1=0XFD;
SM0=0;
SM1=1;
REN=1;
TR1=1;
EA=1;
ES=1;
while(1)
{
if(flag==1)
{
SBUF=dat1[i++];
while(!TI);TI=0;
if(i==26){SBUF=13;while(!TI);TI=0;SBUF=10;while(!TI);TI=0;i=0;flag=2;}
}
if(flag==3)
{
if(dat[0]=='1'&&dat[1]=='2'&&dat[2]=='3'&&dat[3]=='4')
{
SBUF=dat2[j++];
while(!TI);TI=0;
if(j==8){SBUF=13;while(!TI);TI=0;SBUF=10;while(!TI);TI=0;j=0;flag=0;}
}
else
{
SBUF=dat3[k++];
while(!TI);TI=0;
if(k==38){SBUF=13;while(!TI);TI=0;SBUF=10;while(!TI);TI=0;k=0;flag=1;}
}
}
}
}
void zd() interrupt 4
{
if(flag==2)
{
RI=0;
dat[j++]=SBUF;
if(j==4){j=0;flag=3;}
}
}