这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » Why?STC单片机STC8G1K08-20PIN串口不能使用的!

共8条 1/1 1 跳转至

Why?STC单片机STC8G1K08-20PIN串口不能使用的!

工程师
2020-09-03 20:41:05     打赏

搞了几天了,还没解决,头大啊!


我用的单片机型号: STC8G1K08-20/16PIN (QFN20)
固件版本号: 7.3.10U
板子用USB下载程序没问题, 用串口下载提示找不到目标单片机;
USB下载跑起来后IO可以输出高低电平,但串口乱码,试了串口1 RXD/P3.0, TXD/P3.1和RXD/P3.6, TXD/P3.7都一样。
其他坛友有遇到这种问题吗,请教解决方法? 是不是IC有bug。。。。

贴上官方代码:

#include "reg51.h"
#include "intrins.h"

#define  FOSC  11059200UL
#define  BRT  (65536 - FOSC / 9600 / 4)

sfr  AUXR  =  0x8e;
sfr  T2H  =  0xd6;
sfr  T2L  =  0xd7;

sfr  P0M1  =  0x93;
sfr  P0M0  =  0x94;
sfr  P1M1  =  0x91;
sfr  P1M0  =  0x92;
sfr  P2M1  =  0x95;
sfr  P2M0  =  0x96;
sfr  P3M1  =  0xb1;
sfr  P3M0  =  0xb2;
sfr  P4M1  =  0xb3;
sfr  P4M0  =  0xb4;
sfr  P5M1  =  0xc9;
sfr  P5M0  =  0xca;

sfr  P5    =  0xc8;
sfr  P_SW1 =  0xa2;

bit  busy;
char  wptr;
char  rptr;
char  buffer[16];

void UartIsr() interrupt 4  
{
  if (TI)
  {
    TI = 0;
    busy = 0;
  }
  if (RI)
  {
    RI = 0;
    buffer[wptr++] = SBUF;
    wptr &= 0x0f;
  }
}

void UartInit()
{
  SCON = 0x50;
  T2L = BRT;
  T2H = BRT >> 8;
        AUXR = 0x15;
  wptr = 0x00;
  rptr = 0x00;
  busy = 0;
}

void UartSend(char dat)
{
  while (busy);
  busy = 1;
  SBUF = dat;
}

void UartSendStr(char *p)
{
  while (*p)
  {
    UartSend(*p++);
  }
}

void main()
{
  P0M0 = 0x00;
  P0M1 = 0x00;
  P1M0 = 0x00;
  P1M1 = 0x00;
  P2M0 = 0x00;
  P2M1 = 0x00;
  P3M0 = 0xFE; //TX ?????,RX?????
  P3M1 = 0x00;
  P4M0 = 0x00;
  P4M1 = 0x00;
  P5M0 = 0x00;
  P5M1 = 0x00;

        //P_SW1 =0x0;

        P_SW1 &=0x3F;
        P_SW1 |=0x40;
       
  UartInit();
  ES = 1;
  EA = 1;
  UartSendStr("uart Test!\r\n" );
  
  while (1)
  {
    if (rptr != wptr)
    {
      UartSend(buffer[rptr++]);
      rptr &= 0x0f;
    }
  }
}




关键词: STC8G1K08-20PIN     串口     uart         

工程师
2020-09-03 20:48:16     打赏
2楼

内部震荡频率,只有串口方式下载才能改。
使用串口下载,要把usb下载用的二极管电容拆除


工程师
2020-09-03 20:51:36     打赏
3楼

好好查查硬件连接!


工程师
2020-09-03 20:55:41     打赏
4楼

楼主串口问题解决没?我现在也遇到串口不能通讯的问题,我试用的是U2,连简单的发送数据都发不出去,折腾了一天,也没搞定,官方的代码和示例直接编译烧录都不能正常通讯,是不是有什么坑要注意啊???第一次用芯片用到这么难受,真是服了...


菜鸟
2021-01-21 10:48:55     打赏
5楼

已经搞了两三天,毫无眉目,官方例程,网上资料都试过,石沉大海。


菜鸟
2022-02-04 11:27:28     打赏
6楼

定时器

芯片型号 : STC8F1K08S2


关于此芯片的重要说明:

芯片封装上的丝印错误

    批号为A665856.XD的SOP8封装实际为A版芯片

    正确的丝印应该为A665856.XA

    批号为1812A665856.XD的SOP16封装实际为A版芯片

    正确的丝印应该为1812A665856.XA



专家
2022-02-04 11:31:20     打赏
7楼

谢谢分享


工程师
2022-02-07 22:43:18     打赏
8楼

代码写的非常干练


共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]