• STC 51单片机52——自发自收串行通信


     

     

    #include
    unsigned char ch=0;

    /*    初始化函数    */
    void uart_init()
    {
            TMOD=0x20;                    //T1为方式2
            TL1=0xfd; TH1=0xfd;    //波特率为9600的计数初值
            SCON=0x50;                    //串口工作在方式1。允许接收
            PCON=0x00;                    //SMOD=0
            TR1=1;
            ES=1; EA=1;                     //开串口中断
    }
    /*    串行通信中断服务程序;     */
    void receive(void) interrupt 4 using 0
    {
        if(RI)
        {
            ch=SBUF;                  //读取接收的数据
            RI=0;
            P2=ch;    //    用接收到数据控制LED
            SBUF=ch;
        }
        if(TI)
            TI=0;
    }
    void delay(){
      unsigned char i,j;
        for(i=0;i<250;i++)
            for(j=0;j<250;j++)
                ;
        
    }

    void SendByte(unsigned char data1)
    {  
         SBUF = data1;     //发送数据
         while(!TI);     //等待发送完成
         TI=0;     //清零发送标志位        
    }

    void Show_u16(unsigned int kk)    //显示16位无符号整数
    {
     unsigned char a,b,c,d,e;

      e=kk%10+0x30;   //将每一位转换成ASCII码
      d=(unsigned char)(( kk/10 )%10)+0x30;
      c=(unsigned char)(( kk/100 )%10)+0x30;
      b=(unsigned char)(( kk/1000 )%10)+0x30;
      a=(unsigned char)(( kk/10000 )%10)+0x30;

      SendByte(a);  SendByte(b);  SendByte(c);  SendByte(d); SendByte(e);
      SendByte('\r'); //发送回车
      SendByte('\n');    
    }

    void SendString(unsigned char *pstr)
    {
         while(*pstr!='\0')         //字符串是否发完
         {
             SendByte(*pstr);    //发送字符串数据
             pstr++;         //指向下一个字符
         }
        SendByte('\r'); //发送回车
      SendByte('\n');    
    }
    unsigned char Hello[]="Welcome to China! ";


    /*    主程序    */
    void main()
    {    
        unsigned int temp=0x3214;
        uart_init();                    //调用初始化函数    
        ES=0;
        while(1){
            Show_u16(temp);
            delay();
          SendString(Hello);
          delay();
        } ;

    }

     

  • 相关阅读:
    Python:Web框架 Django之manage.py
    基于布朗运动的文本生成方法-LANGUAGE MODELING VIA STOCHASTIC PROCESSES
    迅为itop-3568开发板qt学习手册上新
    【线性代数】【一】1.5 矩阵的逆
    淘宝MySQL数据库高可用实现方案
    javascript追加标签
    UDP网络套接字编程
    windows 中pycharm中venv无法激活
    js 对象深拷贝递归实现
    java简单实现AIDL进程通信
  • 原文地址:https://blog.csdn.net/fengyuzhe13/article/details/128160047