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){}; 不写出来了,
STC89与STC8的资源不同,虽然引脚可以用转接板,但程序需用STC8的,STC-ISP 软件就有STC8系列串口例程,实测可以使用。 :) 本帖最后由 逍遥派掌门 于 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那里,一点反馈都没有,所以怀疑。
此问题不解决,不敢用这片子啊。
STC8已经量产,4个串口都很正常,跟STC15W4K32S4的4个串口完全兼容。可以使用STC官网上的“STC15系列8051单片机实验箱4原理图及C程序”里的4串口同时中断收发的例程测试,串口接收到数据后原样返回。
STC8A8K系列我用了几个产品,串口正常的。 应该不是单片机的BUG 逍遥派掌门 发表于 2018-1-16 22:00
用哪个型号测试的?
我用STC8A8K64S4A12测试,代码也是ISP软件STC8型号那里复制下来的,结果是中断发送可 ...
RX引脚用推挽?是不是有问题哦 是不是有些寄存器没设置 本帖最后由 逍遥派掌门 于 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;
} 非常希望得到指点,我也遇到此问题,也是此芯片,但我改了4个模式仍然不行。哎,片子太牛X了 P3M0 = 0xFF; // 设置强挽推
P3M1 = 0x00;
问题在这里 jazhhu 发表于 2019-1-15 18:01
P3M0 = 0xFF; // 设置强挽推
P3M1 = 0x00;
我设成00也不行。
接收设置成推挽,外部信号低不打架了吗 芯片版本的问题 2shift 发表于 2019-7-26 14:55
芯片版本的问题
上面发错了,STC8数据手册的最后面,有个"使用注意事项",里面说着,有些版本的模式需要设置成推挽模式才能用于串行口通讯的。
我前段时间用stc8A8K64S4A12做了一个超声波模块的通讯,端口就是普通设置的,通讯完全没问题。 2shift 发表于 2019-7-26 14:58
上面发错了,STC8数据手册的最后面,有个"使用注意事项",里面说着,有些版本的模式需要设置成推挽模式才 ...
输入口不可能设置成这个模式
P3.6要设置成普通模式 绝了,我也喷到了,rx怎么设置都收不到,进不去中断,推挽,准双向,高阻输入都试过了,这么恶心的吗 那就直接用stm32的芯片,stm32g030也才3块多一片,图形化界面初始化,只管调用就可以了! stb988 发表于 2022-3-17 23:42
那就直接用stm32的芯片,stm32g030也才3块多一片,图形化界面初始化,只管调用就可以了! ...
我的问题找到了,tx需要配置推挽,rx需要配置开漏,芯片没问题的!
页:
[1]
2