逍遥派掌门 发表于 2018-1-16 17:48

STC最新的STC8串口1接收中断无反应,是不是芯片的BUG ???

本帖最后由 逍遥派掌门 于 2018-1-16 17:50 编辑

      看到STC8的片子资源不错,到淘宝搞了两片以及转接板(转成DIP40的),然后接到STC89的开发板上,
硬件电路没有问题,ISP下载程序非常顺利。用的是STC自家的ISP软件,还带串口助手的。
      简单的写了个串口1的中断程序,没有想到接收那里居然没有反应,同样的代码在STC89里可是跑成功的,
折腾了好久,就是失败,到STC那里提出这个问题,结果好几天都没有答复。
       怀疑是STC8的片子的BUG,请网友讨论。
程序:
void UartInit(void)                //115200bps@11.0592MHz
{      
          P3M0 = 0xFF;   // 设置强挽推
          P3M1 = 0x00;
      
    SCON = 0x50;
    T2L = BRT;
    T2H = BRT >> 8;
    AUXR = 0x15;
      
    ES = 1;                                    
    EA = 1;
}

void serial() interrupt 4
{
   if (RI)       //这里一直进不去,P10没有动静
   {
         RI=0;               
         P10 = ! P10;
         }

   if (TI) // 这里成功的,没有问题
      {
             .......
       }
}
主程序就是: UartInit ; while(1){}; 不写出来了,

hp34401a 发表于 2018-1-16 20:00

STC89与STC8的资源不同,虽然引脚可以用转接板,但程序需用STC8的,STC-ISP 软件就有STC8系列串口例程,实测可以使用。 :)

逍遥派掌门 发表于 2018-1-16 22:00

本帖最后由 逍遥派掌门 于 2018-1-16 22:02 编辑

hp34401a 发表于 2018-1-16 20:00
STC89与STC8的资源不同,虽然引脚可以用转接板,但程序需用STC8的,STC-ISP 软件就有STC8系列串口例程,实 ...
用哪个型号测试的?

我用STC8A8K64S4A12测试,代码也是ISP软件STC8型号那里复制下来的,结果是中断发送可以,中断接收无法执行到。
特意按照datasheet 和ISP 的要求,设置I/O为挽推了(BTW: ISP软件里的范例没有设置),怎么折腾都无果。这么简单的代码,在任何一个型号的51片子都通用啊 。
咨询STC那里,一点反馈都没有,所以怀疑。
此问题不解决,不敢用这片子啊。

coody 发表于 2018-1-16 23:53

STC8已经量产,4个串口都很正常,跟STC15W4K32S4的4个串口完全兼容。可以使用STC官网上的“STC15系列8051单片机实验箱4原理图及C程序”里的4串口同时中断收发的例程测试,串口接收到数据后原样返回。
STC8A8K系列我用了几个产品,串口正常的。

niyade 发表于 2018-1-17 11:48

应该不是单片机的BUG

cjseng 发表于 2018-1-19 14:31

逍遥派掌门 发表于 2018-1-16 22:00
用哪个型号测试的?

我用STC8A8K64S4A12测试,代码也是ISP软件STC8型号那里复制下来的,结果是中断发送可 ...

RX引脚用推挽?是不是有问题哦

ningling_21 发表于 2018-1-19 14:48

是不是有些寄存器没设置

逍遥派掌门 发表于 2018-1-24 13:58

本帖最后由 逍遥派掌门 于 2018-1-24 14:05 编辑

被ISP下载软件误导了,I/O设置成准双向的就可以了。 结帖
void UartInit(void)                      //115200bps@11.0592MHz
{      

#define select_time_1               // 使用定时器1
      
    P_SW1 = P_SW1 & 0x3F;      // 串口1的脚为:P3.0,p3.1
    P3M0 = 0x00;               // 设置为准双向
    P3M1 = 0x00;      
      
    SCON = 0x50;
#ifdef select_time_1         //定时器1作为波特率发生器
    TMOD = 0x00;
    TL1 = BRT;
    TH1 = BRT >> 8;
    TR1 = 1;
    AUXR = 0x40;
#else                         //   定时器2作为波特率发生器
    T2L = BRT;
    T2H = BRT >> 8;
    AUXR = 0x15;
#endif               
      
    ES = 1;               
    EA = 1;
}

7943603 发表于 2019-1-3 10:25

非常希望得到指点,我也遇到此问题,也是此芯片,但我改了4个模式仍然不行。哎,片子太牛X了

jazhhu 发表于 2019-1-15 18:01

P3M0 = 0xFF;   // 设置强挽推
          P3M1 = 0x00;

问题在这里

songchenping 发表于 2019-7-26 13:42

jazhhu 发表于 2019-1-15 18:01
P3M0 = 0xFF;   // 设置强挽推
          P3M1 = 0x00;



我设成00也不行。

ayb_ice 发表于 2019-7-26 14:07

接收设置成推挽,外部信号低不打架了吗

2shift 发表于 2019-7-26 14:55

芯片版本的问题

2shift 发表于 2019-7-26 14:58

2shift 发表于 2019-7-26 14:55
芯片版本的问题

上面发错了,STC8数据手册的最后面,有个"使用注意事项",里面说着,有些版本的模式需要设置成推挽模式才能用于串行口通讯的。
   我前段时间用stc8A8K64S4A12做了一个超声波模块的通讯,端口就是普通设置的,通讯完全没问题。

ayb_ice 发表于 2019-7-26 15:27

2shift 发表于 2019-7-26 14:58
上面发错了,STC8数据手册的最后面,有个"使用注意事项",里面说着,有些版本的模式需要设置成推挽模式才 ...

输入口不可能设置成这个模式

jazhhu 发表于 2020-1-4 17:05

P3.6要设置成普通模式

24kdewhite 发表于 2022-3-17 19:02

绝了,我也喷到了,rx怎么设置都收不到,进不去中断,推挽,准双向,高阻输入都试过了,这么恶心的吗

stb988 发表于 2022-3-17 23:42

那就直接用stm32的芯片,stm32g030也才3块多一片,图形化界面初始化,只管调用就可以了!

24kdewhite 发表于 2022-3-18 13:33

stb988 发表于 2022-3-17 23:42
那就直接用stm32的芯片,stm32g030也才3块多一片,图形化界面初始化,只管调用就可以了! ...

我的问题找到了,tx需要配置推挽,rx需要配置开漏,芯片没问题的!

stb988 发表于 2022-3-19 23:29

页: [1] 2
查看完整版本: STC最新的STC8串口1接收中断无反应,是不是芯片的BUG ???