实验题目 8253定时/计数器实验
一、实验目的与要求:
1. 学会8253芯片和微机接口原理和方法。
2. 掌握8253定时器/计数器的工作方式和编程原理。 二、实验内容:
1、实验原理
本实验原理图如图1所示,8253A的A0、A1接系统地址总线A0、A1,故8253A 有四个端口地址,如端口地址表1所示。8253A的片选地址为48H~ 4FH。 因此, 本实验仪中的8253A四个端口地址为48H、49H、4AH、4BH,分别对应通道0、通道1、通道2和控制字。采用8253A通道0,工作在方式3(方波发生器方式),输入时钟CLK0 为1MHZ, 输出OUTO 要求为1KHZ的方波,并要求用接在GATE0引脚上的导线是接地(\电平)或甩空(\电平)来观察GATE对计数器的控制作用,用示波器观察输出波形。
2、 实验线路连接
(1) 8253A芯片的CLK0引出插孔连分频输出插孔1MHZ。 (2) 8253A的GATE0接+5V。 3、 实验步骤
(1) 按图1连好实验线路 (2) 运行实验程序
1.按“调试”按钮 2。选“窗口”“进入示波器窗口”,然后最小化 3.按“运行按钮”
4.将模拟示波器窗口打开,选择“串行口2”,再按
ctrl+F2 按钮即可看到波形 图1
显示“8253-1”用示波器测量8253A的OUT2输出插孔,应有频率为1KHZ的 方波输出,幅值0~4V 三 、实验代码:
CODE SEGMENT ASSUME CS:CODE
TCONTRO EQU 004BH TCON2 EQU 004AH CONTPORT EQU 00DFH DATAPORT EQU 00DEH DATA1 EQU 0500H START: JMP TCONT
TCONT: CALL FORMAT CALL LEDDISP MOV DX,TCONTRO
1
MOV AL,0B6H ;要使用方式2,0B6H要改为0B4H OUT DX,AL MOV DX,TCON2 MOV AL,00 ;输入频率(即时间常数)
OUT DX,AL ;要修改频率,只需更改送给AL的值(注意先送低8位,
MOV AL,10H ;后送高8位) OUT DX,AL HLT
LEDDISP:MOV AL,90H ;显示数据方式命令字送8279控制字 MOV DX,CONTPORT ;8279命令状态口 OUT DX,AL MOV BYTE PTR DS:[0600H],00 ;置显示位数初值为0
LED1: CMP BYTE PTR DS:[0600H],07H ;判断显示位数满8为否? JA LED2 ;满8位转子程序返回 MOV BL,DS:[0600H] ;未满8位从数据区取数 MOV BH,0H MOV AL,CS:[BX+DATA1] MOV DX,DATAPORT ;8279数据口 OUT DX,AL ADD BYTE PTR DS:[0600H],01H ;显示位数加1 JNZ LED1 LED2: RET ;子程序返回 FORMAT: MOV BX,0 ;显示8253---1 MOV WORD PTR DS:[BX+0500H],4006H ADD BX,2 MOV WORD PTR DS:[BX+0500H],4040H ADD BX,2 MOV WORD PTR DS:[BX+0500H],6D4FH ADD BX,2 MOV WORD PTR DS:[BX+0500H],7F5BH RET CODE ENDS END START 四、思考题
若改用方式2,并改变时间常数,如何编写程序。 答:
,若使用方式2,根据8253控制字原理,控制字必须设置为B4H,相应的修改在代码中在上述代码中,修改时间常数的方法也在程序中注明。
2
实验题目 8255并行接口实验
一、实验目的与要求
1. 掌握8255A和微机接口方法。 2. 掌握8255A的工作方式和编程原理 二、实验内容 1、实验原理
如实验原理图1所示,PC口8位接8个开关K1~ K8,PB口8位接8个发光二极管,从PC口读入8位开关量送PB口显示。拨动K1~ K8,PB口上接的8个发光二极管L1~ L8对应显示K1~ K8的状态。 2、实验线路连接
(1)8255A芯片PC0~ PC7插孔依次接K1~ K8。 (2)8255A芯片PB0~PB7插孔依次接L1 ~ L8。
(3)8255A的CS插孔接译码输出070H-07FH插孔。 3.实验主要仪器设备和材料
PC机、DVCC-8086JH实验系统及连接导线 4、实验步骤
(1) 按图1连好线路。
(2) 运行实验程序。1。按“调试”按钮
2.按“运行”按钮 在DVCC-8086JH数码管上显示“8255-1”,同时拨动K1~K8,L1~L8会跟着亮灭 三、实验程序
CODE SEGMENT ASSUME CS:CODE IOCONPT EQU 0073H IOCPT EQU 0072H IOBPT EQU 0071H CONTPORT EQU 00DFH
3
DATAPORT EQU 00DEH DATA1 EQU 0500H START: JMP IOLED IOLED: CALL FORMAT CALL LEDDISP MOV AL,89H MOV DX,IOCONPT OUT DX,AL NOP NOP NOP
IOLED1: MOV DX,IOCPT IN AL,DX MOV DX,IOBPT OUT DX,AL MOV CX,0FFFFH DELAY: LOOP DELAY JMP IOLED1
LEDDISP:MOV AL,90H MOV DX,CONTPORT OUT DX,AL MOV BYTE PTR DS:[0600H],00 LED1: CMP BYTE PTR DS:[0600H],07H JA LED2 MOV BL,DS:[0600H] MOV BH,0H MOV AL,CS:[BX+DATA1] MOV DX,DATAPORT OUT DX,AL ADD BYTE PTR DS:[0600H],01H JNZ LED1 LED2: RET
FORMAT: MOV BX,0 MOV WORD PTR DS:[BX+0500H],4006H ADD BX,2 MOV WORD PTR DS:[BX+0500H],4040H ADD BX,2 MOV WORD PTR DS:[BX+0500H],6D6DH ADD BX,2 MOV WORD PTR DS:[BX+0500H],7F5BH RET CODE ENDS END START
4
四、思考题
试将B口与C口的功能对调(连线对调),如何编写程序 答:
把IOLED段的89H改为82H,把IOLED1段中的IOCPT和IOBPT对换。82H(1000 0010)表示用B口输入,C口输出,均使用方式0.IOCPT和IOBPT分别对应B、C口的地址。
程序代码如下: CODE SEGMENT ASSUME CS:CODE
TCONTRO EQU 004BH TCON2 EQU 004AH CONTPORT EQU 00DFH DATAPORT EQU 00DEH DATA1 EQU 0500H START: JMP TCONT TCONT: CALL FORMAT CALL LEDDISP
MOV DX,TCONTRO ;将控制口地址给DX
MOV AL,10110101B ;选通道二,先写低字节,后高字节,方式2,数字控制用BCD码 OUT DX,AL ;写控制字
MOV DX,TCON2 ;计数器二的地址给DX MOV AX,10D ;计数初值为10(十进制) OUT DX,AL ;写低字节 MOV AL,AH
OUT DX,AL ;写高字节 HLT ;停机 LEDDISP:MOV AL,90H MOV DX,CONTPORT OUT DX,AL MOV BYTE PTR DS:[0600H],00
LED1: CMP BYTE PTR DS:[0600H],07H JA LED2 MOV BL,DS:[0600H] MOV BH,0H MOV AL,CS:[BX+DATA1] MOV DX,DATAPORT OUT DX,AL ADD BYTE PTR DS:[0600H],01H JNZ LED1 LED2: RET
FORMAT: MOV BX,0 MOV WORD PTR DS:[BX+0500H],4006H ADD BX,2 MOV WORD PTR DS:[BX+0500H],4040H ADD BX,2
5