STC(宏晶)系列单片机的I/O口具有强上拉模式,何为强上拉模式?
宏晶单片机I/O口可以设置成四种模式:准双向口/弱上接,推挽/强上拉,输入/高阻,设置成推挽/强上拉,无论输出1和0时能承受的电流都很大。
宏晶单片机的特殊功能寄存器(SFR)对I/O口增加了PXM1、PXM0寄存器,每个口都有这么一对。可通过设置PXM1:PXM0的值选择该口的工作模式:
PXM1,PXM0的定义如下:
0 0 准双向口(传统IO)
0 1 推挽输出(强上拉 ,电流可达20mA,尽量少用)
1 0 仅为输入(高阻)
1 1 开漏,如传统8051的P0口
下面以P1口为例进行说明:
P1口的模式配置寄存器的名字为P1M1、P1M0,地址分别为91H、92H。
例:不论是汇编还是c,寄存器的定义是一样的:
P1M1 equ 91H
P1M0 equ 92H
然后,程序中有以下语句:
汇编语言:
mov p1m1,#00000000B
mov p1m0,#11111111B ;将p1口全部置为强上拉模式
C语言:
P1M0 = 0xC0;
P1M1 = 0xA0;//P1.7开漏,P1.6高阻,P1.5强推挽输出,其他准双向I/O口。
利用宏晶单片机的这个功能,将数码管显示变得更亮些简直是轻而易举,以前我老是想着加上拉电阻呀、购买更高亮度的数码管呀,现在呀,觉得真好,用软件这么一设就搞定了。真是爽啊!(我用的单片机是STC11F02E、STC12C5A60S2)。
不过,在这里有两点忠告:
- 蚂蚁能拖动比自己重100倍的东西,但是也毕竟是蚂蚁,让蚂蚁去拉马车显然不行。因此,强上拉的“强”仅仅是相对的,拉个数码管是可以的,但拉动继电器之类的器件,你可还是要老老实实的按标准的电路来做,该加三极管的时候你还得要加,不要过于贪心了。
- 一旦你将I/O口设为上拉(推挽)模式了,你千万不能把两个口的线搭连在一起了,否则,一旦一个脚是输出1另一个脚是输出0,那你这个口是烧定了。而没有设为上拉模式,则一般不会损坏I/O口。
作者:风铃
如若复制、转载请注明原文地址:http://mtoou.info/stc-qiangshangla/