我輸入1后但是回來的卻是亂碼,原本應該是i get 1,對吧!
#include<reg52.h>
#define uchar unsigned char
uchar flag,a,i;
uchar code table[]={'I',' ','g','e','t',' '};
void main()
{
TMOD=0X20; //開定時器2
TH1=0XFD; //自動八位重裝
TL1=0XFD;
TR1=1; //開啟定時器
REN=1; //允許串行接收
EA=1; //開總中斷
ES=1; //串行口中斷允許位
SM1=1; //選擇模式1
SM0=0; //選擇模式1
while(1)
{
/*if(RI==1)
RI=0;
P0=SBUF;
*/
if(flag==1) //標志位
{
ES=0;
for(i=0;i<6;i++)
{
SBUF=table[i];
while(!TI);
TI=0;
}
flag=0;
SBUF=a; //再將a送給SBUF ??????
while(!TI); //送數據。。。。。檢測TI是否為1,串行發送停止位的中間時 由內部硬件使RI置1,開中斷,后人工置0
TI=0;
ES=1;
}
}
}
void ser() interrupt 4 //進入串行中斷
{
RI=0; // 接收時。。。。。 串行發送停止位的中間時 由內部硬件使RI置1,開中斷,后人工置0
P1=SBUF; //P1接收SBUF中的數據
a=SBUF; //將SBUF送給a
flag=1; //開啟標志位
}
|