Protues8255实验报告Word格式文档下载.docx
- 文档编号:18730547
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:18
- 大小:531.18KB
Protues8255实验报告Word格式文档下载.docx
《Protues8255实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Protues8255实验报告Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
二思路
1.硬件
(1)74HC138译码电路如图所示,A15为1,E2、E3接地保证74HC138正常工作,此时
、
对应地址分别为8000H、9000H、0A000H.
此芯片实验1.2.3都需用到
(2)8259的片选地址为9000H,所以
接
8086有16位数据总线,其低8位作为偶存储体来传输数据,8086的A0要一直为0,所以8259的A0要接8086的A1
IR2端输入中断请求信号,该信号由8253的方波信号产生(频率1Hz),所以8259的IR2端与8253的OUT1端相连。
此芯片实验2,3要用到
(3)8253的片选地址为A000H,所以
。
CLK0接入1MHz信号,GATE0与GATE1同时接电源,OUT0输入到CLK1,OUT1经分频输出1HZ的信号。
(4)对于实验1,8255的连接如下图
8255的片选地址为8000H,所以
端口A中的两个端口接开关,作为输入(开关弹起时为高电平,按下时为低电平);
端口B中的全部端口作为输出显示。
(5)对于实验2,8255的连接如下图
端口A中的全部端口作为输出显示
(6)对于实验3,8255的连接如下图
端口A中的全部端口连接一二级数码管,且该数码管为共阴极连接。
二.软件
(1)实验1流程图
(2)实验2,3流程图
(3)8255初始化(实验1.2.3都需要)
方式选择控制字,对于实验1:
A口方式0输入,B口方式0输出(10010000B=90H)
对于实验2,3:
A口方式0输出(10000000B=80H)
程序如下:
实验1:
MOVDX,8006H;
控制器地址为8006H
MOVAL,90H;
OUTDX,AL
实验2,3:
MOVAL,80H;
A口方式0输出(10000000B=80H)
(4)8253及8259的初始化(实验2,3需要)
关于8253及8259的设置与前面的两个实验均相同,其程序如下所示
;
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
8259A初始化
MOVDX,9000H;
ICW1=13H(00010011B)
MOVAL,13H
MOVDX,9002H;
ICW2=80H(10000000B)
MOVAL,80H
ICW3=01H(00000001B)
MOVAL,01H
(5)关于实验1的设置
读A口信息,判断K0K1
若K1=1,则灯全灭
若K0K1=00,则灯由低到高循环亮灭
若K0K1=10,则灯由高到低循环亮灭
其中还需要两个延时子程序
程序如下
MOVBL,01H
MOVDX,8000H;
A口地址为8000H
INAL,DX;
读A口中的数据
ANDAL,03H;
AL=AL&
00000011B
CMPAL,02H
JAEMIE;
K1=1转到MIE
CMPAL,01H
JENEXT1;
K1K0=01B转HL,K1K0=00B做LH
NEXT1:
MOVDX,8002H;
B口地址为8002H
MOVAL,BL
CALLDELAY1
ROLBL,1
JMPNEXT1
NEXT2:
CALLDELAY2
RORBL,1
JMPNEXT2
MIE:
LED全灭
JENEXT2;
K1K0=01B转到NEXT2
CMPAL,00H
K1K0=00B转到NEXT1
JMPMIE
延时子程序如下:
DELAY1PROCNEAR
MOVCX,0A000H
L2:
CMPAL,02H
LOOPL2
RET
DELAY1ENDP
DELAY2PROCNEAR
L4:
LOOPL4
DELAY2ENDP
(6)关于中断的设置(实验2,3需要)(其中红色字体为实验2和实验3不同的部份)
【需注意,对于实验3要编写数据段,为了能直接调用共阴极数码管段码表】程序如下:
DATASEGMENT;
"
DATA"
逻辑段开始
TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;
共阴极数码管段码表[0-9]
非规范装入中断向量
MOVAX,0
MOVDS,AX
MOVBX,82H*4
MOVAX,OFFSETINTP
MOV[BX],AX
INCBX
MOVAX,SEGINTP
MOV[BX],AX
允许IRQ2中断
INAL,DX
ANDAL,0FBH
OUTDX,AL
;
主程序(高电平点灯)
MOVDX,8000H
LED灯初始化全灭
MOVBL,1;
第一次中断后LED0亮
【MOVAX,DATA
MOVDS,AX
LEASI,TABLE;
第一次中断的状态:
显示'
0'
】
MOVCX,8;
设置中断次数为8
【实验3设置的中断次数为10】
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灯亮,需用延时
MOVDX,8000H
8次中断结束,LED灯全灭
JMP$
INTPPROC;
中断服务子程序
MOVAL,BL[MOVAL,[SI]]
ROLBL,1[INCSI]
DECCX
MOVDX,9000H
MOVAL,20H;
发中断结束命令EOI
IRET;
中断返回
三.运行结果
当K1高电平时,LED灯都不亮。
当K1低电平,K0高电平时,LED灯按如下次序亮
当K1为高电平,K0为低电平时,LED灯按如下顺序亮
实验2.第1次中断,LED0亮。
以后每来一个上升沿,LED灯依次亮灭,直到计数到8为止。
最后LED灯全灭。
实验3:
第一次中断数码管上显示数字“0”,以后每次中断,数码管上依次显示数字“1”—“9”。
最后数码管全灭
说明:
实验3在LAB6000的硬件试验箱上连接时,由于没有进行位选,数码管显示是六个数码管全部同时显示从“0”—“9”的变化,然后全部同时灭掉的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Protues8255 实验 报告