微机原理实验讲解.docx
- 文档编号:15203752
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:16
- 大小:90.26KB
微机原理实验讲解.docx
《微机原理实验讲解.docx》由会员分享,可在线阅读,更多相关《微机原理实验讲解.docx(16页珍藏版)》请在冰点文库上搜索。
微机原理实验讲解
第四章微机实验部分(汇编)
实验一I/O地址译码
一、实验目的
掌握I/O地址译码电路的工作原理。
二、实验原理和内容
实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。
译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:
280H~287H,Y1:
288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。
例如:
执行下面两条指令
MOVDX,2A0H
OUTDX,AL(或INAL,DX)
Y4输出一个负脉冲,执行下面两条指令
MOVDX,2A8H
OUTDX,AL(或INAL,DX)
Y5输出一个负脉冲。
图1-1
利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。
三、编程提示
1、实验电路中D触发器CLK端输入脉冲时,上升沿使Q端输出高电平L7发光,CD端加低电平L7灭。
2、参考程序:
YMQ.ASM
ioportequ0cc00h-0280h
outport1equioport+2a0h
outport2equioport+2a8h
codesegment
assumecs:
code
start:
movdx,outport1
outdx,al
calldelay;调延时子程序
movdx,outport2
outdx,al
calldelay;调延时子程序
movah,1
int16h
jestart
movah,4ch
int21h
delayprocnear;延时子程序
movbx,2000
lll:
movcx,0
ll:
loopll
decbx
jnelll
ret
delayendp
codeends
endstart
实验二简单并行接口
一、实验目的
掌握简单并行接口的工作原理及使用方法。
二、实验内容
1、按下面图2-1简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。
74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。
2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。
3、按下面图2-2简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。
74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。
4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。
图2-1图2-2
三、编程提示
1、上述并行输出接口的地址为2A8H,并行输入接口的地址为2A0H,通过上述并行接口电路输出数据需要3条指令:
MOVAL,数据
MOVDX,2A8H
OUTDX,AL
通过上述并行接口输入数据需要2条指令:
MOVDX,2ADH
INAL,DX
2、参考流程图
图2-3参考程序1图2-4参考程序2
3、参考程序1:
E273.ASM
ioportequ0cc00h-0280h
ls273equioport+2a8h
codesegment
assumecs:
code
start:
movah,2;回车符
movdl,0dh
int21h
movah,1;等待键盘输入
int21h
cmpal,27;判断是否为ESC键
jeexit;若是则退出
movdx,ls273;若不是,从2A8H输出其ASCII码
outdx,al
jmpstart;转start
exit:
movah,4ch;返回
int21h
codeends
endstart
4、参考程序2:
E244.ASM
ioportequ0cc00h-0280h
ls244equioport+2a0h
codesegment
assumecs:
code
start:
movdx,ls244;从2A0输入一数据
inal,dx
movdl,al;将所读数据保存在DL中
movah,02
int21h
movdl,0dh;显示回车符
int21h
movdl,0ah;显示换行符
int21h
movah,06;是否有键按下
movdl,0ffh
int21h
jnzexit
jestart;若无,则转start
exit:
movah,4ch;返回
int21h
codeends
endstart
实验三可编程定时器/计数器(8253)
一、实验目的
掌握8253的基本工作原理和编程方法。
二、实验内容
1、按图3-1虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。
图3-1
2、按图3-2连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1HZ)。
图3-2
三、编程提示
1、8253控制寄存器地址283H
计数器0地址280H
计数器1地址281H
CLK0连接时钟1MHZ
2、参考流程图(见图3-3、图3-4):
图3-3图3-4
3、参考程序1:
E8253_1.ASM
ioportequ0cc00h-0280h
io8253aequioport+283h
io8253bequioport+280h
codesegment
assumecs:
code
start:
moval,14h;设置8253通道0为工作方式2,二进制计数
movdx,io8253a
outdx,al
movdx,io8253b;送计数初值为0FH
moval,0fh
outdx,al
lll:
inal,dx;读计数初值
calldisp;调显示子程序
pushdx
movah,06h
movdl,0ffh
int21h
popdx
jzlll
movah,4ch;退出
int21h
dispprocnear;显示子程序
pushdx
andal,0fh;首先取低四位
movdl,al
cmpdl,9;判断是否<=9
jlenum;若是则为'0'-'9',ASCII码加30H
adddl,7;否则为'A'-'F',ASCII码加37H
num:
adddl,30h
movah,02h;显示
int21h
movdl,0dh;加回车符
int21h
movdl,0ah;加换行符
int21h
popdx
ret;子程序返回
dispendp
codeends
endstart
4、参考程序2:
E8253_2.ASM
ioportequ0cc00h-0280h
io8253aequioport+280h
io8253bequioport+281h
io8253cequioport+283h
codesegment
assumecs:
code
start:
movdx,io8253c;向8253写控制字
moval,36h;使0通道为工作方式3
outdx,al
movax,1000;写入循环计数初值1000
movdx,io8253a
outdx,al;先写入低字节
moval,ah
outdx,al;后写入高字节
movdx,io8253c
moval,76h;设8253通道1工作方式2
outdx,al
movax,1000;写入循环计数初值1000
movdx,io8253b
outdx,al;先写低字节
moval,ah
outdx,al;后写高字节
movah,4ch;程序退出
int21h
codeends
endstart
实验四可编程并行接口
(一)(8255方式0)
一、实验目的
掌握8255方式0的工作原理及使用方法。
二、实验内容
1、实验电路如图4-1,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
2、编程从8255C口输入数据,再从A口输出。
图4-1图4-2
三、编程提示
1、8255控制寄存器端口地址28BH
A口的地址288H
C口的地址28AH
2、参考流程图(见图4-2):
3、参考程序:
E8255.ASM
ioportequ0cc00h-0280h
io8255aequioport+288h
io8255bequioport+28bh
io8255cequioport+28ah
codesegment
assumecs:
code
start:
movdx,io8255b;设8255为C口输入,A口输出
moval,8bh
outdx,al
inout:
movdx,io8255c;从C口输入一数据
inal,dx
movdx,io8255a;从A口输出刚才自C口
outdx,al;所输入的数据
movdl,0ffh;判断是否有按键
movah,06h
int21h
jzinout;若无,则继续自C口输入,A口输出
movah,4ch;否则返回
int21h
codeends
endstart
实验五七段数码管
一、实验目的
掌握数码管显示数字的原理
二、实验内容
1、静态显示:
按图5-1连接好电路,将8255的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中),S0、dp接地(关闭)。
编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。
图5-1图5-2
三、编程提示
1、实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
2、七段数码管的字型代码表如下表:
显示字形
g
e
f
d
c
b
a
段码
0
0
1
1
1
1
1
1
3fh
1
0
0
0
0
1
1
0
06h
2
1
0
1
1
0
1
1
5bh
3
1
0
0
1
1
1
1
4fh
4
1
1
0
0
1
1
0
66h
5
1
1
0
1
1
0
1
6dh
6
1
1
1
1
1
0
1
7dh
7
0
0
0
0
1
1
1
07h
8
1
1
1
1
1
1
1
7fh
9
1
1
0
1
1
1
1
6fh
3、参考流程图(见图5-3、图5-4)
图5-3图5-4
4、参考程序1:
LED1.ASM
datasegment
ioportequ0cc00h-0280h
io8255aequioport+288h
io8255bequioport+28bh
leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
mesg1db0dh,0ah,'Inputanum(0--9),otherkeyisexit:
',0dh,0ah,'$'
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movdx,io8255b;使8255的A口为输出方式
movax,80h
outdx,al
sss:
movdx,offsetmesg1;显示提示信息
movah,09h
int21h
movah,01;从键盘接收字符
int21h
cmpal,'0';是否小于0
jlexit;若是则退出
cmpal,'9';是否大于9
jgexit;若是则退出
subal,30h;将所得字符的ASCII码减30H
movbx,offsetled;bx为数码表的起始地址
xlat;求出相应的段码
movdx,io8255a;从8255的A口输出
outdx,al
jmpsss;转SSS
exit:
movah,4ch;返回
int21h
codeends
endstart
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 讲解