预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共12页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

浙江工业大学计算机学院 实验报告一 实验名称8253实验 教师雷艳静 日期 一、实验内容与要求 1.1实验内容 (1)计数器0方式2实验 将计数器0设置为方式2,计数器初值为任意数(二进制8位,实验中我们是24),将计数初值通过编程实现逐个的输出显示在屏幕上,而编程当中字符是ASCII码,我们要将其转换成十进制输出显示。手动开关输入单脉冲,通过编程计数初值就可以显示了,而且每输入一次单脉冲计数初值就减1。 (2)计数器方式3 将计数器0、计数器1分别设置为方式3,计数初值设为1000。实际上就是实现了8253的分频实验。实验内容相对简单,我们分别设置计数初值为16位,分两次读写,计数器0、计数器1工作于方式3,再用二进制格式计数,因为方式3的功能即为周期性输出方波,随着方波周期性的变化,引起电流的变化,实验中LED灯的闪烁变化就可以体现计数器0、计数器1分别写入时8253分频功能。 1.2实验要求 (1)实验效果:程序执行后应该在屏幕上显示出我们事先在程序里写好的计数初值,手动每按一次单脉冲开关,计数初值就在屏幕上减1显示一次,而且显示的是十进制数。 (2)实验效果:程序执行后我们可以观察事先在硬件上连接的好LED灯,LED灯一闪一灭变化。 二、实验原理与硬件连线 2.1实验原理 TPC-USB平台上有一块8253定时/计数芯片,除了片选引脚,其他信号都已接好。 可编程的定时/计数器8253在硬件组成、外形引脚上都是兼容的。8253的内部有6个模块:数据总线缓冲、读/写控制逻辑、控制字寄存器和3个结构相同且完全独立的计数器。①数据缓冲器:是8253与系统数据总线连接的接口电路,它能寄存3个数据:CPU向8253写入工作方式的命令字;CPU向计数寄存器写入的计数初值;从计数器读出的当前计数值。②读/写控制逻辑:用来接收CPU发出的读/写信号、片选信号和内部端口地址信号,选择读出或写入寄存器,并且确定数据传输的方向。③控制字寄存器:用来暂存CPU送来的控制字,用来选择计数器并确定该计数器的工作方式、读写格式和计数的数制。④计数器0~2:计数器的操作是相互独立的,每个计数器包含一个16位减1计数单元、16位计数初值寄存器和16位输出锁存器。计数器工作之前,首先要向计数器装入计数初值,这个计数初值存放在初值寄存器中,然后送到减1计数单元。当允许计数条件满足后,在时钟脉冲CLK的作用下,开始进行减1计数直至计数值减到0,由OUT输出结束信号,输出信号的波形由工作方式决定。 (1)计数器工作之前,首先要向计数器装入计数初值,这个计数初值存放在初值寄存器中,然后送到减1计数单元。当允许计数条件满足后,在时钟脉冲CLK的作用下,开始进行减1计数直至计数值减到0,由OUT输出结束信号,输出信号的波形由工作方式决定。而方式2周期性输出负脉冲。在实验中我们设定计数器0计数初值,程序执行中这个计数初值保证了不会变化,再通过编程将字符读出,这时手动开关输入单脉冲,计数初值逐个输出在屏幕上,不断输入单脉冲,计数初值不断减1输出。 (2)设置计数器0、计数器1分别工作在方式3,计数初值相同,其实两个计数器执行的操作相同,功能也相同,它们的联合计数实现了LED灯的亮灭变化,也就是实现了分频的功能。 2.2硬件连线 (1)实验中需要设置8253的计数器和工作方式,把方式控制字、计数初值送端口,所以8253的CS端应连接280H,工作方式2应送CLK负脉冲到8253芯片,GATE连接高电平允许计数,OUT输出端连接逻辑电平开关。硬件连接图如图2.1: 图2.1 (2)和实验(1)一样,要连接8253芯片的端口CS,因为这里有两个计数器:计数器0和计数器1,所以分别有两个GATE连接高电平允许计数,计数器1OUT输出端连接LED灯,观察其变化,计数器0OUT输出端连计数器1CLK时钟负脉冲,计数器0连1MHz。硬件连接图如图2.2: 图2.2 三、设计思路、步骤和程序流程图 3.1设计思路 (1)实验一 ①首先设置8253为计数器0,工作方式为2,即14H,方式控制字送控制口a283H。然后将计数初值送端口b保存。 ②读出端口280H的计数初值,计数初值是8位数据。 ③因为输入的计数初值是两位十进制数字,输出时要逐个输出,也就是要先输出计数初值中的2,再输出4,这样的输出方式是用除法除10取商再取余实现的。所以代码的设计思路是先将被除数10放在CL中,除法之后将商放在CX中,余数放在AL中。 ④因为程序进行除法计算时二进制进行计算,所以计算得到的是商和余数的ASCII码,所以要将它们的ASCII码进行一个转化操作,即程序中的需要调用的子程序PRINT,然后将转化后的数送DL寄存器,调用INT21H的2号功能,将DL寄存器中的字符在屏幕上显示出来。 ⑤如果