STC51单片机学习笔记6——串口发送&中断接收

#include<reg52.h>
//11.0592M 9600

void Delay(void);
void chuankou_init(void);
unsigned char Receive(void);
void Send(unsigned char dat);

void main()
{
  unsigned char num;
  num='A';
  chuankou_init() ;
  while(1)
  {
    Delay();
    Send(num);    //不能直接写成Send('+');,不然不成功
    //Send(Receive()+1);
  }
}
void usart_rx(void) interrupt 4
{
  unsigned char Temp;
  if(RI)                        //判断是接收中断产生
  {
      RI=0;                      //标志位清零
      Temp=SBUF;                 //读入缓冲区的值
      //P1=Temp;                   //把值输出到P1口,用于观察
      //Send(Temp+1);                 //把接收到的值+1再发回电脑端   
      Send(Temp);      
  }
    //  if(TI)     // 不要写这句话,不然主函数不能一直发送
//    TI=0;
}
void chuankou_init()
{
   TMOD=0x20;  //定时器T1工作于方式2 ,8位自动重装
   SCON=0x50;  //SCON=0101 0000B,串口工作方式1,允许接收(REN=1)
   PCON=0x00;  //PCON=0000 0000B,波特率2400
   TH1=0xFd ;  //根据规定给定时器T1赋初值
   TL1=0xFd;  //根据规定给定时器T1赋初值     
   TR1=1;    //启动定时器T1   
   REN=1;    //允许接收
   EA=1;      //打开总中断
   ES=1;      //打开串口中断
}

void Send(unsigned char dat)
{
   SBUF=dat;
   while(TI==0)         //等待发送完毕
      ;
    TI=0;
    //Delay();
}

 unsigned char Receive(void)
{
  unsigned char dat;
  while(RI==0)  //只要接收中断标志位RI没有被置“1”
         ;      //等待,直至接收完毕(RI=1)
      RI=0;      //为了接收下一帧数据,需将RI清0
     dat=SBUF;  //将接收缓冲器中的数据存于dat
      return dat;
}
void Delay()
{
  unsigned char i,j;
  for(i=0;i<100;i++)
    for(j=0;j<250;j++)
      ;
}                  

完整资料打包

STC51单片机学习笔记6-串口发送&中断接收资源-单片机文档类资源-CSDN下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fengyuzhe13

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值