8086汇编程序:8254定时器/计数器实验
2023-12-22 18:09:37
实验目的
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!