打印
[51单片机]

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

[复制链接]
9399|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
逍遥派掌门|  楼主 | 2018-1-16 17:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 逍遥派掌门 于 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系列我用了几个产品,串口正常的。

使用特权

评论回复
5
niyade| | 2018-1-17 11:48 | 只看该作者
应该不是单片机的BUG

使用特权

评论回复
6
cjseng| | 2018-1-19 14:31 | 只看该作者
逍遥派掌门 发表于 2018-1-16 22:00
用哪个型号测试的?

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

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

使用特权

评论回复
7
ningling_21| | 2018-1-19 14:48 | 只看该作者
是不是有些寄存器没设置

使用特权

评论回复
8
逍遥派掌门|  楼主 | 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;
}

使用特权

评论回复
9
7943603| | 2019-1-3 10:25 | 只看该作者
非常希望得到指点,我也遇到此问题,也是此芯片,但我改了4个模式仍然不行。哎,片子太牛X了

使用特权

评论回复
10
jazhhu| | 2019-1-15 18:01 | 只看该作者
P3M0 = 0xFF;     // 设置强挽推
          P3M1 = 0x00;

问题在这里

使用特权

评论回复
11
songchenping| | 2019-7-26 13:42 | 只看该作者
jazhhu 发表于 2019-1-15 18:01
P3M0 = 0xFF;     // 设置强挽推
          P3M1 = 0x00;

我设成00也不行。

使用特权

评论回复
12
ayb_ice| | 2019-7-26 14:07 | 只看该作者
接收设置成推挽,外部信号低不打架了吗

使用特权

评论回复
13
2shift| | 2019-7-26 14:55 | 只看该作者
芯片版本的问题

使用特权

评论回复
14
2shift| | 2019-7-26 14:58 | 只看该作者
2shift 发表于 2019-7-26 14:55
芯片版本的问题

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

使用特权

评论回复
15
ayb_ice| | 2019-7-26 15:27 | 只看该作者
2shift 发表于 2019-7-26 14:58
上面发错了,STC8数据手册的最后面,有个"使用注意事项",里面说着,有些版本的模式需要设置成推挽模式才 ...

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

使用特权

评论回复
16
jazhhu| | 2020-1-4 17:05 | 只看该作者
P3.6要设置成普通模式

使用特权

评论回复
17
24kdewhite| | 2022-3-17 19:02 | 只看该作者
绝了,我也喷到了,rx怎么设置都收不到,进不去中断,推挽,准双向,高阻输入都试过了,这么恶心的吗

使用特权

评论回复
18
stb988| | 2022-3-17 23:42 | 只看该作者
那就直接用stm32的芯片,stm32g030也才3块多一片,图形化界面初始化,只管调用就可以了!

使用特权

评论回复
评论
24kdewhite 2022-3-18 13:33 回复TA
这不是想着支持下国产吗,stm肯定更舒服啊 
19
24kdewhite| | 2022-3-18 13:33 | 只看该作者
stb988 发表于 2022-3-17 23:42
那就直接用stm32的芯片,stm32g030也才3块多一片,图形化界面初始化,只管调用就可以了! ...

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

使用特权

评论回复
20
stb988| | 2022-3-19 23:29 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

528

帖子

2

粉丝