仿真矩阵键盘时,发现仿真中的stc15的IO口有蜜汁bug…
首先,P0M0,P0M1之类的IO口配置语句完全无效。(所有IO口都无效)
按上图中不论怎么配置都无效。
如果说这算正常,暂且都默认它们是准双向IO口。
5.21更新:
以下问题目前仅在P0口发现,其他IO口使用正常。
这些IO口的输出阻抗非常玄学,上图:
先放一个正常点的图,这里不加电阻,是直接拉低的:
图中,P0.0~P0.3输出为低电平,P0.4 ~ P0.5输出为高电平,按理说,准双向IO口是弱上拉,300欧的下拉,完全是可以拉低的,结果没有。
这个输出有16mA了,已经是达到推挽的输出能力了。
我加了一个10k的上拉,开始迷惑行为了:
竟然直接拉到2.5…一般准双向IO口,最少也有10mA的拉电流吧(况且刚才测试过,16mA的拉电流是没问题的)
下面就更玄学了,这是两个按键未按下时的现象:
这是都按下的现象…
上面的正常拉低,下面的显示短路。
没办法,短路就要加限流电阻呀…
之前试过,加300拉低不了…那就加100(50mA),依然没卵用…
挑战IO口输出极限(🙂),加1欧:
🤣,终于有现象了,不过两边都是2.5是什么鬼,拉电流跟灌电流一样大!?…(没错,我proteus就是头铁 )
经过不耐烦的测试,发现在整个P0里,只有P0.1和P0.3直接接地会短路。其他的都是正常拉低。
这如果这都可以解释的话,再看下面的现象:
显示短路后,再按下第一个按键,短路消失了…
加了限流电阻,没法拉低
不加限流电阻,直接短路
还有伴随着各种玄学现象…