单片机的功能主要是通过向特殊寄存器输送0 或1 二进制数来实现的,所以,了解0和1 的作用对理解单片机工作的基本原理非常重要,下面就以一个程序实例来说明输入/输出端口的工作原理。
程序TEST.ASM 是一个实例程序,图1是它的电路图,在图中单片机P1端口的8个引脚分别与8只发光二极管相连。
图1 Pl 端口输出电路
如果将该程序写入单片机后,在程序运行时会看到8个发光二极管中接在P1.0~P1.3、P1.5~Pl.7的发光二极管被点亮;而P1.1和P1.4所接的发光二极管熄灭。
程序:TEST.ASM
MOV P1 ,#00010010B
JMP $
END ~
引脚与寄存器的关系
程序中的Pl对外是输入/输出端口,共有8个引脚,分别与8只发光二极管相连;而Pl对内是特殊功能寄存器里的一个单元,地址在90H ,单元内共有8个位,每位接出一根引线,就是在外面看到的引脚PI.0~P1.7,Pl寄存器与引脚的对应关系示意图如图2.7所示。
图2 Pl 寄存器与引脚的对应关系示意图
单片机的P0、P2、P3 与上述的逻辑结构相同。
单片机中0和1的作用
1.在端口的外部0与1是表示电平的高低
图3 所示是图1 P1 端口输出的等效电路,D是发光二极管,当正向电流有电流流过时,二极管就会发光。R 是限流电阻,防止二极管因电流过大而被烧坏。
从电路中可以看出,当开关K 向下与b 点相接时,二极管的负极接地,即Pl 端口输出呈现低电平,用0来表示,此时二极管因有电流通过而发光;当开关K 向上与a 点相接时,二极管的负极接电源+5V ,即Pl 端口输出呈现高电平,用1 来表示(此时的l 不是1V ,而是代表+5V ) ,此时二极管被截止,没有电流通过,也就不能发光。
所以,当Pl引脚为低电平O 时,灯会点亮;当P1引脚为高电平1时,灯会灭。0和1在端口的外部是表示电平的高低。
图3 Pl 端口等效电路
2.在单片机内部对寄存器而言,0 和1是表示二进制数
要想使输出端引脚呈现低电平或高电平,只需要向寄存器Pl 输入相应的二进制数0或1 即可。例如,通过使用单片机的MOV 指令(MOV 指令的功能是输送数据),把8 位二进制数00010010 送到特殊功能寄存器Pl 单元,程序为:MOV PI , #00010010B ,如图4 所示。0 所对应的引脚是低电平,发光二极管导通发光;1 所对应的引脚是高电平,发光二极管截止,灯灭。
图4 装入8 位二进制数
3.对连接的发光二极管来说,0 和1 表示灯亮与灭
这是指发光二极管按图1接法而言,不是绝对的。因大部分单片机电路都是按此接法,所以记住此规律对分析单片机电路是很有益的。
从上述可归纳出:0 和1 在寄存器内表示二进制的数;0 和1 在输出端口处表示电平的高低;O 和1 又代表灯亮与灭(导通与截止)。