1、实验的结果 所有灯全部不亮,然后我按下一个按钮,第()个灯亮了,再按下另一个按钮,第()个灯亮了,松开按钮灯就灭了。 2、原理及硬件设置 如下图: 我们只需要将4*4按键中的8个短路帽去掉7个,因为我们只使用一个按键。然后将此按键的脚使用双头连接线连接至负节点。发光二极管部分不用改动。和我们以前做流水灯试验一样 3、程序详解 先看一下从这个实验现象结合电路来分析一下程序。 MAIN: MOV P0,#0FFH LOOP: MOV A,P0 MOV P1,A LJMP LOOP 从硬件电路的连线可以看出,有一个按钮被接入到P0口。第一条指令的用途我们可以猜到:使P0口全部为高电平。第二条指令是MOV A,P0,其中 MOV已经见,是送数的意思,这条指令的意思就是将P0口的数送到A中去,我们可以把A(累加器)当成是一个中间单元,第三句话是将A中的数又送到P1口去,第四句话是循环,就是不断地重复这个过程,这我们已见过。当我们按下第一个按钮时,灯亮了,所以P1口应当输出是低电平,为什么P1口会输出低电平呢?我们看一下有什么被送到了P1口,只有从P0口进来的数送到A,又被送到了P1口,所以,肯定是P0口进来的数使得P1位输出电平的。P0口的P0.0位的按钮被按下,使得P0.0位的电平为低,通过程序,又使P1口输出低电平,所以P0口起来了一个输入的作用。这样,我们可以看到,以P字开头的管脚,不仅可以用作输出,还可以用作输入,其它的管脚是否可以呢?是的,都可以。这32个引脚就称之为并行口。
|