以下是源代碼,現在只能發送0-9或者是單個字符數據,如何改成一次可以發送兩個或者兩個以上的字符數據,比如發送10,11之類兩位數的數據???
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int //用"uint"代替"unsigned int" 無符號整數
#define uchar unsigned char //用"uchar"代替"unsigned char" 無符號字符
unsigned char tmp;
uint bai;
sbit h1=P2^0; //四個紅外傳感器
sbit h2=P2^1;
sbit h3=P2^2;
sbit h4=P2^3;
uint shu=0;
uint ji1,ji2,ji3,ji4;
void init(); //串口初始化
void send(unsigned char a); //單字節發送函數
void ctrl(); //接收處理函數
void main()
{
init();
while(1)
{
if(RI==1) //是否有數據到來
{
RI = 0;
tmp = SBUF; //暫存接收到的數據
ctrl();
}
}
}
void init() //串口初始化
{
ES=0; //關中斷
SCON = 0x50; // REN=1允許串行接受狀態,串口工作模式1,
//10位UART(1位起始位,8位數據位,1位停止位,無奇偶校驗),波特率可變
TMOD = 0x20; //定時器1工作于方式2,8位自動重載模式,用于產生波特率
TH1=TL1=0xFD; //波特率9600
PCON &= 0x7f; //波特率不倍增
TR1 = 1; //定時器1開始工作,產生波特率
//發送標志位置0
TI=0; //接收標志位置0
RI=0;
//EA=0;
ES=1;
}
void send(unsigned char a) //單字節數據發送
{ //注意:若單片機TXD(P3.1)無上拉能力,必須在P3.1端接上拉電阻。本次測試需要接上拉電阻
TI=0;
SBUF=a;
while(TI==0);
TI=0;
}
void ctrl() //接收處理函數
{
switch(tmp)
{
case '1':
bai=shu%10+'0';
send(shu);
break;
}
if(ji1==0&&ji2==0&&ji3==0&&ji4==0) //如果四個紅外傳感器都感應到人
{
shu=4; //則說明4人到場
}
if(ji1==1&&ji2==1&&ji3==1&&ji4==1) //如果四個紅外傳感器都沒有感應到人
{
shu=0; //則0人到場,全部曠課
}
if(ji1==0&&ji2==0&&ji3==0&&ji4==1) //如果有三個傳感器感應到人,則說明三人到場
{
shu=3;
}
if(ji1==0&&ji2==0&&ji3==1&&ji4==0)
{
shu=3;
}
if(ji1==0&&ji2==1&&ji3==0&&ji4==0)
{
shu=3;
}
if(ji1==1&&ji2==0&&ji3==0&&ji4==0)
{
shu=3;
}
if(ji1==0&&ji2==0&&ji3==1&&ji4==1) //如果兩個傳感器感應到人,則兩人到場
{
shu=2;
}
if(ji1==1&&ji2==1&&ji3==0&&ji4==0)
{
shu=2;
}
if(ji1==0&&ji2==1&&ji3==1&&ji4==0)
{
shu=2;
}
if(ji1==1&&ji2==0&&ji3==0&&ji4==1)
{
shu=2;
}
if(ji1==0&&ji2==1&&ji3==0&&ji4==1)
{
shu=2;
}
if(ji1==1&&ji2==0&&ji3==1&&ji4==0)
{
shu=2;
}
if(ji1==0&&ji2==1&&ji3==1&&ji4==0)
{
shu=2;
}
if(ji1==1&&ji2==0&&ji3==0&&ji4==1)
{
shu=2;
}
if(ji1==0&&ji2==1&&ji3==1&&ji4==1) //如果有一個傳感器感應到人,說明一人到場
{
shu=1;
}
if(ji1==1&&ji2==0&&ji3==1&&ji4==1)
{
shu=1;
}
if(ji1==1&&ji2==1&&ji3==0&&ji4==1)
{
shu=1;
}
if(ji1==1&&ji2==1&&ji3==1&&ji4==0)
{
shu=1;
}
if(h1==0) //此處是紅外傳感器的感應觸發,無實際意義,下同
{
ji1=0; //低電平觸發
}
else
{
ji1=1;
}
if(h2==0)
{
ji2=0;
}
else
{
ji2=1;
}
if(h3==0)
{
ji3=0;
}
else
{
ji3=1;
}
if(h4==0)
{
ji4=0;
}
else
{
ji4=1;
}
}
|