不是比较大小, 是读取端口的 0/1, 通过 二级管 配合下拉电阻, 拉低信号的电平。让你信号输出 2.1V的时候,单片机能读到0,信号输出3.2V的时候,能读到1, STC12有段时间没有用了,我印象当中STC12 应该在斯密特发生器的伐值0.7V~1.6V这个范围,应该接一个二级管即可, 基于斯密特发生器的特性,可能需要IO设置为开漏模式,读IO之前,需要先给个低电平让斯密特发生器判别为0,再置1读IO,此时你的信号如果输出的2.1V通过二级管压降到1.4V 没有满足斯密特发生器的 1.6V,则读到还是0,反之则会读到1。
如果,折腾不好这个伐值,只能用 0.1uf 电容,通过IO放电,再开定时器,再IO置1充电,等到度到高电平了,判断定时器的时间长短,来区分你的信号是 3.2V, 还是2.1V.
类似的这些方法有很多,但是,这些都需要你试验去调整的,你如果这方面知识,一片空白的话,建议你还是用比较器。 |