资源描述
接口与通讯实验报告
1、8253定时/计数器实验
2、8255并行接口实验
3、数字式时钟(电子钟)
4、D/A(数/模)转换实验
5、A/D(模/数)转换实验
一. 实验目的与要求
1. 学会8253芯片和微机接口原理和方法。
2. 掌握8253定时器/计数器的工作方式和编程原理。
二.实验内容
1.实验原理
本实验原理图如图5-12所示,8253A的A0、A1接系统地址总线A0、A1,故8253A 有四个端口地址,如端口地址表5-2所示。8253A的片选地址为48H~ 4FH。 因此, 本实验仪中的8253A四个端口地址为48H、49H、4AH、4BH,分别对应通道0、通道1、通道2和控制字。采用8253A通道0,工作在方式3(方波发生器方式),输入时钟CLK0 为1MHZ, 输出OUTO 要求为1KHZ的方波,并要求用接在GATE0引脚上的导线是接地("0"电平)或甩空("1"电平)来观察GATE对计数器的控制作用,用示波器观察输出波形。
2、 实验线路连接
(1) 8253A芯片的CLK0引出插孔连分频输出插孔1MHZ。
(2) 8253A的GATE0接+5V。
3、 实验步骤
(1) 按图5-12连好实验线路
(2) 运行实验程序
在系统显示"DVCC- 86H"状态下,按任意键,系统显示命令提示符"-"。
按GO键,系统显示"1000 XX"
输入F000 : B290
再按EXEC键,显示"8253-1"
用示波器测量8253A的OUT0输出插孔,应有频率为1KHZ的方波输出。幅值0~5V。
三、实验程序,要求写注释。
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 ;将要显示的“8253--1”写入内存
CALL LEDDISP ;调用数码管扫描程序将”8253—-1显示出来
MOV DX,TCONTRO ;控制口地址送入DX中
MOV AL,0B4H ;置8253工作方式2的控制字
OUT DX,AL ;置入控制字
MOV DX,TCON2 ;使用通道2
MOV AL,00
OUT DX,AL ;写时间常数低8位
MOV AL,20H ;改变时间常数为2000H
OUT DX,AL ;写时间常数高8位
HLT
LEDDISP:MOV AL,90H ;显示数据方式命令字送8279控制
MOV DX,CONTPORT
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 ;初始化子程序
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
一、 实验目的与要求
1. 掌握8255A和微机接口方法。
2. 掌握8255A的工作方式和编程原理。
二、 实验内容
1、实验原理
如实验原理图5-8所示,PC口8位接8个开关K1~ K8,PB口8位接8个发光二极管,从PC口读入8位开关量送PB口显示。拨动K1~ K8,PB口上接的8个发光二极管L1~ L8对应显示K1~ K8的状态。
(a)工作方式控制字 (b)C口按位置位/复位控制字
2、实验线路连接
(1) 8255A芯片PC0~ PC7插孔依次接K1~ K8。
(2) 8255A芯片PB0~PB7插孔依次接L1 ~ L8。
(3) 8255A的CS插孔接译码输出070H-07FH插孔。
3、实验步骤
(1) 按图5-8连好线路。
(2) 运行实验程序。
在系统显示"DVCC-86H"状态下,按任意键,显示器显示"-"。按GO键,显示 "1000 XX"输入 F000 : B160再按EXEC键,在DVCC-8086H显示上显示器"8255-1",同时拨动K1~K8,L1~L8会跟着亮灭。
三、实验程序,要求写注释。
CODE SEGMENT
ASSUME CS:CODE
IOCONPT EQU 0073H ;8255控制端口地址
IOCPT EQU 0072H ;C口端口地址
IOBPT EQU 0071H ;B口端口地址
CONTPORT EQU 00DFH
DATAPORT EQU 00DEH ; 命令控制端口地址
DATA1 EQU 0500H ; 数据端口地址
START: JMP IOLED
IOLED: CALL FORMAT ;调用初始化程序子程序
CALL LEDDISP ;调用显示“8255-1”子程序
MOV AL,82H ;设置8255控制字,B,C口的输入输出方式对调了
MOV DX,IOCONPT
OUT DX,AL ; 写进控制字
NOP ; 不操作,延时作用
NOP
NOP
IOLED1: MOV DX,IOBPT ;读取PB口的值
IN AL,DX
MOV DX,IOCPT ;将PB口的值送PC口显示
OUT DX,AL
MOV CX,0FFFFH
DELAY: LOOP DELAY ;程序延迟循环模块
JMP IOLED1
LEDDISP:MOV AL,90H ;显示“8255-1”子程序
MOV DX,CONTPORT
OUT DX,AL
MOV BYTE PTR DS:[0600H],00
LED1: CMP BYTE PTR DS:[0600H],07H; 判断显示为数是否满8位
JA LED2; 是跳到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
一.实验目的与要求
1.学习8253编程定时/计数器的工作方式
2.掌握中断控制器8259A与微处理机接口的原理和方法
3.掌握中断控制器8259A的综合应用编程
二.实验内容
1.实验原理
用8253和8259现实数码管显示时钟。利用8253的定时器功能。8253有三个端口地址为48H,49H,4AH本实验采用8253的通道2,工作方式3(方波发生器方式)输入CLK2为1MHZ。先给8253的初值0C350H,循环记数。即一次记数完毕后,自动装入初值。输出OUT2作为8259的输入脉冲。8259有两个口地址,本实验为20H和21H,其中20H用来写ICW1,21H用来写ICW2、ICW4,本实验中8259为单片,边沿触发,采用3号中断源,即IR3和8259输出口OUT2相连,每过1/20秒接收到一个中断,向8259发出中断请求信号,如果电平信号不符合要求,则自动转到7号中断,显示“ERR”,CPU响应后,在中断处理程序中,对中断次数进行记数,记满20次,把时间缓冲区的时间加1,并将其输入到显示缓冲区,以便显示器显示更新后的时间。计数初值的计算:1/1000000*X=1/20,X=50000D=0C350H(用1MHZ信号产生1/20秒方波)。
2.实验线路连接
(1)8253A芯片的CLK2引出插孔连分频输出插孔1MHZ。
(2)8253A的GATE2接+5V。
(3)8259A的IR3插孔和8253的OUT2插孔相连。
3.程序流程框图
主程序 中断子程序
开始
调用显示00-00-00
写8253控制字
填8259中断向量表
8259初始化
开中断
等待中断
开始
中断次数=20
写时间缓冲区
调用显示缓冲区
结束
次数加1
中断返回
N
4.实验主要仪器设备和材料
PC机、DVCC-8086JH实验系统及连接导线。
5.实验方法、步骤及结果测试
(1)按图3—24连好线路。
(2)打开DVCC86H目录下的CLOCK子目录中的Eclock.asm。
(3)运行实验程序:
①按“调试”按钮(它包括‘编译’、‘联接’、‘传送’功能)。
②按“运行”按钮。
在DVCC-8086H显示上显示器"00—00—00",然后开始计时。
三、 实验程序,要求写注释。
CODE SEGMENT
ASSUME CS:CODE
INTPORT1 EQU 0020H ;8259口地址1,用来写ICW1
INTPORT2 EQU 0021H ;8259口地址2,用来写ICW2、ICW4
INTQ3 EQU INTERUPT3
INTQ7 EQU INTERUPT7
CONTPORT EQU 00DDH ;8279命令状态口地址
DATAPORT EQU 00DEH ;8279键盘显示数据口地址
DATA1 EQU 0500H ;错误信息显示缓冲区起始地址(0500H-0507H)
DATA2 EQU 0508H ;显示译码表起始地址(0508H-0517H)
DATA3 EQU 0518H ;初始状态显示缓冲区(0518H-051FH)
DATA4 EQU 0520H ;时间显示缓冲区起始地址(0520H-0527H)
DATA5 EQU 0528H ;存放已重新刷新数码管个数
DATA6 EQU 0529H ;存放1/20秒定时中断次数
DATA7 EQU 052AH ;存放时间的小时值
DATA8 EQU 052BH ;存放时间的分值
DATA9 EQU 052CH ;存放时间的秒值
DATA10 EQU 052EH ;待更新的显示区内的地址
ORG 1800H
START: JMP TINT1
TINT1: CALL FORMAT
CLD
MOV DX,004BH
MOV AL,0B6H
OUT DX,AL ;写8253控制字,通道2,方式3
MOV DX,004AH
MOV AL,50H
OUT DX,AL ;计数初值低8位
MOV AL,0C3H
OUT DX,AL ;计数初值高8位
MOV SI,DATA3
CALL LEDDISP
MOV AX,0H
MOV DS,AX
CALL WRINTVER
MOV AL,13H
MOV DX,INTPORT1
OUT DX,AL
MOV AL,08H
MOV DX,INTPORT2
OUT DX,AL
MOV AL,0BH
OUT DX,AL ;写中断控制字
MOV AL,0F7H
OUT DX,AL ;用IR2请求中断
WAITING: STI
JMP WAITING
WRINTVER: MOV AX,0H
MOV ES,AX
MOV DI,002CH ;中断矢量地址(IR3)
LEA AX,INTQ3
STOSW
MOV AX,CS
STOSW
MOV DI,003CH ;中断矢量地址(IR7)
LEA AX,INTQ7
STOSW
MOV AX,CS
STOSW
RET
INTERUPT3: CLI ;中断3服务程序
MOV AL,DS:[DATA6] ;DATA6存放1/20秒定时中断次数
INC AL
MOV DS:[DATA6],AL
CMP AL,14H ;判断是否满20次中断
JC PLAY
MOV BYTE PTR DS:[DATA6],00H ;否,清零中断次数
MOV SI,DATA4 ;指向时间显示缓冲区首地址
CALL LEDDISP ;数码管显示子程序
CALL NEWTIME ;本子程序段按十进制完成时、分、
CALL CONVERSALL ;本程序段将秒、分、时值进行显示译码
PLAY: MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
STI
IRET
INTERUPT7: CLI
MOV SI,DATA1
CALL LEDDISP
MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
IRET
LEDDISP: MOV AL,90H ;数码管显示子程序
MOV DX,CONTPORT
OUT DX,AL
MOV BYTE PTR DS:[DATA5],00H ;存放已重新刷新数码管个
LED1: CMP BYTE PTR DS:[DATA5],07H ;判断是否已刷新8个数码
JA LED2 ;是,退出本数码管
MOV BL,DS:[DATA5] ;否,刷新本数码管
MOV BH,0H
MOV AL,CS:[BX+SI] ;未满8位从数据区取数送
MOV DX,DATAPORT
OUT DX,AL
ADD BYTE PTR DS:[DATA5],01H ;显示位数加1
JNZ LED1
LED2: RET
FORMAT: MOV BX,0
MOV WORD PTR DS:[BX+DATA1],5050H ;显示错误“rr”
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],0079H ;显示错误“E”
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],0000H
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],0000H
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],063FH ;显示“10 ”
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],4F5BH ;显示“32 ”
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],6D66H ;显示“54 ”
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],077DH ;显示“76”
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],6F7FH ;显示“98 ”
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],7C77H ;显示“BA ”
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],5E39H ;显示“DC ”
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],7179H ;显示“FE ”
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],3F3FH ;显示“00 ”
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],3F40H ;显示“0— ”
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],403FH ;显示“—0 ”
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],3F3FH ;显示“00 ”
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],3F3FH
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],3F40H
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],403FH
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],3F3FH
MOV BYTE PTR DS:[DATA6],00D
MOV BYTE PTR DS:[DATA7],00D
MOV BYTE PTR DS:[DATA8],00D
MOV BYTE PTR DS:[DATA9],00D
MOV WORD PTR DS:[DATA10],DATA4
RET
CONVERS1: MOV BH,0H
AND AL,0FH
MOV BL,AL
MOV AL,CS:[BX+DATA2]
RET
CONVERS2: PUSH AX
CALL CONVERS1
MOV BX,WORD PTR DS:[DATA10]
MOV DS:[BX],AL
ADD WORD PTR DS:[DATA10],01H
POP AX
PUSH CX
MOV CL,4H
SHR AL,CL
POP CX
CALL CONVERS1
MOV BX,WORD PTR DS:[DATA10]
MOV DS:[BX],AL
RET
CONVERSALL: MOV AL,BYTE PTR DS:[DATA9]
CALL CONVERS2
ADD WORD PTR DS:[DATA10],02H
MOV AL,BYTE PTR DS:[DATA8]
CALL CONVERS2
ADD WORD PTR DS:[DATA10],02H
MOV AL,BYTE PTR DS:[DATA7]
CALL CONVERS2
MOV WORD PTR DS:[DATA10],DATA4
RET
NEWTIME: CMP BYTE PTR DS:[DATA9],59H
JC ADD1
MOV BYTE PTR DS:[DATA9],0D
CMP BYTE PTR DS:[DATA8],59H
JC ADD2
MOV BYTE PTR DS:[DATA8],0D
CMP BYTE PTR DS:[DATA7],23H
JC ADD3
MOV BYTE PTR DS:[DATA7],0D
JMP OK
ADD1: MOV AL,BYTE PTR DS:[DATA9]
ADD AL,1D
DAA
MOV BYTE PTR DS:[DATA9],AL
JMP OK
ADD2: MOV AL,BYTE PTR DS:[DATA8]
ADD AL,1D
DAA
MOV BYTE PTR DS:[DATA8],AL
JMP OK
ADD3: MOV AL,BYTE PTR DS:[DATA7]
ADD AL,1D
DAA
MOV BYTE PTR DS:[DATA7],AL
OK: RET
CODE ENDS
END START
四.实验体会
本实验使自己对中断的概念认识更深了,首先这次实验程序实现先保存好环境,设置中断开中断,进入中断处理程序,关中断,恢复现场等。实验中使用的8259为单片,边沿触发,采用3号中断源,即IR3和8259输出口OUT2相连,每过1/20秒接收到一个中断,向8259发出中断请求信号,如果电平信号不符合要求,则自动转到7号中断,显示“ERR”,CPU响应后,在中断处理程序中,对中断次数进行记数,记满20次,把时间缓冲区的时间加1,并将其输入到显示缓冲区,以便显示器显示更新后的时间。总的来说,这次实验让自己体会了,硬件在实现需求功能上和软件很不一样,软件重视的处理数据的算法而硬件则更强调命令和硬件特性的逻辑性。
一、 实验目的与要求
进一步掌握数/模转换的基本原理。
二、 实验内容
1.实验原理
实验原理如图 5-5所示,由于DAC0832有数据锁存器、选片、读、写控制信号线,故可与 8088CPU 总线直接接口。图中是只有一路模拟量输出, 且为单极型电压输出。DAC0832工作于单缓冲方式,它的ILE接+5V,/CS和/XFER相接后作为0832芯片的片选0832CS。这样, 对DAC0832执行一次写操作就把一个数据直接写入DAC寄存器、模拟量输出随之而变化。
2.实验线路的连接
将D/A片选信号DACS插孔和译码输出070H-07FH插孔相连。
3.实验要求
(1)本实验要求在Aout端输出方波信号。根据Vout= —(VREF(输入数字量的十进制数))/256,即可知道,只要将数字量0-256(00H-FFH)从0开始逐渐加1递增至256为止,不断循环,在AOUT端就会输出连续不断的锯齿波。
(2)、根据要求改写锯齿波程序
将锯齿波变成三角波。
4.实验软件框图:
5.实验主要仪器设备和材料
PC机、DVCC-8086JH实验系统及连接导线。
6.实验方法、步骤及结果测试
(1)根据实验原理图正确连接好实验线路
(2)正确理解实验原理
(3) 实验步骤:
a:按“调试”按钮(它包括‘编译’、‘联接’、‘传送’功能)。
b:选“窗口”下拉菜单里的“进入示波器窗口”(这是模拟示波器)然后将其最小化。
c:按“运行”按钮。
d :将模拟示波器窗口打开,选择“串行口2”,再按“Ctrl+F2开关”即可看到波形。
在DVCC-8086JH数码管上显示“0832-2”,用真示波器测量DAC0832下AOUT插孔,应有锯齿波输出。
e:根据要求改写锯齿波程序
将锯齿波变成三角波
三. 实验程序,要求写注释。
(以下是以最高点0FFH,最低点00H,的三角波程序)
CODE SEGMENT
ASSUME CS:CODE //初始化一些常量值
DAPORT EQU 0070H //0832数据口地址
CONTPORT EQU 00DFH //8279命令控制口地址
DATAPORT EQU 00DEH //8279数据口地址
DATA EQU 0500H
//------------------------------------------------------------------------
START: JMP DACONTORL
DACONTORL:CALL FORMAT
展开阅读全文