其实很简单,只要你相像一下,它的IO口内部是这样的: 推拉输出的两个晶体管,上下各有一个电阻,是电阻限制了电流的输出。实际内部也的确是这样的,只不过这个电阻是晶体管做的,目的防止端口直接碰到GND或VCC(或其它硬电压,如两个引脚碰线,一个是1一个是0)时,电流过大而损坏。 |
我想我差不多想明白了,是我们走偏了。datasheet上的数据针对的是标准的TTL或都CMOS接口的外设,而不是纯电阻这样的东东。因为一般情况下,我们不用它来驱动负载,这样特殊的使用自然不是手册上考虑的。 |
yzwzfyz 发表于 2022-4-14 08:40 但是你看我附上的AT89C52的数据,VOH的值随IOH的增大反而减小,和你说的正好相反。我的理解是,电流越大造成内部上拉的MOS管的压降变大。它的输出电流不能简单地看做由负载电阻来决定,而是类似恒流源之类的设备,看该设备需要多大的电流。因为恒流源的电阻可以看做很大,所以它的输出仍然是高电平。但是普通电阻就不一样了,如果电阻很小,如果没有足够的电流,必然将输出电压拉低。我就是想知道,这时P1的输出有多大,但手册上没有给出。 |
楼主能提出这个问题,对单片机的理解会更进一步。 举一例: 市场上的LED灯灯珠点亮电流通常是300mA,这时电压约3.3V(1W的灯)。 你将此灯珠接到P1口上,就会发现,灯不会亮,而且连3.3V都输出不了。原因就是它提供不了这个电流。 220uA,是指保证满足高电平指标输出的条件下,可以提供220uA的电流,而不是极限电流。 例如:输出4.4V时给出220uA。你只要用一个20K的电阻就可以实验证这个结论。 如果接一个10K的电阻呢? 4.4V/10K=440uA,这时会如何呢?你会发现VH会掉到比4.4V低,如3.5V,即会输出350uA。 并不是它不能输出比220uA大的电流,而是输出电压会被拉下来,极限的输出电流,是短路输出电流。 |
Y_G_G 发表于 2022-4-12 23:06 某些方面不是一个档次的芯片吧。 |
这个细节抓的挺到位的,应该是规格书的bug,或者他的不专业的地方吧。我推测应该是typ 是150,max 220 |
wulin 发表于 2022-4-13 08:20 有些单片机的输出电流大,可以直接驱动负载,这也是有点优势的。 |
brucekang 发表于 2022-4-12 22:20 ![]() 楼主纠结这个参数没有什么实际意义。STC89C51的P1口在默认模式(准双向)置1状态直接接地,它的输出电流约为15uA。因为端口内部自动关断弱上拉,维持极弱上拉。了解IO口结构就能明白了。集成数字电路(包括MCU)输出端口只是为输出信号电平设计,通常不会有功率输出能力。要想驱动功率器件就得加中间放大器。 |
220ua,表示制造标准,每个芯片会有差异,150ua,代表即使你手里的芯片驱动力再小,也有150ua输出。这个高电平输出主要是给电信号,而不是让你驱动的,换言之如果你外部1k电阻下拉到地,p1口即便置1,也无法给出高电平 |
在STC那么好用的今天,我不知道还有什么理由去用AT89C51? 不知道AT89C51比STC的单片机好在哪里? |