logo资料库

利用8255A实现LED的流水点亮实验.docx

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
实验二、利用 8255A 实现 LED 的流水点亮实验 一、 实验目的 该实验的目的在于让学生掌握 8255A 和微机接口的连接方法,了解 8255A 的基本的工 作原理和编程方法。 二、 实验内容 PA 口接 8 个拨动开关 K1-K8,PB 口接 8 个 LED。初始由开关 K1-K8 设定 8 位不同的 值,当执行程序后 LED 按 K1-K8 初始设定的值点亮,并向右流动(8255A 工作在 0 方式)。 选择完成在数码管上显示“8255-A”。 三、 实验接线图 四、 实验设计 图 1-3 实验连线图 开始 初始化 8255A 的命令寄存器 读入开关数据,存入 AH
读输出信号,存入 BL 再次读入开关数据,存入 AL 比较 AH 与 AL, 判断开关是否有变 化 Y 调用延时程序 循环右移 N 五、实验结果截图与分析 Led 灯走马形式亮: 定义 8255 命令口地址,并设置控制字 1001 0000B,送寄存器 AL 中。特征位 D7=1,打入方式字命令;D6、D5=00,A 口为 0 方式;D4=1,A 口用于输入开 关信号,D3=0,C 口既不用于输入也不用于输出,可以设置为 1 或 0;D2=0, B 口也在 0 方式工作;D1=0,B 端口输出信号使得 led 灯亮;D0=0,C 口不用, 可为 0 或 1. A 口为输入的开关信号,首先读 A 口,存入 AH;B 口为输出信号,再读 B 口, 存入 BL,然后再读 A 口,存入 AL,将 AH 与 AL 进行比较,判断开关是否有变 化,无变化则继续循环右移,循环结束,读 B 口信号,亮灯调用延时程序, 然后再跳到判断开关是否变化处进行。
将 8255—A 的 16 进制码存入 ledcode 中,程序中利用循环不断增加位码来 实现数码管的逐个显示 六、 实验体会 通过实验,更能体会感受 8255A 和微机接口的连接方法,了解了 8255A 的基本的工作原理 和编程方法。 七、 思考题 在本实验的硬件电路中,能使用 C 口对 LED 指示灯控制码?如果可以写出 2 种控制方 法(编程方法)。 可以用 C 口对 LED 指示灯控制 mov dx,202h ;将 dx 赋值 202h,使得 c 口读入数据: In al,dx mov dx,201h ;将 dx 赋值 201h,使得 B 口输出数据: out dx,al mov cx,3fffh ;循环指令,使得程序能循环执行:设置循环次数 doit:ror bl,1;这里采用不带进位的循环右移 call delay ;延时程序:为了使得实验效果更明显,每执行一次循环都调用延时程序 delay proc push cx push bx
cx,0fh mov d22: mov bx,0ffffh dl1: dec bx cmp bx,0h jnz dl1 dec cx cmp bx,0h jnz d22 pop bx pop cx ret delay endp, SEGMENT AX,DATA DS,AX DX,203H AL,90H DX,AL BL,0 DX,200H AL,DX AH,AL DX,201H DX,AL BL,AL ;命令口地址 ;置位命令 ;送到命令口 实验代码:(LED 按 K1-K8 初始设定的值点亮,并向右流动(8255A 工作在 0 方式)。) MODEL SMALL .386 DATA SEGMENT DATA ENDS CODE ASSUME CS:CODE,DS:DATA START: MOV MOV MOV MOV OUT MOV L1: MOV IN MOV MOV OUT MOV CHECK: MOV IN CMP JNE ROR MOV MOV OUT CALL ;检测开关状态 ;无变化则继续循环 ;循环右移 AL,AH L1 BL,1 AL,BL DX,201H DX,AL DELAY DX,200H AL,DX ;读 A 口 ;输出到 B 口 ;延时程序
CHECK CX,0FFFFH JMP DELAY: MOV L2: LOOP L2 RET CODE ENDS END START 实验代码:(在数码管上显示“8255-A”) code segment assume cs:code start: mov dx,203h mov al,10001001b out dx,al xor ax,ax mov bl,0 lop: mov dx,202h in al,dx cmp al,ah jz next mov ah,al mov bl,ah rol bl,1 next: ror bl,1 mov al,bl mov dx,201h out dx,al mov cx,3fffh doit: mov dx,211h mov al,00000000b out dx,al mov dx,210h mov al,7fh out dx,al mov dx,211h mov al,00100000b out dx,al ;2
mov dx,211h mov al,00000000b out dx,al mov dx,210h mov al,5bh out dx,al mov dx,211h mov al,00010000b out dx,al mov dx,211h mov al,00000000b out dx,al mov dx,210h mov al,6dh out dx,al mov dx,211h mov al,00001000b out dx,al ;5 ;5 mov dx,211h mov al,00000000b out dx,al mov dx,210h mov al,6dh out dx,al mov dx,211h mov al,00000100b out dx,al ;- mov dx,211h mov al,00000000b out dx,al mov dx,210h mov al,40h out dx,al mov dx,211h mov al,00000010b out dx,al mov dx,211h mov al,00000000b out dx,al mov dx,210h ;A
mov al,77h out dx,al mov dx,211h mov al,00000001b out dx,al loop doit jmp lop codeends end start 该延时程序循环技术,当 cx,bx 寄存器内容分别减少到 0 的时候退出延时程序。
分享到:
收藏