找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2583|回复: 5
打印 上一主题 下一主题
收起左侧

有大哥帮我看看这单片机程序吗?电脑通过串口控制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

工程

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:267932 发表于 2020-6-22 19:21 | 只看该作者
你这代码写的好魔性,都在中断里处理数据????
回复

使用道具 举报

板凳
ID:94031 发表于 2020-6-22 20:26 | 只看该作者
波特率有问题,串口通信最好用外部晶振11.0592Mhz。
回复

使用道具 举报

地板
ID:18297 发表于 2020-6-22 20:51 | 只看该作者
请问你的晶振是否对应的波特率,设置是否正确,
我仿真的结果是没有问题的。没时间帮你试试实际的电路是否正确。
回复

使用道具 举报

5#
ID:785191 发表于 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 发表于 2020-6-23 09:17 | 只看该作者
已经解决是我的板子晶振是11.0592MHZ我配了12MHZ导致配错了波特率
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表