您的当前位置:首页正文

微机原理与接口技术实验报告

2024-10-18 来源:威能网


微机原理与接口技术

实验报告书

学院:xxx

1

班级:xxx 学号:xxx 姓名:xxx 指导老师:xxx

目录

1 实验目的 ................................................ 3

2 实验器材 ................................................ 3

3 实验内容及要求..................................... 3

4 实验原理 ................................................ 4

2

5 编程提示 ................................................ 4

6 实验步骤 ................................................ 5

7 实验总结 .............................................. 11

实验:可编程计数/定时器(8253)扩展

一.实验目的

1.了解8253工作方式的特点和功能; 2.熟悉并掌握计数/定时器8253的编程方法; 3.熟悉并掌握中断控制器8259的编程方法; 4.掌握定时器中断初始化及编程方法。

3

二.实验器材

1.PC机;

2.PD32实验系统; 3.元器件:

计数/定时器8253; 中断控制器8259; 七段码显示器及驱动电路; PC总线。

三.实验内容及要求

试设计能实现电子钟功能的硬件线路和应用程序。 1.设计用8253实现电子钟,定时中断控制电子钟走时; 2.通过七段码显示器观察电子钟变化,时、分、秒在七段码显示器上从左到右各占2位;

3.电子钟的初始值可在实验环境下由外部送入:小时数放在内存4040H、分钟数放在内存4041H、秒钟数放在内存4042H内。

四.实验原理

利用8253定时产生中断,通过调整8253定时中断的时间即可精确调节电子钟的走时精确度。

4

五.编程提示

1.8253的端口地址为 地址控制口:30C H;; 计数器1:300H; 计数器2:304H; 计数器3:308H;

2.8259偶地址:3A0H,奇地址:3A8H; 3.对8253的编程分两部分: ⑴向控制字寄存器写入方式控制字;

⑵根据输入时钟频率向规定的通道写入计数值;

4.如果输入时间的初始值为BCD码,则应在时、分、秒值加1后进行DAA调整;

如果输入时间的初始值为二进制数,则应在拆字子程序中进行二进制到BCD的调整。

六.实验步骤

1.按实验要求设计实验硬件线路并连接该硬件线路; 2.编辑按实验要求设计的汇编语言源程序并汇编、连接成可执行文件;

源程序:

5

.486

DATA SEGMENT AT 0 USE16 ZDXL EQU 20H ;中断向量(20H) OPORT EQU 3A0H ;8259偶地址 JPORT EQU 3A8H ;8259奇地址 PORT1 EQU 340H ;段地址 PORT2 EQU 360H ;位地址 DS0 DSC COUNT

ORG DATA1 ORG DATA2 DATA

CODE BEG: TAB TIMER

START: INIT8253:

EQU 300H ;8253通道0 EQU 30CH ;8253控制口 EQU 50 ;延时、计数终值。50次乘以20毫秒;等于1秒。时钟3Mhz

4000H

DB 6 DUP(?) ;显示缓冲区 4040H

DB 3 DUP(?) ;时、分、秒暂存区 ENDS SEGMENT USE16

CS:CODE,DS:DATA,ES:DATA ORG 2000H CLI

JMP START DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,

DB 7FH,67H,77H,7CH,39H,5EH,79H,71H ;段码表

DB 0 ;延时、计数初值

MOV AX,DATA ;初始化 MOV DS,AX MOV AX,0 MOV SS,AX MOV SP,1000H MOV DATA2,01H MOV DATA2+1,58H MOV DATA2+2,04H MOV AL,0C0H MOV DX,PORT2 OUT DX,AL 6

ASSUME

MOV DX,DSC ;8253初始化,端口地址 MOV AL, 36H ;方式3,方波发生器 OUT DX,AL ;8053通道0地址 MOV DX,DS0 MOV AL,0BH ;先读/装入低字节 OUT DX,AL MOV AL,0E9H ;后读/装入高字节 OUT DX,AL

SETVECT:

MOV DI,0

MOV DX,OFFSET SERVER ;中断服务子程序偏移地址

;送中断向量低位

MOV ZDXL[DI],DX MOV DX,CS ;中断服务子程序段地址

;送中断向量高位

MOV ZDXL[DI+2],DX

INIT8259:

MOV AL,00010011B ;ICW1 MOV DX,OPORT OUT DX,AL

