標題: Proteus8.13版本仿真單片機串口只能發(fā)送,不能接收問題 [打印本頁]

作者: sttt300    時間: 2023-6-13 10:08
標題: Proteus8.13版本仿真單片機串口只能發(fā)送,不能接收問題
我用的是proteus 8.13版本,串口總是只能發(fā)送,不能接收,搞了我好多天了
剛剛突然看到論壇上有個網(wǎng)友說8.13版本的串口就是不能接收的
想請教一下,目前哪個版本比較好用?
串口實驗如下:
按鍵按一下,另一個單片機上的數(shù)顯示加1
原理圖,可以看到發(fā)送的時候,SBUF已經有數(shù)據(jù)了:


代碼:
兩個單片機的代碼是一樣的,頻率也設置成了11.0592MHz了
  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit key = P3^7;
  5. uchar DATA,num;

  6. void delay10ms(uint n)
  7. {
  8.    uchar i,j;
  9.    for(;n>0;n--)
  10.    {
  11.       for(i=0;i<18;i++)
  12.       {
  13.          for(j=0;j<184;j++){;}
  14.       }
  15.    }
  16. }

  17. void UART_init(void)
  18. {
  19.    SCON = 0X50;
  20.    TMOD = 0X20;
  21.    PCON = 0X00;
  22.    TH1  = 0XFD;                //波特率9600,@11.0592MHz
  23.    TL1  = 0XFD;
  24.    ET1  = 0;
  25.    TR1  = 1;
  26.    EA   = 1;
  27.    ES   = 1;
  28. }

  29. void UART() interrupt 4
  30. {
  31.    if(RI)
  32.    {
  33.       RI=0;
  34.       DATA = SBUF;
  35.    }
  36.    if(TI)
  37.    {
  38.       TI=0;
  39.    }  
  40. }

  41. void main(void)
  42. {
  43.    UART_init();
  44.    num  = 0x00;
  45.    DATA = 0x00;
  46.    P2   = 0x00;
  47.    while(1)
  48.    {
  49.       P2 = DATA/10 << 4 | DATA%10;         //數(shù)碼管顯示接收的數(shù)
  50.           if(!key)                        //檢測按鍵按下
  51.           {
  52.                   delay10ms(1);
  53.                 if(!key)
  54.                 {
  55.                         while(!key);         //檢測按鍵松開
  56.                         ++num;
  57.                         SBUF = num;        //發(fā)送數(shù)據(jù)
  58.                 }
  59.           }

  60.    }
  61. }
復制代碼




作者: 人中狼    時間: 2023-6-13 10:57
分模塊單獨測試吧
作者: lkc8210    時間: 2023-6-13 11:05
附件是我收集的各版本的仿真驅動(到8.13)
把檔案內的MCS8051.DLL替換掉以下檔案試試
C:\Program Files\Labcenter Electronics\Proteus 8 Professional\DATA\MODELS\MCS8051.DLL MCS8051.zip (1.71 MB, 下載次數(shù): 94)





作者: 134670    時間: 2023-6-13 12:00
向上兼容不太行,換個舊點的版本。
作者: yzwzfyz    時間: 2023-6-13 13:24
將RX、TX線交叉一下。
作者: sttt300    時間: 2023-6-13 14:41
lkc8210 發(fā)表于 2023-6-13 11:05
附件是我收集的各版本的仿真驅動(到8.13)
把檔案內的MCS8051.DLL替換掉以下檔案試試
C:\Program Files\La ...

真的可以了,非常感謝!
作者: xue~    時間: 2023-6-25 16:52
lkc8210 發(fā)表于 2023-6-13 11:05
附件是我收集的各版本的仿真驅動(到8.13)
把檔案內的MCS8051.DLL替換掉以下檔案試試
C:\Program Files\La ...

您好,最后一個是8.13的么?
作者: lkc8210    時間: 2023-6-26 09:37
xue~ 發(fā)表于 2023-6-25 16:52
您好,最后一個是8.13的么?

看檔案日期,最新的就是8.13
作者: amu226    時間: 2024-7-11 12:00
替換文件后發(fā)送HEX文件,總會少一個數(shù)據(jù)
作者: xianfajushi    時間: 2024-7-11 17:10
串口通信看我博文一個代碼在7.8和8.13都可以使用。https://so.csdn.net/so/search?q= ... g&u=xianfajushi。我通常都寫一個文件中接收與發(fā)送,要分開也簡單。
作者: 1518saturation    時間: 2025-4-1 15:55
lkc8210 發(fā)表于 2023-6-13 11:05
附件是我收集的各版本的仿真驅動(到8.13)
把檔案內的MCS8051.DLL替換掉以下檔案試試
C:\Program Files\La ...

成功了,謝謝




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1