这种情况,是不是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口的输入模块坏了,属于硬件问题了?
从显示数据上看, P01 读到的数据为 1 , 你把 P01 脚接地, 上电直接读 P01脚数据看看, 如不是 0 , 则肯定是坏了 LAOXU 发表于 2023-12-15 14:10
从显示数据上看, P01 读到的数据为 1 , 你把 P01 脚接地, 上电直接读 P01脚数据看看, 如不是 0 , 则肯定是 ...
用数字表测量电压数值,反映的数据正常的 数字表测量电压数值, 只代表外部电压, 或 OUT 输出电压, 你 怀疑 输入 部分 坏 了 , 需验证的是 输入, CPU 必须能读到 外部输入 变化. LAOXU 发表于 2023-12-15 15:07
数字表测量电压数值, 只代表外部电压, 或 OUT 输出电压, 你 怀疑 输入 部分 坏 了 , 需验证的是 输入, CPU...
P01=0;控制P01为低电压,且数字表测得到了0V,这样不是把IO口拉低了吗? xxkj2010 发表于 2023-12-15 16:15
P01=0;控制P01为低电压,且数字表测得到了0V,这样不是把IO口拉低了吗?
我让你开机直接 读 外部输入 .
P1.0 置位 清 0 , 全去掉 实际上, 你设置 开漏模式,准双向模式 , 输入模式 , 可以读到 输入信号,
如果设置成 强推挽模式,一辈子都 读不到 输入信号, LAOXU 发表于 2023-12-15 18:22
实际上, 你设置 开漏模式,准双向模式 , 输入模式 , 可以读到 输入信号,
如果设置成 强推挽模式,一辈 ...
没有设置,这些老型号默认是准双向模式 LAOXU 发表于 2023-12-15 14:10
从显示数据上看, P01 读到的数据为 1 , 你把 P01 脚接地, 上电直接读 P01脚数据看看, 如不是 0 , 则肯定是 ...
试了,P01接地,上电直接读取P01,依然被认为高电平。
页:
[1]
2