MOV AL,00001000B ;ICW2 MOV DX,JPORT OUT DX,AL

MOV AL,00001101B ;ICW4 MOV DX,JPORT OUT DX,AL

MOV AL,11111110B ;OCW1 MOV DX,JPORT OUT DX,AL MOV AL,20H ;EOI(20H) MOV DX,OPORT OUT DX,AL AGAIN:

STI ;开中断 CALL CZ ;调拆字 CALL DISP ;调显示 JMP AGAIN

CZ PROC

PUSH CX LEA SI,DATA2 ;拆字,取数 LEA DI,DATA1 ;显示缓冲区首址

7

CZ0:

MOV BL,[SI]

AND BL,0F0H MOV CL,4 ROL BL,CL MOV [DI],BL INC DI MOV BL,[SI] AND BL,0FH MOV [DI],BL

INC SI INC DI

CMP SI, 4042H

JBE CZ0 POP CX RET CZ ENDP

DISP PROC PUSH CX PUSH DX

LEA BX,TAB LEA SI,DATA1 MOV AH,0C1H DISP1:

MOV DX,PORT2 MOV AL,[SI] XLAT OUT DX,AL MOV CX,0200H LOOP $ INC SI SAL AH,1 OR AH,0C0H JNZ DISP1 POP DX POP CX RET DISP ENDP

;-------------------------------------- SERVER PROC CLI

PUSH AX PUSH CX

;显示子程序

;显示,取段码首址 ;显示缓冲区首址 ;位码最高位

;取显示数据 ;取段码 ;段输出 ;延时

;未完继续显示

;8253中断入口8

PUSH DX PUSH SI PUSH DI

LEA SI,TIMER MOV AL,[SI] INC AL CMP AL,50H JAE WORK MOV [SI],AL ;延时、计数值地址 ;取延时、计数值 ;延时、计数值加1

;与延时、计数值终值比较 ;大于、等于(到1秒)转移 ;存延时、计数值

WORK:

MINUTE:

HOURE:

NEXT:

JMP EXIT MOV AL,0 MOV [SI],AL LEA SI,DATA2+2 MOV AL,[SI] INC AL DAA CMP AL, 60H JAE MINUTE MOV [SI],AL

JMP EXIT MOV AL,0 MOV [SI],AL LEA SI,DATA2+1 MOV AL,[SI] INC AL DAA CMP AL,60H JAE HOURE MOV [SI],AL

JMP EXIT MOV AL,0 MOV [SI],AL LEA SI,DATA2 MOV AL,[SI] INC AL DAA CMP AL,24H JAE NEXT MOV [SI],AL JMP EXIT ;清延时、计数值 ;取秒数

;秒数加1 ;十进制调整 ;与60秒比较

;大于、等于(60秒)转移

;存秒数

;秒数清零

;取分数 ;分数加1 ;十进制调整 ;与60分比较

;大于、等于(60分)转移 ;存分数

;分数清零

;取小时数 ;小时数加1 ;十进制调整 ;与24小时比较

;大于、等于(24小时)转移 ;存小时数

9

MOV AL,0 MOV [SI],AL EXIT:

MOV AL,20H MOV DX,OPORT OUT DX,AL POP DI POP SI POP DX POP CX POP AX IRET SERVER ENDP

CODE ENDS END BEG

;小时数清零

3.调试、运行程序并检验、记录结果。

实验结果:

程序运行前在内存单元4040H、4041H、4042H中预置BCD 码形式的时、分、秒初值。程序连续运行后,七段码显示器上从左到右显示时、分、秒并能够进位。

程序流程框图:

中断服务子程序

开始 关中断 保护数据地址 延时、计数值加1 计数到1秒? Y 延时、计数值清零 10

主程序

开始 定义数据区: 时、分、秒数据区、 显示缓冲区、 字形代码表、 延时、计数初值、 延时、计数终值 初始化8255 初始化8253 N 秒计数值加1 开中断 等于60秒?

初始化8259 十进制调整 N 显示子程序

N N 恢复现场 中断返回

七.实验总结

通过实验,学会8253芯片和微机接口原理和方法,掌握8253定时器/计数器的基本工作原理、工作方式和编程原理,熟悉汇编代码的编写。实验中,连接电路,利用代码控制实验电路,加深对课本理论的理解。

11

因篇幅问题不能全部显示,请点此查看更多更全内容