久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 以兩片單片機為例簡述單片機的串口通信的仿真與源碼 [打印本頁]

作者: 云之凡    時間: 2018-7-27 07:21
標題: 以兩片單片機為例簡述單片機的串口通信的仿真與源碼
以兩片單片機為例簡述單片機的串口通信 程序+仿真+詳細注釋

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. uchar i=1,ACK=1;

  5. void delay(uint i)                          //延時函數
  6. {
  7.    uchar j;
  8.    while(i--)
  9.    for(j=110;j>0;j--);
  10. }

  11. uchar kbscan()                //鍵盤掃描函數
  12. {
  13. uchar sccode,recode;         //定義行、列
  14. P1=0xf0;                     //高四位作為輸入先寫1
  15. if((P1&0xf0)!=0xf0)                  //判斷是否按鍵按下
  16.    {                                                 
  17.         delay(10);                                  //延時消抖
  18.         if((P1&0xf0)!=0xf0)                  //再次判斷判斷有沒有按鍵按下
  19.         {
  20.          sccode=0xfe;
  21.          while((sccode&0x10)!=0)
  22.          {
  23.           P1=sccode;
  24.           if((P1&0xf0)!=0xf0)     //判斷當前行是否有按鍵按下
  25.           {
  26.            recode=P1&0xf0;        //保留高四位輸入值
  27.            sccode=sccode&0x0f;    //保留第低四位的值
  28.            return(recode+sccode);
  29.           }
  30.                   else
  31.                   sccode=(sccode<<1)|0x01;
  32.          }
  33.         }
  34.    }
  35.           return 0;
  36. }

  37. send()interrupt 4        //串行口通信中斷
  38. {
  39.   if(TI==1&&ACK==1)
  40.   {
  41.     TI=0;
  42.     if(i==0|i==0x22|i==0x44|i==0x66|i==0x88|i==0xaa|i==0xcc|i==0xdd|i==0xee)                        //有按鍵按下,需要修改波特率
  43.     {
  44.           ACK=0;
  45.           SBUF=i;           //修改波特率
  46.         }
  47.     else if(i==11)                //循環發送,發了十一個字符后重新發
  48.         {
  49.        i=1;
  50.            SBUF=1;
  51.         }
  52.         else
  53.         {
  54.       i++;
  55.       SBUF=i;               //正常發送數據
  56.     }
  57.   }
  58.   else if(RI==1)           //接收回應的信號
  59.     {
  60.            RI=0;
  61.            ACK=SBUF;           //接收回應信號 修改初值 觸發串口通信中斷
  62.            TI=1;
  63.            TH1=TL1=i;
  64.            i=1;
  65.         }
  66. }

  67. void main()
  68. {
  69.   TMOD=0x20;                   //定時器1 工作方式2
  70.   TH1=0x00;
  71.   TL1=0x00;            //置初值
  72.   TR1=1;
  73.   EA=1;
  74.   ES=1;                //使T1開始工作;開總中斷、串行中斷
  75.   SCON=0x50;           //計數器1 工作方式1
  76.   SBUF=i;  
  77.   while(1)
  78.   {
  79.     while(kbscan())
  80.            {
  81.             switch(kbscan())                        //不同的按鍵對應不同的波特率
  82.                 {
  83.             case 0xeb:i=0x00;break;                // 1
  84.                 case 0xdb:i=0x22;break;            // 2  
  85.                 case 0xbb:i=0x44;break;                // 3
  86.                 case 0xed:i=0x66;break;                // 4
  87.                 case 0xdd:i=0x88;break;                // 5
  88.                 case 0xbd:i=0xaa;break;                // 6
  89.                 case 0xee:i=0xcc;break;                // 7
  90.                 case 0xde:i=0xdd;break;                // 8
  91.                 case 0xbe:i=0xee;break;                // 9
  92.             }
  93.            }
  94.   }
  95. }
復制代碼

所有資料51hei提供下載:
20161111144-李作鑫-串口通信.rar (100.45 KB, 下載次數: 45)



作者: cs999    時間: 2019-8-4 07:07
這個正是我在網上苦苦搜尋的關于單片機串口仿真的帖子,今天我必須把它拿走,樓主好人吶,謝謝了




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美在线日韩 | 国产三级一区二区 | 久久久久久高潮国产精品视 | 亚洲天堂一区 | 国产精品成人av | 成人高清在线视频 | 一区二区三区国产精品 | 精品在线播放 | 五月综合激情网 | 伊人久久精品 | a级片在线观看 | 精品一二 | 成人av资源在线 | 在线成人免费视频 | 五月综合色啪 | 四虎免费视频 | 久久久性色精品国产免费观看 | 91社影院在线观看 | 欧美日韩一区在线 | 欧日韩在线观看 | 成人在线观看免费视频 | 精国产品一区二区三区四季综 | 久久极品| 精品国产18久久久久久二百 | 久久精品—区二区三区 | 精品国产免费人成在线观看 | 亚洲精彩视频 | 影音先锋中文字幕在线观看 | 亚洲精品乱码久久久久久按摩观 | 精品久久国产老人久久综合 | 人妖无码| 91精品久久久久久综合五月天 | 91精品国产91久久久久游泳池 | 婷婷色国产偷v国产偷v小说 | 欧美一区精品 | 亚洲一区二区三区免费视频 | 美女国内精品自产拍在线播放 | 精品亚洲一区二区三区四区五区 | 国产成人免费在线 | 日韩一区不卡 | 国产一区久久精品 |