xxkj2010 发表于 2023-12-15 11:39:35

这种情况,是不是IO口的输入模块坏了?

本帖最后由 xxkj2010 于 2023-12-15 13:50 编辑

昨天用以前自制的STC12C5A60S2实验板进行实验的时候,发觉P01的输入功能可能失效,于是用下面的代码进行输入输出功能测试:

void main()
{
UartInit();//串口、定时器初始化
init_LCD();//初始化LCD1602
delay_ms(10);//等待
while(1)
{
P01=1;delay_ms(500);
if(P01==1)printf("P01=1");//串口发送字符
P01=0;delay_ms(500);
if(P01==0)printf("P01=0");//串口发送字符
}
}结果串口打印如下:



用数字表测量P01口的电平,变化正常!
而从串口的打印信息可以看出,芯片无法检测到IO口的输入状态。
像这样的现象,是不是IO口的输入模块坏了,属于硬件问题了?


LAOXU 发表于 2023-12-15 14:10:00

从显示数据上看, P01 读到的数据为 1 , 你把 P01 脚接地, 上电直接读 P01脚数据看看, 如不是 0 , 则肯定是坏了

xxkj2010 发表于 2023-12-15 15:00:15

LAOXU 发表于 2023-12-15 14:10
从显示数据上看, P01 读到的数据为 1 , 你把 P01 脚接地, 上电直接读 P01脚数据看看, 如不是 0 , 则肯定是 ...

用数字表测量电压数值,反映的数据正常的

LAOXU 发表于 2023-12-15 15:07:26

数字表测量电压数值, 只代表外部电压, 或 OUT 输出电压, 你 怀疑 输入 部分 坏 了 , 需验证的是 输入, CPU 必须能读到 外部输入 变化.

xxkj2010 发表于 2023-12-15 16:15:56

LAOXU 发表于 2023-12-15 15:07
数字表测量电压数值, 只代表外部电压, 或 OUT 输出电压, 你 怀疑 输入 部分 坏 了 , 需验证的是 输入, CPU...
P01=0;控制P01为低电压,且数字表测得到了0V,这样不是把IO口拉低了吗?

LAOXU 发表于 2023-12-15 18:15:56

xxkj2010 发表于 2023-12-15 16:15
P01=0;控制P01为低电压,且数字表测得到了0V,这样不是把IO口拉低了吗?

我让你开机直接 读 外部输入 .

LAOXU 发表于 2023-12-15 18:18:24

P1.0 置位 清 0 , 全去掉

LAOXU 发表于 2023-12-15 18:22:34

实际上, 你设置 开漏模式,准双向模式 , 输入模式 , 可以读到 输入信号,

如果设置成 强推挽模式,一辈子都 读不到 输入信号,

xxkj2010 发表于 2023-12-15 20:30:02

LAOXU 发表于 2023-12-15 18:22
实际上, 你设置 开漏模式,准双向模式 , 输入模式 , 可以读到 输入信号,

如果设置成 强推挽模式,一辈 ...

没有设置,这些老型号默认是准双向模式

xxkj2010 发表于 2023-12-15 20:36:28

LAOXU 发表于 2023-12-15 14:10
从显示数据上看, P01 读到的数据为 1 , 你把 P01 脚接地, 上电直接读 P01脚数据看看, 如不是 0 , 则肯定是 ...

试了,P01接地,上电直接读取P01,依然被认为高电平。
页: [1] 2
查看完整版本: 这种情况,是不是IO口的输入模块坏了?