<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        單片機與上位機的串口通信

        作者:黃石磊   來源:本站原創   點擊數:  更新時間:2014年03月05日   【字體:




        照片名稱:串口發送數據十六進制55



        照片名稱:串口通信輸入十六進制55



        照片名稱:串口通信輸入十六進制55



        照片名稱:串口發送數據十六進制aa



        照片名稱:串口通信輸入十六進制aa



        照片名稱:串口通信輸入十六進制aa

        #include<reg52.h>
        #define uchar unsigned char    
        #define uint unsigned int               //宏定義
        sbit duan=P2^6;                   //位聲明
        sbit wei=P2^7;
        uchar code sz[]={                  //數碼管顯示數組
        0x3f,0x06,0x5b,0x4f,
        0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,
        0x39,0x5e,0x79,0x71};
        uchar num,bai,shi,ge;               //申明四個全局變量
        void ys(uint x)                   //延時函數
        {
         uint z,y;
         for(z=x;z>0;z--)
          for(y=110;y>0;y--);
        }
        void main()                     //主函數
        {
         REN=1;                      //打開允許串口數據接收位
         SM1=1;                     //選擇工作方式1  SM0=0(默認)  SM1=1
         TR1=1;                     //打開定時器1
         TMOD=0x20;                 //設定定時器1的工作方式為工作方式2
         TH1=0xfd;                  //設定波特率為9800,給定時器1高八位裝永久值253,當第八位溢出后由硬件自動賦值給低八位
         TL1=0xfd;                   //給定時器第八位賦初值
         EA=1;                    //打開總中斷
         ES=1;                    //打開串口中斷
         duan=0;                    //關閉段選鎖存器
         wei=0;                    //關閉位選鎖存器
         while(1)                   //進入大循環--一直調用數碼管動態掃描
         {
          P0=sz[bai];
          duan=1;
          duan=0;
          P0=0xfe;
          wei=1;
          wei=0;
          bai=num/100;
          shi=num%100/10;
          ge=num%10;
          ys(5);

          P0=sz[shi];
          duan=1;
          duan=0;
          P0=0xfd;
          wei=1;
          wei=0;
          bai=num/100;
          shi=num%100/10;
          ge=num%10;
          ys(5);

          P0=sz[ge];
          duan=1;
          duan=0;
          P0=0xfb;
          wei=1;
          wei=0;
          bai=num/100;
          shi=num%100/10;
          ge=num%10;
          ys(5);
         }
        }

        void ck() interrupt 4             //串口中斷函數
        {
         RI=0;                        //軟件將RI清零
         P1=SBUF;                         //將收到的數據賦給P1口的發光二極管
         num=SBUF;                 //將收到的數據賦給變量num
         ES=0;                              //暫時關閉串口中斷       
         SBUF=num;                     //將收到的數據賦值給SBUF
         while(!TI);                 //檢測數據是否發送完畢,數據發送完畢時TI將被置1
         TI=0;                                                   //用軟件將TI清零等待
         ES=1;                             //重新打開串口中斷
        }

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