8253接口实验

一、实验目的:

1、掌握Proteus软件绘制原理图。
2、掌握Proteus软件的MASM32编译器编写汇编程序和调试。
3、掌握8253A可编程接口芯片的使用。

二、实验内容和实验原理图

1、用虚拟示波器观察8253A的输出波形
设8253A的时钟频率为100KHZ,设置8253A的计数器0为16位计数、方式3(方波发生器)、十进制计数、生成100HZ的方波;8253A的计数器1为16位计数、方式2(分频器)、十进制计数,分频系数取100。在8086芯片中编写汇编语言,注意将芯片开始的起始地址设置为10000H,此时代码才可以正常运行。
在这里插入图片描述

在这里插入图片描述

2、用8253定时/计数器控制8位LED循环移动
用8253A可编程定时/计数器作定时器,每隔1sLED向左循环移动1位。设8253A可编程定时/计数器输入时钟为100KHZ,设定时/计数器0的计数初值为100,工作在方式3,即方波发生器,其输出的1KHZ方波作定时/计数器2的时钟。定时/计数器2的初值设为1000,工作在方式0,即每隔1s计数结束产生中断,用此信号作为不可屏蔽中断的申请信号,在中断服务程序中设置每中断一次LED向左循环移动1位。在8086芯片中编写汇编语言,注意将芯片开始的起始地址设置为10000H,此时代码才可以正常运行。
在这里插入图片描述

三、实验步骤:

1、对于实验1,首先在proteus上面布置8253A芯片,然后,需要将芯片放置在原来的实验原理图上面,需要使用到8086芯片用作主控芯片。
2、在D0~D7布置总线,与8086连接,之后,分别连接左边下面的引脚,与前面的8086芯片连接起来。
3、在8253A芯片的时钟输出连接显示波形的示波器,将频率的情况显示出来,此外,在每个时钟的输入地方,要输入100KHZ的时钟信号。
4、对于实验2,首先在proteus上面布置8253A芯片,布置7427和74273,然后,需要将芯片放置在原来的实验原理图上面,需要使用到8086芯片用作主控芯片。
5、之后,参照布置2,连接各个引脚,同样输入时钟信号,并在OUT2连接中断信号。
6、在74273的Q0~Q7连接8个LED灯泡,以实现流水灯的效果图。

四、实验代码:

实验1代码:

.MODEL SMALL
.8086
.STACK
.CODE
.STARTUP
START:    
	MOV DX,406H   ;写入控制字寄存器
	MOV AL,00110111B  ;00计数器01116位,011方式31十进制
	OUT DX,AL
	MOV DX,400H   ;写计数器0
	MOV AL,00H   ;计数初值1000,先写低8位
	OUT DX,AL
	MOV AL,10H    ;后写高8位 
	OUT DX,AL
	MOV DX,406H   ;写入控制字寄存器
	MOV AL,01110101B  ;01计数器11116位,010方式21十进制
	OUT DX,AL
	MOV DX,402H   ;写计数器1
	MOV AL,00H   ;计数初值100,先写低8位
	OUT DX,AL
	MOV AL,01H    ;后写高8位 
	OUT DX,AL
	MOV AX, 4CH
    INT 21H
END 	

实验2代码:

.MODEL SMALL
.8086
.STACK
.CODE
.STARTUP
NMI_INIT:
    SUB AX,AX    ;清零AX
    MOV ES,AX    ;中断向量表段地址为0
    MOV AX,OFFSET  NIMI_SERVICE    ;获取NIMI_SERVICE的偏移地址
    MOV ES:008H,AX    ;008H为中断在中断向量表中的位置
    MOV AX,SEG  NIMI_SERVICE;获取NMI_SERVICE的段地址
    MOV ES:00AH,AX    
;计数器8253A初始化---两个计数器
	MOV AL,00110111B     ;计数器0  16位 方式3  十进制
	MOV DX,0406H      ;写入控制字
	OUT DX,AL
	MOV DX,0400H   ;计数器地址   16位
	MOV AL,00H    ;两次发送   100KHZ   100分频   1kHZ
	OUT DX,AL
	MOV AL,01H   ;高字节
	OUT DX,AL
	MOV AL,10110001B   ;计数器2  16位  方式3   十进制
	MOV DX,0406H
	OUT DX,AL
	MOV DX,0404H   ;16位   两次发送
	MOV AX, 00H    ;1KHZ   1000分频   1HZ
	OUT DX,AL
	MOV AL, 10H    ;高字节发送
	OUT DX,AL
	MOV BL,0FEH   ;LED初始状态
	MOV DX,0200H    ;273地址
	MOV AL,BL
	OUT DX,AL
	JMP $      ;等待中断
NMI_SERVICE:   ;不可屏蔽中断服务程序
	ROL BL,1   ;左循环移位1位   
	MOV AL,BL
	MOV DX,0200H      ;74273地址
	OUT DX,AL
	MOV DX,0404H   ;16位   两次发送
	MOV AL, 00H     ;1KHZ   1000分频   1HZ
	OUT DX,AL
	MOV AL, 10H    ;高字节发送
	OUT DX,AL
EXIT:
	IRET   ;中断返回指令
.DATA
END

五、实验结果:

实验1结果:
在下面的现象中,可以在Proteus软件中调用示波器看到,此时将会存在两个波形,上面的是频率为100HZ的方波,下面是一个频率为1000HZ的分频器。二者都是采用一定的分频系数,从100KHZ上面进行分频得到的波形,前者是1000的系数,后者是100的系数。
在这里插入图片描述
在这里插入图片描述
实验2结果:
在程序中加入中断服务程序之后,其主要实现灯的移位操作和重新装载计数器2的初值,因为在完成一次1s的计数之后,其初值会清除,需要重新装载。计数器2每到1s时,将会从中断服务程序返回,同时,灯也会向下移位一次,实现1s的流水灯。因此,在下面的现象中,能够看到灯的向下移位的速度是1s。
此外,掌握本例程的中断控制程序,将在以后的程序中有很大的作用,可以在中断中来设置计数器的初值,用于下一次的循环计数。

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jerry独爱电子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值