找回密码
 立即注册
查看: 30|回复: 1

求助关于实验箱9.62中简单串口通信实验的问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-12-09 09:48:57
已绑定手机

1

主题

0

回帖

25

积分

新手上路

积分
25
发表于 2025-12-9 10:24:53 | 显示全部楼层 |阅读模式
大家好,求助一个基础的问题,先谢谢大家。
我在实验教学中发现STC32G12K128的实验箱9.62,在进行串口通信实验时,按下T0,自己板子的P6.7也会亮灭,但是程序中没有这个定义。不知道为啥。
2. 串口本来需要3根线RXD, TXD和GND,但是实验中发现只需要一根线,例如RXD接TXD,甚至RXD接RXD,都能实现串口通信。我刚刚建立的单片机世界观崩塌了。。。。
#include "STC32G.h"

typedef unsigned char  u8;
typedef unsigned int   u16;

sbit LED    = P6^7;   //
sbit LED_EN = P4^0;   //
sbit KEY    = P3^4;   //

#define MAIN_Fosc  24000000UL
#define BAUD       115200UL
#define BRT (65536UL - MAIN_Fosc / BAUD / 4)

volatile bit rx_flag = 0;
volatile u8  rx_data = 0;

//
bit Key_Pressed(void)
{
    static bit key_last = 1;
    bit key_now = KEY;

    if (key_last == 1 && key_now == 0)   //
    {
        key_last = key_now;
        return 1;
    }
    key_last = key_now;
    return 0;
}



//
void UART1_Init2(void)
{
    SCON = 0x50;      //
   T2L = (u8)(BRT & 0xFF);   //
    T2H = (u8)(BRT >> 8);     //
   S1BRT = 1;           //
    T2x12 = 1;           //
    T2R   = 1;           //
    ES  = 1;          //
}

//
void UART1_ISR(void) interrupt 4
{
    if (RI)           //
    {

        RI = 0;
        rx_data = SBUF;
        rx_flag = 1;
               
    }

    if (TI)           //
    {
        TI = 0;       //
    }
}

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



//---------------- ??? ----------------
void main(void)
{
    WTST = 0;  //ÉèÖóÌÐòÖ¸ÁîÑÓʱ²ÎÊý£¬¸³ÖµÎª0¿É½«CPUÖ´ÐÐÖ¸ÁîµÄËÙ¶ÈÉèÖÃΪ×î¿ì
    EAXFR = 1; //À©Õ¹¼Ä´æÆ÷(XFR)·ÃÎÊʹÄÜ
    CKCON = 0; //Ìá¸ß·ÃÎÊXRAMËÙ¶È

    P1M1 = 0x30;   P1M0 = 0x30;   //ÉèÖÃP1.4¡¢P1.5Ϊ©¼«¿ªÂ·(ʵÑéÏä¼ÓÁËÉÏÀ­µç×èµ½3.3V)
    P2M1 = 0x3c;   P2M0 = 0x3c;   //ÉèÖÃP2.2~P2.5Ϊ©¼«¿ªÂ·(ʵÑéÏä¼ÓÁËÉÏÀ­µç×èµ½3.3V)
    P3M1 = 0x40;   P3M0 = 0x40;   //ÉèÖÃP3.6Ϊ©¼«¿ªÂ·(ʵÑéÏä¼ÓÁËÉÏÀ­µç×èµ½3.3V), P3.4,P3.5ÉèÖÃΪÊäÈë¿Ú
    P4M1 = 0x3c;   P4M0 = 0x3c;   //ÉèÖÃP4.2~P4.5Ϊ©¼«¿ªÂ·(ʵÑéÏä¼ÓÁËÉÏÀ­µç×èµ½3.3V)
    P5M1 = 0x0c;   P5M0 = 0x0c;   //ÉèÖÃP5.2¡¢P5.3Ϊ©¼«¿ªÂ·(ʵÑéÏä¼ÓÁËÉÏÀ­µç×èµ½3.3V)
    P6M1 = 0x00;   P6M0 = 0xff;   //ÉèÖÃÎªÍÆÍìÊä³ö
    P7M1 = 0x00;   P7M0 = 0x00;   //ÉèÖÃΪ׼˫Ïò¿Ú

  //  P3PU = 0x10;            //P3.4,3.5 ʹÄÜÄÚ²¿4.1KÉÏÀ­µç×è

        // LED
    LED_EN = 0;
    LED    = 0;    // ????(?????)

    UART1_Init2();
    EA = 1;        // ????

    while (1)
    {

        if (Key_Pressed())
        {
            UART1_SendByte(0x01);
        }


        if (rx_flag)
        {
            rx_flag = 0;
            if (rx_data == 0x01)
            {
                LED = !LED;   // ???? LED ??
            }
        
        }
    }
}


回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:103
  • 最近打卡:2025-12-18 09:23:56
已绑定手机

7

主题

136

回帖

770

积分

高级会员

DIY玩家

积分
770
发表于 2025-12-10 11:26:50 | 显示全部楼层
GND线可保障可靠性
只接一根线只能发或只能收
真正的学徒往往怀着大师的心
回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-12-18 13:45 , Processed in 0.100816 second(s), 50 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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