zoukankan      html  css  js  c++  java
  • 串口调试

    精度问题:

    如果使用11.059MHz的晶振,串口调试时使用各种波特率的误差都极其小,但如果使用12MHz的晶振,只有在波特率为2400时误差较小,其他情况都误差太大而不能使用。

    串口在12Mhz晶振下的典型案例:

    #include<reg52.h>
    unsigned char flag,a;
    int temp=0x78;
    void main()
    {

     TMOD=0x20;   //设定T1定时器工作方式二
     TH1=0xf3; //波特率2400
     TL1=0xf3;
     TR1=1;    //启动T1定时器
     REN=1;    //允许串口接收
     SM0=0;
     SM1=1; //工作方式1,波特率可变,由定时器0控制
     EA=1;  //开串口中断
     ES=1;//   开总中断

     while(1)
      {
      /*while(!RI)
      RI=0;
      P1=0X00;*///控制IO口
       if(flag==1)
        {
         ES=0;  //关中断
         flag=0;
         SBUF=temp;//发送到串口助手  (接收缓冲区)
         while(!TI);  //发完之后TI为1
         TI=0;
         ES=1;  //开中断
        }
      }
    }

    void ser() interrupt 4
    {
     RI=0;  //RI接收中断标志位,清0取消中断申请
    // P1=SBUF;//控制单片机
     a=SBUF;  //(发送缓冲区)
     flag=1;
    }

  • 相关阅读:
    PHP编译安装
    PHP编译安装
    Apache编译安装
    Apache编译安装
    端口号
    端口号
    初步理解TCP/IP网络
    初步理解TCP/IP网络
    剑指offer——树的子结构
    STL四种智能指针
  • 原文地址:https://www.cnblogs.com/nickup/p/6286899.html
Copyright © 2011-2022 走看看