微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51;串口通信

51;串口通信

时间:10-02 整理:3721RD 点击:
两年前开始学习单片机,也是从最简单的51开始。现在整理一些以前写的东西,给后来者学习,希望能帮到你们。有需要自己下载。

  1. #include<reg52.h>

  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. uchar t,flag=0;

  5. void ser() interrupt 4
  6. {
  7.         RI=0;
  8.         P2=SBUF;
  9.         t=SBUF;
  10.         flag=1;
  11. }

  12. main()
  13. {
  14.         TMOD=0x20;                //选定定时器1工作方式2
  15.         TH1=0xFD;                 //波特率9600
  16.         TL1=0xFD;               
  17.         PCON=0x00;                //SMOD=0
  18.         SM0=0;                //串口工作方式1 (01)
  19.         SM1=1;
  20.         TR1=1;                //定时器中断启动
  21.         REN=1;                //允许串口接收

  22.         EA=1;                //开总中断
  23.         ES=1;                //开串口中断

  24.         while(1)
  25.         {       
  26.                 while(!flag);                //判断有无数据接收-有则向下执行
  27.                 flag=0;
  28.                 ES=0;                //个人理解--将串口中断关闭,
  29.                 SBUF=t;                //可发送数据,TI=1,但不会响应中断
  30.                 while(!TI);
  31.                         TI=0;               
  32.                 ES=1;                //开中断
  33.         }

  34. //判断是否接收到串口通信
  35. //接收到后,RI=1,自动中断响应
  36. /*        while(1)
  37.         {
  38.                 while(!RI);                //有串口数据到来,RI=1,跳出
  39.                 RI=0;                        //将RI重新置0
  40.                 P2=SBUF;                //数据传入P2口,LED显示
  41.         }*/
  42. }

复制代码



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top