8086汇编程序:8254定时器/计数器实验

发布时间:2023年12月22日

实验目的

1.学会8254芯片和微机接口原理和方法

2.掌握8254定时器计数器的工作方式和编程原理

实验内容

1、在Proteus中设计一个简单计件系统,用一个脉冲信号代表一个事件,当计数到100时,通过扬声器发音,通知操作员。

2、计数器0用来统计事件数量,工作于方式0,计数初值是100,时钟信号CLKO接2Hz。

3、计数器 1用来驱动扬声器发生,产生500Hz的发音频率,工作于方式3。时钟信号 CLK1接1MHz,计数初值是:1000000/500=2000。

4、计数器0在开始执行程序时就开始工作,即门控信号GATEO一直有效。计数器1是计数器0结束计数后开始工作,因此刚好用CLKO产生的高电平接到计数器1的门控信号GATE1上。

8253控制字:

D7

D6

D5

D4

D3

D2

D1

D0

SC1

SC0

RL1

RL0

M2

M1

M0

BCD

选择通道

读写操作

工作方式选择

十进制

实验步骤

1、硬件线路连接

在Proteus软件中绘制硬件电路图。8254A片上地址:计数器0地址为78H、计数器1地址为7AH、计数器2地址为7CH、控制端口地址为7EH。

2、软件程序编写

用emu8086软件编写汇编语言程序,保存成*.asm源程序,编译生成.exe可执行文件。

3、在Proteus中双击8086CPU,加载.exe可执行文件。

4、单步执行程序,查看每一条指令的运行结果。

程序代码

ASSUME CS:CODE
PORT_Timer0  EQU 78H
PORT_Timer1  EQU 7AH
PORT_Timer2  EQU 7CH
PORT_control EQU 7EH

CODE SEGMENT
START:
	;Timer0
	MOV AL, 00010000B	;10H
	OUT PORT_control, AL;定时器0控制字 
	MOV AL, 10  		;定时器0初值
    OUT PORT_Timer0, AL
    ;Timer1
	MOV AL, 01110110B	;76H
	OUT PORT_control, AL	;定时器1控制字
	MOV AX, 2000;定时器1初值
	OUT PORT_Timer1, AL	;写低8位
	MOV AL, AH			;高字节赋值给低四位
	OUT PORT_Timer1, AL	;写高8位
	;MOV CX, 70
T:	JMP T;循环
	MOV AH, 4CH
	INT 21H
CODE ENDS
END START

运行结果:

示波器可以看到有脉冲,并且蜂鸣器也会鸣叫

文章来源:https://blog.csdn.net/weixin_63135906/article/details/135012286
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。