Defy Gravity 2021-06-01 20:11 采纳率: 0%
浏览 9

OCOM串口发送不了第二条数据。

 

  • 写回答

2条回答 默认 最新

  • Defy Gravity 2021-06-01 20:12
    关注

    #include <reg52.h>
    #include "uart.h"
    #include <string.h>

    #define u8 unsigned char
    #define u16 unsigned int

    typedef struct uart
    {
        u8 RX_BUFF[30];
    u8 TX_BUFF[20];
    u16 RX_COUNT;
    u8 RX_OKFlag;
    };

    struct uart Uart = {0};

    void UART_Configure(u16 BaudRate);
    void UART_SendByte(u8 dat);
    void UART_SendStr(u8* str);

    void main(void)
    {
     UART_Configure(9600);
     while(1)
    {

    }
    }

    void UART_Configure(u16 BaudRate)
    {
    u8 TH1_Dat;

    switch(BaudRate)
    {
    case 1200: TH1_Dat=0xF8; break;
    case 2400: TH1_Dat=0xF4; break;
    case 4800: TH1_Dat=0xFA; break;
    case 9600: TH1_Dat=0xFD; break;
    case 14400: TH1_Dat=0xFE; break;
    }
    TMOD &= 0X0F;
    TMOD |= 0X20;

    SM0 = 0;
    SM1 = 1;

    REN = 1;

    TH1 = TH1_Dat;
    TL1 = TH1;

    PCON |= 0X00;

    EA = 1;
    ES = 1;
    TR1 = 1;
    }

    void UART_SendByte(u8 dat)
    {
    SBUF=dat;
    while(!TI);
    TI=0;
    }

    void UART_SendStr(u8* str)
    {
     while(1)
    {
    if (*str=='\0') break;
    SBUF=*str++;
    while(!TI);
    TI=0;
    }
    }

    void UART_IRQHandler(void) interrupt 4
    {
    char xbuff[20];
    if(RI==1)
    {
    RI=0;
    Uart.RX_BUFF[Uart.RX_COUNT++]=SBUF;
    if(Uart.RX_BUFF[Uart.RX_COUNT-1]=='/')
    {
    strcpy(xbuff,Uart.RX_BUFF);
    if(strcmp(xbuff,"开灯/")== 0)
    {
    P1=0x00;
    UART_SendStr("LEN_ON \r\n");
    }
    if(strcmp(xbuff,"关灯/")== 0)
    {
    P1=0xFF;
    UART_SendStr("LEN_OFF \r\n");
    }

    Uart.RX_COUNT=0;
    Uart.RX_OKFlag=0;
    Uart.RX_COUNT=0;

    }
    }
    }

    评论

报告相同问题?

悬赏问题

  • ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
  • ¥15 系统2008r2 装机配置推荐一下
  • ¥500 服务器搭建cisco AnyConnect vpn
  • ¥15 用大厂网站防红自己网站
  • ¥15 悬赏Python-playwright部署在centos7上
  • ¥15 psoc creator软件有没有人能远程安装啊
  • ¥15 快速扫描算法求解Eikonal方程咨询
  • ¥20 我的是道格手机,重置后屏幕右上角出现红色字的未写入tee key 和未写入google key请问怎么去掉啊
  • ¥15 校内二手商品转让网站
  • ¥20 高德地图聚合图层MarkerCluster聚合多个点,但是ClusterData只有其中部分数据,原因应该是有经纬度重合的地方点,现在我想让ClusterData显示所有点的信息,如何实现?