找回密码
 立即注册

QQ登录

只需一步,快速开始

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

串口助手发什么都收不到回复 通讯接线是没问题的,因为我程序都烧进去了

[复制链接]
跳转到指定楼层
楼主
#include "STC8G.H"
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define FOSC        11059200UL
#define BRT         (256 - FOSC / 115200 / 32)
#define LED_ON      '1'    // 字符命令
#define LED_OFF     '2'    // 字符命令

char received_cmd = 0;
bit cmd_processed = 1;
bit flag = 0;
sbit LED = P1^0;  

// 串口发送函数
void UART_Send_Byte(unsigned char dat)
{
    SBUF = dat;
    while(!TI);
    TI = 0;
}

void UART_ISR() interrupt 4
{
    if(RI)
    {
        RI = 0;
        received_cmd = SBUF;
        cmd_processed = 0;
        
        // 回显接收到的数据
        UART_Send_Byte(received_cmd);
    }
}

void UART_Init()  
{
    SCON = 0x50;
    TMOD = 0x20;
    TL1 = BRT;
    TH1 = BRT;
    TR1 = 1;
    AUXR = 0x40;
    ES = 1;
    EA = 1;
}

void Process_Received_Data(char cmd)
{
    switch(cmd)
    {
        case LED_ON:
            flag = 1;
            UART_Send_Byte('O'); // 发送确认
            break;
            
        case LED_OFF:
            flag = 0;
            UART_Send_Byte('F'); // 发送确认
            break;
            
        default:
            UART_Send_Byte('?'); // 发送未知命令
            break;
    }
}

void main(void)
{        
    P1M0 = 0x01; P1M1 = 0x00;
    P3M0 = 0x00; P3M1 = 0x00;
    P1 = 0x00;
    P3 = 0x00;
    UART_Init();
   
    // 发送启动标志
    UART_Send_Byte('S'); // Start
   
    while(1)
    {
        if(!cmd_processed)
        {
            Process_Received_Data(received_cmd);
            cmd_processed = 1;
        }
        
        LED = flag;  
    }
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:383654 发表于 2025-10-25 17:59 | 只看该作者
求大家帮忙看一下是哪出问题了。串口助手发什么都收不到回复。通讯接线是没问题的,因为我程序都烧进去了
回复

使用道具 举报

板凳
ID:1153607 发表于 2025-10-25 20:18 | 只看该作者
把单片机收发两端接通,看看能不能收到?有用信息太少,没办法具体分析。
回复

使用道具 举报

地板
ID:1133081 发表于 2025-10-25 21:33 | 只看该作者
Jang 发表于 2025-10-25 17:59
求大家帮忙看一下是哪出问题了。串口助手发什么都收不到回复。通讯接线是没问题的,因为我程序都烧进去了

先用官方示例调通,再按自己意图修改。


回复

使用道具 举报

5#
ID:584814 发表于 2025-10-26 11:29 | 只看该作者
为什么对女朋友发出的邀请得不到回复 ?邀请信已经顺风送出多日,我心依旧,盼回复
回复

使用道具 举报

6#
ID:870445 发表于 2025-10-26 14:40 | 只看该作者
用表看看晶振两端有电压吗,示波器看看有波形吗
回复

使用道具 举报

7#
ID:384109 发表于 2025-10-26 15:17 | 只看该作者
先单片机发送数据,看接收情况,看波特率
回复

使用道具 举报

8#
ID:161164 发表于 2025-10-27 10:33 | 只看该作者
直接用AIapp-ISP和usb转串口接P30/P31
越过蓝牙模块,可以通信吗?
回复

使用道具 举报

9#
ID:161164 发表于 2025-10-27 10:36 | 只看该作者

回复

使用道具 举报

10#
ID:383654 发表于 2025-10-27 10:49 | 只看该作者
兄弟们,我知道哪里出问题了
回复

使用道具 举报

11#
ID:383654 发表于 2025-10-27 10:50 | 只看该作者
    P1M0 = 0x01; P1M1 = 0x00;
    P3M0 = 0x00; P3M1 = 0x00;
    P5M0 = 0x10; P5M1 = 0x00;
    P1 = 0x00;
    P3 = 0x03;      //P3.0和3.1一定要是高电平!!!!高电平!!!!高电平!!!!高电平!!!!高电平!!!!高电平!!!!高电平!!!!

这样就正常了
回复

使用道具 举报

12#
ID:624769 发表于 2025-10-27 12:26 | 只看该作者
bit  T1busy;
// 串口发送函数
void UART_Send_Byte(unsigned char dat)
{
    while(T1busy);
    T1busy  = 1;
    SBUF = dat;
}

void UART_ISR() interrupt 4
{
    if(RI)
    {
        RI = 0;
        received_cmd = SBUF;
        cmd_processed = 0;
        
        // 回显接收到的数据
        UART_Send_Byte(received_cmd);
    }
    if(TI)
    {
           TI  = 0;
           T1busy  = 0;
     }
}
回复

使用道具 举报

13#
ID:383654 发表于 2025-10-27 17:05 | 只看该作者

就是这里!还是大佬眼神好
回复

使用道具 举报

14#
ID:349276 发表于 2025-12-13 21:49 | 只看该作者
lkc8210 发表于 2025-10-27 10:33
直接用AIapp-ISP和usb转串口接P30/P31
越过蓝牙模块,可以通信吗?

大神好!可否发一份oled i2c 4脚的proteus的仿真元件?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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