数的实验
一、 实验目的
该实验的目的在于掌握8255A和微机接口的连接方法,了解8255A的基本的工作原理和编程方法。
二、 实验内容
PC0口接拨动开关K0,PB口接8个LED。当拨动开关K0时,在LED中显示开关K0的拨动次数(拨动次数可按十六进制显示,也可以按BCD码显示)。比如拨动开关K0拨动了10次,按十六进制显示,则PB7-PB0=00001010。
三、 实验接线图
四、
五、 实验编程提示
要使K0表示一次有效的拨动,必须检测K0的电平从高电平变成低电平,又从低电平变回到高电平,只有这种变化,开关次数才能增加一次。
六、 实验步骤
1、 根据原理图正确连接实验线路(需要连接粗黑线)。 2、 正确理解实验原理。
3、 编写实验程序,并上机调试,观察实验结果。
七、 思考题
1、 在本实验的硬件电路中,对C口能使用按位置位/复位命令吗?为什么?
答:不能,此时的C口是输入端,置位或复位命令就PC0就不能做输入了,会导致实验出错
1
2、 可以用哪些方法获取PC0的开关状态?
答:令D7为1设置为工作方式,令D0等于1,此时PC(0—3)为输入
流程图
程序源码
.MODEL SMALL .386
CODE SEGMENT ASSUME CS:CODE START: MOV DX,233H
2
MOV AL,10000001B OUT DX,AL MOV BX,0000H MOV AX,0000H L1: MOV DX,232H IN AL,DX CMP AL,AH JZ L1 ADD BL,01H ;PC0读数据,PB输出数据
;无变化,再次检测 ;有变化,寄存器BL+1
MOV AH,AL CMP BL,02H JB L1 XOR BL,BL ADD BH,01H MOV AL,BH MOV DX,231H OUT DX,AL JMP L1 CODE ENDS END START
;BL清零
;将计数寄存器BH+1
3
接口作业2: 8255-2:利用8255A实现LED的流水点亮
实验
一、 实验目的
该实验的目的在于掌握8255A和微机接口的连接方法,了解8255A的基本的工作原理和编程方法。
二、 实验内容
PA口接8个拨动开关K0-K7,PB口接8个LED。初始由开关K0-K7设定8位不同的值,当执行程序后LED按K0-K7初始设定的值点亮,并向右流动(8255A工作在0方式)。
三、 实验接线图
四、
五、
实验编程提示
根据难易程度,学生可以选择完成下列两个程序之一:
1、 LED右流水仅仅取决于第1次开关的位置,一旦LED流水开始, LED流水的次序
将不再理睬开关位置的重新变化。
2、 在LED右流水中,如果开关的位置发生了变化,LED右流水从变化的位置重新开
始。
程序2的提示:程序要能检测到某个时间开关状态的变化,并针对变化后的开关状态右流水,因此程序中要有两个变量,一个存当前开关的状态以检测开关状态是否发生了变化,一个存LED右流水的状态,以便使LED连续右流动。为了使流水显示明显,每个位置应加延时程序。
六、 实验步骤
1、 根据原理图正确连接实验线路(需要连接红线)。
4
2、 正确理解实验原理。
3、 编写实验程序,并上机调试,观察实验结果。
七、 思考题
在本实验的硬件电路中,能使用C口对LED指示灯控制码?如果可以,请写出2种控制方法(编程方法)。 答:可以
首先需要将PA口的8个连线改接到PC口上,然后,第一种控制方法,可以使用正常的工作方式,即: MOV DX,233H MOV AL,10001001B OUT DX,AL MOV DX,232H IN AL,DX
第二种控制方法可以使用C口的置位与复位,就是将D7的值换为0,后面的D3,D2,D1的值与PC的口对应,编程方法与第一个类似。
5
流程图
程序源码
.MODEL SMALL .386
CODE SEGMENT ASSUME CS:CODE START: MOV DX,233H MOV AL,10010000B OUT DX,AL L1: MOV DX,230H IN AL,DX MOV AH,AL
6
L2: MOV DX,231H OUT DX,AL ROR AL,1 PUSH AX MOV DX,230H IN AL,DX CMP AH,AL JNZ L1 POP AX CALL DELAY JMP L2
DELAY: MOV CX,0FFFFH L3: PUSH CX POP CX PUSH CX POP CX
LOOP L3
RET CODE ENDS END START
7
因篇幅问题不能全部显示,请点此查看更多更全内容