I/O 口工作模式与上拉电阻的问题
如图, I/O 口工作模式比如设置为开漏,当端口锁存器为 0 时,开漏输出关闭所有上拉晶体管。
这时如果设置新增上拉电阻有效,那么开漏输出是否还有上拉电阻?
也就是说,新增的上拉或下拉电阻,如果设置其有效,则相当于I/O口外部(芯片外部)接了一个
上拉或下拉电阻,而与I/O 口工作模式无关。
望赐教!
多谢!
本帖最后由 梁工 于 2023-4-20 22:46 编辑
JISHUZHAI 发表于 2023-4-20 15:33
我选择P0口设置开漏输出模式,启用全部上拉电阻,全对外输出1,拿万用表测量,为P0口什么都是0V?
P0M0 = 0 ...
因为你没有允许操作扩展寄存器,所以设置操作无效。
P_SW2 |= 0x80; //允许访问扩展寄存器
P0PU = 0xFF; //允许P0口额外上拉电阻 4.1K 上拉电阻是独立的,相当于:外部 【焊上4.1K上拉电阻,还是不焊4.1K上拉电阻】 新增的4K上拉电阻是独立的,与IO模式设置无关,一旦允许,则相当于引脚固定接一个上拉电阻到VCC,而与I/O 口工作模式无关。 使用注意,虽然说是上拉电阻,但是它是在复位与程序执行响应操作后才起作用,这就会在上电与起作用后有个时间差,如果要求严格,还是自己加吧,很鸡肋的功能 楼上这讲法,纯属你自己一家之言,我们认为你的结论是错的
1,STC8H/STC32G 的 I/O上电后为【仅为高阻输入】,仅为高阻输入对外无驱动能力,
不影响外部状态,这是全球趋势!
2,如系统要求某个I/O上电后立即转为高或低,你外部加10K上拉/下拉即可
3,如是和外部普通的OC门开漏器件通信,典型的 1线制/I2C/SPI--OC门开漏器件通信,
MCU内部不占外部面积的上拉电阻则可用来取代外部上拉,简化硬件设计
我用STC8H8K64U实验板,3.3V供电,将P1口中设置成准双向+上拉电阻模式,然后给P1口置1,
这时P15和P16可以输出3.2V,而P13只能输出1.84V,P17输出1.49V?
#define P1PU (*(unsigned char volatile xdata *)0xfe11)//
sfr P_SW2 = 0xBA;//
void main()
{
P1M0 = 0x00; P1M1 = 0x00; //
P1PU = 0xff; //P_SW2=P_SW2|0x80;
P_SW2 =0x80;
while (1)
{
}
}
P1.7/P1.6/P1.5/P1.3
学会看原理图后再编写程序
创隆科技 发表于 2023-3-4 21:13
使用注意,虽然说是上拉电阻,但是它是在复位与程序执行响应操作后才起作用,这就会在上电与起作用后有个时 ...
很鸡肋的功能?
各厂家的ARM也是这样的,大部分的8位机也是这样的,你为什么不说也很鸡肋?
不要带有色眼镜看STC的IC,除了老的51,几乎所有各家的MCU的IO都是上电高阻,这是最常用的方式,上电复位期间你要搞好是低,可以外接电阻确定。 我选择P0口设置开漏输出模式,启用全部上拉电阻,全对外输出1,拿万用表测量,为P0口什么都是0V?
P0M0 = 0xff;
P0M1 = 0xff;
P0PU = 0xFF;
P0 = 0xff;
页:
[1]
2