可控流水灯
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8255A实现可控流水灯(已验证)
一、实验目的:
(1)掌握8255的工作方式及应用编程。
(2)掌握8255的典型应用电路接法。
二、实验设备:
8255A芯片,实验箱,PC机
三、实验内容:
编写程序使8255A的A口作为LED灯的输出,输入循环次数,实现8位LED 灯的相对循环显示。
四、实验原理:
INTEL8255是一种通用的可编程并行I/O接口芯片,是专为INTEL公司的微处理器设计的,也可用于其它系列的微型机系统中。利用8086汇编指令系统,编制初始化程序,可以变更8255 的工作方式,通用性强,使用灵活。8255具有3个带锁存或缓冲的数据端口,它的并行数据宽度为8位。可与外设并行进行数据交换。A口和B口内具有中断控制逻辑,在外设与CPU之间可用中断方式进行信息交换。 8255能与许多外部设备连接,例如:键盘、显示器、打印机等。
1、8255芯片特性
(1)一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口.
(2)具有24个可编程设置的I/O口,即使3组8位的I/O口为PA口,PB口和PC口.它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4~PC7),B 组包括B口及C口(低4位,PC0~PC3).A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O3种模式。
2、8255引脚功能
RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.
RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU 将数据或控制字写入8255。
D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据
总线传送。
PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。
PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。'
当A0=0,A1=0时,PA口被选择;
当A0=0,A1=1时,PB口被选择;
当A0=1,A1=0时,PC口被选择;
当A0=1.A1=1时,控制寄存器被选择;
五、实验电路:
218H~~~~21AH
P A0 PA1 PA2 PA3 P A4 PA5 PA6 PA7 CS
8255A
六、程序:
CODE SEGMENT
ASSUME CS:CODE
START: MOV AL,80H ;控制字,A口输出
MOV DX,21BH ;找到控制端口地址
OUT DX,AL
MOV DX,219H
IN AX,DX ;读入开关状态
PUSH AX
MOV AH,1 ;置循环次数
INT 21H
MOV AH,0
MOV BL,AL ;将循环次数放入BL
POP AX
NEXT1: MOV CX,0008H ;外层循环,8次
CONT: MOV DX,218H ;A口地址
OUT DX,AL ;写入A口
CALL DELAY ;调用延时程序
ROL AL,1 ;循环左移,点亮下一盏灯,前一盏灯熄灭
LOOP CONT
DEC BL ;循环次数减1
CMP BL,30H
JNZ NEXT1 ;BL不为0将继续循环
MOV AH,4CH ;返回DOS
INT 21H
DELAY PROC ;延时程序
PUSH CX
PUSH BX
MOV BX,0FFFH ;置外层循环数
NEXT: MOV CX,0FFFFH ;置内层循环数
W AIT1: LOOP W AIT1
DEC BX
JNZ NEXT
POP BX
POP CX
RET
DELAY ENDP
CODE ENDS
END START
七、流程图:
否
是
否
开始 8255初始化,写入控制字,使A 口输出 置外层循环数,放入BL 数据初始化,使第一盏灯点亮 置内层循环数 调用延时子程序 循环左移,使下一盏灯点亮,前一盏灯熄灭 写LED 口 CX 是否为0 外层循环数减1 外层循环是否为0 返回DOS 结束
八、实验收获与体会
在实验中提升了动手能力与创新能力,增强了自信心,使得在以后的学习中更加有动力,只有不断地摸索,才能达到比较理想的结果,达到试验预期。这种学习方式开阔了思维,提升了能力,很值得提倡。