首页 > 代码库 > 奶爸业余单片机学习之:UART串口通信学习笔记(二)

奶爸业余单片机学习之:UART串口通信学习笔记(二)

/*************************************
* 串口通信实验
* 晶振11.0592MHz
* 波特率9600bps
* 中断方式实现:单片机接收电脑数据,加1后发送回电脑
*
**************************************/

#include<reg52.h>

unsigned char dat;

/**********串口通信配置*******************/
void UART_CONFIG(unsigned long baud,cy)//baud波特率,cy晶振
{
  TMOD = 0x20;//定时器1工作方式2,8位初值自动重装
  TH1 = 256-(cy/(12*32*baud));
  TL1 = 256-(cy/(12*32*baud));
  TR1 =1;
  SM0 = 0;//SM0,SM1的值确定串口工作方式
  SM1 = 1;
  REN = 1;//允许接收数据
  EA = 1;//开总中断
  ES = 1;//开串口中断
}

/********发送延时函数*****************/

int main()
{
  UART_CONFIG(9600,11059200);
  while(1)
  {
  }
  return 0;
}

void interrupt_UART() interrupt 4
{
  if(RI)//检测如果RI==1,则收到数据,
  {
    RI = 0;//软件置0
    dat = SBUF;//读取接收到的数据到dat;
    dat++;//数据加1
    SBUF = dat;//数据发送到SBUF,自动发送出去
    REN = 0;//接收禁止(发送数据时,禁止接收数据)
  }
  if(TI)//检测如果TI==1,则发送数据完成
  {
    TI = 0;//TI置0
    REN = 1;//打开接收允许
  }
}

奶爸业余单片机学习之:UART串口通信学习笔记(二)