-/
图4.3 8254定时应用实验接线图
(3)运行实验程序,用示波器测试OUT0输出,验证程序功能。 实验程序清单
A8254 EQU 06C0H B8254 EQU 06C2H C8254 EQU 06C4H CON8254 EQU 06C6H SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS CODE SEGMENT
ASSUME CS:CODE
START:MOV DX,CON8254
;8254控制字,计数器0,方式3
MOV AL,____37h____ OUT DX,AL MOV DX,A8254
MOV AL,___63h_____ OUT DX,AL MOV AL,____09h____ OUT DX,AL
AA1: JMP AA1 CODE ENDS END START
;给计数器0送初值
六、思考题
1、在将计数初值赋给8254后,马上就可以启动并进行定时或计数吗?
答:不是,计数的开始还得看门控信号,在写入初值后若门控信号有效(软件触发为高电平有效,硬件触发为上升沿有效)则开始计数,否则等待有效门控信号的到来才开始计数
-/
2、若CLK0输入1.925MHz的时钟,能否在OUT0实现输出30ms的定时脉冲? 答:30*1925=57750<65535 所以用二进制写初值方式可以实现,若用十进制方式写初值则不能实现(十进制最大计数初值为0,即10000)
实验四 8255并行接口实验
一、实验目的
1、学习并掌握8255的工作方式及其应用;
2、掌握8255典型应用电路的接法。
二、实验设备
PC机一台,TD-PITE实验装置一套。 三、实验内容
1、基本输入输出实验。
本实验系统中,8255的端口地址分别为0640H,0642H,0644H以及0646H。编写程序,使8255的A口为输入,接拨动开关,B口为输出,接发光二极管;要求只要开关拨动,发光二极管的显示就发生相应改变。
2、流水灯显示实验。
编写程序,使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。
四、实验原理
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口
之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A, B, C三个并行接口,用+5 V单电源供电,能在以下三种方式下工作:方式0——基本输入/输出方式、方式1——选通输入/输出方式、方式2——双向选通工作方式。8255的内部结构及引脚如图5-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图5-2所示。
图5.1 8255内部结构及外部引脚图
-/
五、实验步骤
1、基本输入输出实验
本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。
图5.2 8255控制字格式
用一组开关信号接入端口A,端口B输出线接至一组发光二极管上,然后通过对8255芯片编程来实现输入输出功能。具体实验步骤如下述: (1) 实验接线图如图5-3所示,按图连接实验线路图; (2) 编写实验程序,经编译、连接无误后装入系统;
(3) 运行程序,改变拨动开关,同时观察LED显示,验证程序功能。
图5-3 8255基本输入输出实验接线图
实验程序清单
SSTACK SEGMENT STACK DW 32 DUP (?) SSTACK ENDS
CODE SEGMENT ASSUME CS:CODE
-/
START: MOV DX,0646H
MOV AL,_____90h_____ OUT DX,AL
AA1: MOV DX,0640H
IN AL,DX CALL DELAY MOV DX,0642H OUT DX,AL JMP AA1
;延时子程序
DELAY: PUSH CX
MOV CX,0F00H
AA2: PUSH AX
POP AX LOOP AA2 POP CX RET
CODE ENDS
END START 2、流水灯显示实验
;8255的工作方式控制字
使8255的A口和B口均为输出,数据灯D7?DO由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。实验接线图如图5-5所示。实验步骤如下所述: (1) 按图5-5连接实验线路图;
(2) 编写实验程序,经编译、链接无误后装入系统; (3) 运行程序,观察LED灯的显示,验证程序功能; (4) 自己改变流水灯的方式,编写程序。
图5-5 8255流水灯实验接线图
实验程序清单
SSTACK SEGMENT STACK DW 32 DUP (?) SSTACK ENDS
-/
CODE SEGMENT ASSUME CS:CODE Start:mov dx.0646h Mov al,80h Out dx,al
Mov bx,0180h Aa1:mov dx,0640h Mov al,bl Out dx,al Call delay Mov dx,0642h Mov al,bh Out dx,al Call delay Ror bl,1 Rol,bh,1 Jmp aa1
DELAY: PUSH CX
MOV CX,0F00H
AA2: PUSH AX
POP AX LOOP AA2 POP CX RET
CODE ENDS
END START