标题: 有大哥帮我看看这单片机程序吗?电脑通过串口控制led。问题:为什会有91 [打印本页]

作者: gordor    时间: 2020-6-22 17:40
标题: 有大哥帮我看看这单片机程序吗?电脑通过串口控制led。问题:为什会有91
有大哥帮我看看这程序吗?电脑通过串口控制led。问题:为什会有91发出来

  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  串口发送一个字节数据
  22.   * @param  Byte 要发送的一个字节数据
  23.   * @retval 无
  24.   */
  25. void UART_SendByte(unsigned char Byte)
  26. {
  27.         SBUF=Byte;
  28.         while(TI==0);
  29.         TI=0;
  30. }

  31. /*串口中断函数模板
  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, 下载次数: 5

工程


作者: zhai1995    时间: 2020-6-22 19:21
你这代码写的好魔性,都在中断里处理数据????
作者: xuyaqi    时间: 2020-6-22 20:26
波特率有问题,串口通信最好用外部晶振11.0592Mhz。
作者: zjjhtony    时间: 2020-6-22 20:51
请问你的晶振是否对应的波特率,设置是否正确,
我仿真的结果是没有问题的。没时间帮你试试实际的电路是否正确。
作者: FB0    时间: 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;
}


作者: gordor    时间: 2020-6-23 09:17
已经解决是我的板子晶振是11.0592MHZ我配了12MHZ导致配错了波特率




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1