Protues8253实验报告Word格式.docx

上传人:b****5 文档编号:20609328 上传时间:2023-01-24 格式:DOCX 页数:9 大小:148.49KB
下载 相关 举报
Protues8253实验报告Word格式.docx_第1页
第1页 / 共9页
Protues8253实验报告Word格式.docx_第2页
第2页 / 共9页
Protues8253实验报告Word格式.docx_第3页
第3页 / 共9页
Protues8253实验报告Word格式.docx_第4页
第4页 / 共9页
Protues8253实验报告Word格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

Protues8253实验报告Word格式.docx

《Protues8253实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《Protues8253实验报告Word格式.docx(9页珍藏版)》请在冰豆网上搜索。

Protues8253实验报告Word格式.docx

1.硬件

(1)74HC138译码电路如图所示,A15为1,E2、E3接地保证74HC138正常工作,此时

对应地址分别为8000H、9000H、0A000H.

(2)8259的片选地址为9000H,所以

8086有16位数据总线,其低8位作为偶存储体来传输数据,8086的A0要一直为0,所以8259的A0要接8086的A1

IR2端输入中断请求信号,该信号由8253的方波信号产生(频率1Hz),所以8259的IR2端与8253的OUT1端相连。

(3)74LS273的片选地址为8000H,且需要向其写入LED灯的状态,则

经或非门后接入CLK。

(4)8253的片选地址为A000H,所以

CLK0接入1MHz信号,GATE0与GATE1同时接电源,OUT0输入到CLK1,OUT1经分频输出1HZ的信号。

2.软件

(1)流程图

(2)与8259A有关的设置

18259A初始化(ICW)

据要求(上升沿触发、单片、全嵌套、非缓冲、普通中断结束方式、需设置ICW4,中断类型号为80H—87H),初始化:

ICW1=13H(00010011B);

写入偶地址端口9000H

ICW2=08H(00001000B);

写入奇地址端口9002H

ICW4=01H(00000001B);

2中断屏蔽字(OCW1)(写入奇地址端口9002H)

允许IR2中断OCW1与0FBH(11111011B)相与

禁止IR2中断OCW1与04H(00000100B)相或

3中断结束字(OCW2)(写入偶地址端口9000H)

OCW2=20H(00000010B)

(3)与8253有关的设置

计数器0

计数器1

1MH

计数器

z

1KHz

1Hz

1MHZ要分频为1HZ至少需要两个计数器。

可考虑如下分频方式:

计数器0选用工作方式3(方波),计数器0控制字为37H(00110111B)(写入控制寄存器端口0A006H);

计数器0预置值为1000H,BCD计数。

(写入计数器0端口地址0A000H)

计数器1选用工作方式2(分频),计数器1控制字为75H(01110101B)

(写入控制寄存器端口0A006H);

计数器1预置值为1000H,BCD计数。

(写入计数器1端口地址0A002H)

三.源程序及注释

CODESEGMENT;

"

CODE"

逻辑段开始

ASSUMECS:

CODE

START:

CLI;

关中断

;

8253A初始化

MOVDX,0A006H;

控制器地址0A006H

MOVAL,37H;

计数器0选用工作方式3(方波)

OUTDX,AL;

写计数器0工作方式

MOVDX,0A000H;

计数器0地址0A000H

MOVAL,00H;

计数器0预置值为1000H

OUTDX,AL

MOVAL,10H

MOVAL,75H;

计数器1选用工作方式2(分频)

写计数器1工作方式

MOVDX,0A002H;

计数器1地址0A002H

计数器1预置值1000H

8259初始化

MOVDX,9000H;

ICW1=13H(00010011B)

MOVAL,13H

MOVDX,9002H;

ICW2=80H(10000000B)

MOVAL,80H

ICW3=01H(00000001B)

MOVAL,01H

非规装入地址向量

MOVAX,0

MOVDS,AX

MOVBX,82H*4

MOVAX,OFFSETINTP

MOV[BX],AX

INCBX

MOVAX,SEGINTP

MOVDX,9002H;

允许IRQ2中断

INAL,DX

ANDAL,0FBH

MOVDX,8000H

LED灯初始化全灭

MOVBL,1;

设置灯初始状况

MOVCX,8;

设置中断次数为8

STI

L1:

MOVAL,82H;

Proteus中8086模型有问题,它取得的中断号是最后发到总线上的数据,并不是由8259发出的中断号

MOVDX,0B000H

所以造成了要在这里执行EOI的假相,地址使用没有用过的,如b000h,8259的地址是9000h

CMPCX,0

JZQUIT

JMPL1;

等待中断

QUIT:

CLI;

禁止IRQ2中断

ORAL,4

STI;

开中断

MOVCX,0FFFFH

L:

LOOPL;

为看到第8次中断结束后LED灯亮,需用延时

8次中断结束,LED灯全灭

JMP$

INTPPROC;

中断服务子程序

MOVAL,BL

ROLBL,1

DECCX

MOVDX,9000H

MOVAL,20H;

发中断结束命令EOI

IRET;

中断返回

INTPENDP

CODEENDS

ENDSTART;

汇编结束

四.运行结果

第一次来一个上升沿,申请中断一次,CPU响应后通过输出接口74LS273使发光二极管亮,第1次中断,LED0亮。

以后每来一个上升沿,LED灯依次亮灭,直到计数到8为止。

最后LED灯全灭

五.实验思考

1.为什么程序退出后,8253仍在输出方波信号?

8253的GATE0和GATE1仍接在电源上,而且8253的控制字没有重新写入,所以8253没能复位清零。

2.如果要将8253复位,该如何修改程序?

向控制寄存器重新写入控制字

MOVDX,0A006H

MOVAL,37H

OUTDX,AL

MOVAL,75H

OUTDX,AL

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1