majicw 发表于 2024-6-9 15:29:18

STC8H读取GPIO口出错

最近做个板子用STC8H芯片读取6IO口的状态时出错,搞半天没找到问题,请大神帮我看看


软件采用定时器中断,每秒采集10次,通过串口输出端口状态
硬件部分采用817隔离高压部分,P21-P26口做采集,端口配置成高阻和准双向没有解决问题,输入口并接104电容也无效果

下面附图,请大神分析:
1.串口输出,会出现不明原因的跳变



2.硬件原理图



3.读取函数



majicw 发表于 2024-6-11 16:14:54

有大佬能提供一点思路么 {:dizzy:}

xiangzichen 发表于 2024-6-11 16:46:50

1. 这个函数在中断里,还是中断外?
2. 不能简洁一点么?
    status = (P2 >> 1) & 0x3F;

3. 串口发送在哪里?

soma 发表于 2024-6-11 17:16:14

为什么不直接读取P2值然后&操作像这样status=P2&0x3f;

majicw 发表于 2024-6-12 17:00:11

soma 发表于 2024-6-11 17:16
为什么不直接读取P2值然后&操作像这样status=P2&0x3f;

因为我实在找不到哪里出的问题 程序写了好几种demo 硬件也改了还几次
{:cry:}{:cry:}

majicw 发表于 2024-6-12 17:03:17

xiangzichen 发表于 2024-6-11 16:46
1. 这个函数在中断里,还是中断外?
2. 不能简洁一点么?
    status = (P2 >> 1) & 0x3F;


time0中断里调用这个函数,中断频率50Hz
串口发送就是把这个state发送到UART0

ahong 发表于 2024-6-12 18:56:09

先简单排查一下,EX1-EX6手动固定状态,读取看是否还有这种情况

xiangzichen 发表于 2024-6-13 14:50:48

测试一下串口直接送P2,长时间观察看看

Lkck8210 发表于 2024-6-19 21:06:24

波特率多少?晶振设了多少?

Lkck8210 发表于 2024-6-19 21:06:46

波特率多少?晶振设了多少?
页: [1]
查看完整版本: STC8H读取GPIO口出错