C51 中斷接收 查詢發(fā)送
掃描二維碼
隨時(shí)隨地手機(jī)看文章
C51 中斷接收 查詢發(fā)送
#include
volatileunsignedcharrx_data;
volatilebitrx_flag=0;
voiddalay_1ms(unsignedshortn)
{
unsignedshorti,j;
for(i=0;i
{
for(j=60000;j>0;j--);
}
}
voidsend_char(unsignedcharch)
{
SBUF=ch;
while(!TI);
TI=0;
}
voidsend_string(unsignedchar*str,unsignedcharlen)
{
unsignedchari;
for(i=0;i
{
send_char(*(str+i));
}
}
//----------------------------------------------
voidmain(void)
{
//volatileunsignedchari,tmp;
unsignedchar*str="Serialtest";
TMOD=0x20;//T1方式2
TH1=0xFD;//Baud:9600bps@11.0592MHz
TL1=0xFD;
TR1=1;//啟動(dòng)定時(shí)器1
SCON=0x50;//串口方式1,8-n-1,允許接收
REN=1;//使能串口接收
EA=1;//打開總中斷
ES=1;//打開串口中斷開關(guān)
send_string((unsignedchar*)str,11);
while(1)
{
dalay_1ms(1);
if(rx_flag)
{
ES=0;//必須得先關(guān)串口中斷,否則PC收不到數(shù)據(jù)
SBUF=rx_data;
while(RI==0);
ES=1;//再開串口中斷
RI=0;
}
}
}
//----------------------------------------------
voidserial(void)interrupt4
{
rx_data=SBUF;
P1=rx_data;
rx_flag=1;
RI=0;
}
//----------------------------------------------