找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3082|回復: 5
打印 上一主題 下一主題
收起左側

有大哥幫我看看這單片機程序嗎?電腦通過串口控制led。問題:為什會有91

[復制鏈接]
跳轉到指定樓層
樓主
ID:786910 發(fā)表于 2020-6-22 17:40 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
有大哥幫我看看這程序嗎?電腦通過串口控制led。問題:為什會有91發(fā)出來

  1. #include <REGX52.H>
  2. #include "Delay.h"
  3. #include "UART.h"

  4. void main()
  5. {
  6.         UART_Init();
  7.         while(1)
  8.         {
  9.                
  10.         }
  11. }

  12. void UART_Routine() interrupt 4
  13. {
  14.         if(RI==1)
  15.         {
  16.                 P2=~SBUF;
  17.                 UART_SendByte(SBUF);
  18.                 RI=0;
  19.         }
  20. }
復制代碼
  1. #include <REGX52.H>

  2. /**
  3.   * @brief  串口初始化,4800bps@12.000MHz
  4.   * @param  無
  5.   * @retval 無
  6.   */
  7. void UART_Init()
  8. {
  9.         SCON=0x50;
  10.         PCON |= 0x80;
  11.         TMOD &= 0x0F;                //設置定時器模式
  12.         TMOD |= 0x20;                //設置定時器模式
  13.         TL1 = 0xF3;                //設定定時初值
  14.         TH1 = 0xF3;                //設定定時器重裝值
  15.         ET1 = 0;                //禁止定時器1中斷
  16.         TR1 = 1;                //啟動定時器1
  17.         EA=1;
  18.         ES=1;
  19. }

  20. /**
  21.   * @brief  串口發(fā)送一個字節(jié)數(shù)據(jù)
  22.   * @param  Byte 要發(fā)送的一個字節(jié)數(shù)據(jù)
  23.   * @retval 無
  24.   */
  25. void UART_SendByte(unsigned char Byte)
  26. {
  27.         SBUF=Byte;
  28.         while(TI==0);
  29.         TI=0;
  30. }

  31. /*串口中斷函數(shù)模板
  32. void UART_Routine() interrupt 4
  33. {
  34.         if(RI==1)
  35.         {
  36.                
  37.                 RI=0;
  38.         }
  39. }
  40. */
復制代碼




8-2 電腦通過串口控制LED.zip

25.82 KB, 下載次數(shù): 5

工程

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:267932 發(fā)表于 2020-6-22 19:21 | 只看該作者
你這代碼寫的好魔性,都在中斷里處理數(shù)據(jù)????
回復

使用道具 舉報

板凳
ID:94031 發(fā)表于 2020-6-22 20:26 | 只看該作者
波特率有問題,串口通信最好用外部晶振11.0592Mhz。
回復

使用道具 舉報

地板
ID:18297 發(fā)表于 2020-6-22 20:51 | 只看該作者
請問你的晶振是否對應的波特率,設置是否正確,
我仿真的結果是沒有問題的。沒時間幫你試試實際的電路是否正確。
回復

使用道具 舉報

5#
ID:785191 發(fā)表于 2020-6-22 20:59 | 只看該作者
#include "reg52.h"

typedef unsigned char u8;
typedef unsigned int u16;

u8 x=0xff;

void Uart1_Timer1_Init()
{
  PCON |= 0x80;               
        SCON=0x50;     
        TMOD &= 0x0F;               
        TMOD |= 0x20;        
        TL1 = 0xF3;               
        TH1 = 0xF3;               
        ET1 = 0;               
        TR1 = 1;               
        ES=1;  
        EA=1;  
}

void main()
{
        Uart1_Timer1_Init();
   while(1)
         {
            P2=x;
         }
}

void Uart1_Interrupt() interrupt 4  
{
         x=SBUF;
         RI=0;
         SBUF=x;
         while(!TI);
         TI=0;
}

回復

使用道具 舉報

6#
ID:786910 發(fā)表于 2020-6-23 09:17 | 只看該作者
已經解決是我的板子晶振是11.0592MHZ我配了12MHZ導致配錯了波特率
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表