#include <reg51.h>
sbit c=P2^1;
#define AUTO_send 1 //自動發(fā)送
#define ONE_send 0 //發(fā)送1次
unsigned char send_state=0; //狀態(tài)標志,=1,自動發(fā)送。
void SendOneByte(unsigned char c)
{
SBUF =0x30+c;
while(!TI);
TI = 0;
}
void delay_ms(unsigned int n)
{ unsigned int i=0,j=0;
for(i=0;i<n;i++)
for(j=0;j<123;j++);
}
void main(void)
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
while(1)
{
if(send_state==AUTO_send) //發(fā)送狀態(tài)=1,自動發(fā)送
{
SendOneByte((unsigned char)c); //自動發(fā)送
delay_ms(100); //延時
}
}
}
void UARTInterrupt(void) interrupt 4
{
if(RI)
{
RI = 0;
if(SBUF==ONE_send) //接收命令=0(發(fā)送一次)
{
SendOneByte((unsigned char)c); //發(fā)送一次
send_state=ONE_send; //當前狀態(tài)為單次發(fā)送
}
else if(SBUF==AUTO_send) //接收的命令=1(自動送)
{
send_state=AUTO_send; //當前狀態(tài)為自動發(fā)送。主程序自動發(fā)送
}
}
else if( TI)
{
TI = 0;
}
}
功能:
1、給單片機發(fā)送0,單片機發(fā)送一次
2、給單片機發(fā)送1,單片機自動發(fā)送,再次收到0后,變?yōu)槭謩影l(fā)送并發(fā)送一次。
|