2021-04-29

 

单片机代码:
#include
#define uchar unsigned char
#define uint unsigned int
sbit LED = P2^7;
uchar flag = 0;
uchar index = 0;
uchar data c[100];
void Delay_ms(uint n)
{
 uchar i;
 while(n--)
     for(i = 0;i < 120;i++);
}
void Send_string(uchar *c)
{
 while(*c != '!')
 {
  SBUF=*c;
  c++;
  while(TI==0);
  TI=0;
 }
}
void main()
{
 SCON=0x50;    //串口模式1,允许接收
 TMOD=0x20;    //T1工作模式2
 TH1=0xF3;    //波特率4800
 TL1=0xF3;
 PCON=0x80;    //波特率倍增
 EA = 1;//开总中断
 ES = 1;//开串口中断
 TR1=1;//开定时器1中断
 while(1)
 {
  if((SBUF == '!')&&(flag == 1))
  {
    Send_string(c);
   LED = ~LED;
   index = 0;
   flag = 0;
  }
  /*
  需要理解虽然 读取SBUF和写入SBUF所用的SBUF是不同的,这里可以理解为有两个SBUF,
  一个SBUF_read和一个SBUF_write,当往SBUF中写数据时SBUF_read不变。
 */
 }
}
//串口接收中断函数
void Serial_INT() interrupt 4
{
 if(RI==0) return;
 ES=0;    //关闭串口中断
 RI=0;    //清接收中断标志
 c[index++]=SBUF;
    if(SBUF == '!')
   flag = 1;
 ES=1;

你可能感兴趣的:(2021-04-29)