微机原理及其接口技术重要实验详解.docx
《微机原理及其接口技术重要实验详解.docx》由会员分享,可在线阅读,更多相关《微机原理及其接口技术重要实验详解.docx(15页珍藏版)》请在冰豆网上搜索。
微机原理及其接口技术重要实验详解
实验三可编程定时器/计数器(8253)
一、实验目的
掌握8253的基本工作原理和编程方法。
二、实验容
1、按图3-1虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。
三、编程提示
1、8253控制寄存器地址283H
计数器0地址280H
计数器1地址281H
CLK0连接时钟1MHZ
;*************************;
;*8253方式0计数器实验*;
;*************************;
io8253aequ283h
io8253bequ280h
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;首先取低四位
资料Word
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
实验三可编程定时器/计数器(8253)
一、实验目的
掌握8253的基本工作原理和编程方法。
二、实验容
1、按图3-2连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1HZ)。
三、编程提示
1、8253控制寄存器地址283H
计数器0地址280H
计数器1地址281H
CLK0连接时钟1MHZ
;*******************
;*8253分频*
;*******************
io8253aequ280h
io8253bequ281h
io8253cequ283h
codesegment//声明代码段
assumecs:
code
start:
movdx,io8253c;向8253写控制字movdx,283h;
moval,36h;使0通道为工作方式3
资料Word
D7D6D5D4D3D2D1D0=00110110,D7D6=00表示计数器0;D5D4=11先读写低8为再读写高8位;D3D2D1=011表示计数器工作方式3;D0=0表示计数器的初值为二进制数
outdx,al//向283h写控制字
movax,1000;写入循环计数初值1000
movdx,io8253a
outdx,al;先写入低字节到计数器0地址280H
moval,ah
outdx,al;后写入高字节到计数器0地址280H
movdx,io8253c
moval,76h;设8253通道1工作方式3.D7D6D5D4D3D2D1D0=01110110,D7D6=01表示计数器1;D5D4=11先读写低8为再读写高8位;D3D2D1=011表示计数器工作方式3;D0=0表示计数器的初值为二进制;
outdx,al
movax,1000;写入循环计数初值1000
movdx,io8253b
outdx,al;先写低字节到计数器1地址281H
moval,ah
outdx,al;后写高字节到计数器1地址281H
movah,4ch;程序退出
int21h
codeends
endstart
实验四可编程并行接口
(一)(8255方式0)
一、实验目的
掌握8255方式0的工作原理及使用方法。
二、实验容
1、实验电路如图4-1,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
2、编程从8255C口输入数据,再从A口输出。
三、编程提示
1、8255控制寄存器端口地址28BH
A口的地址288H
C口的地址28AH
;*******************************;
;*8255方式0的C口输入,A口输出*;
;*******************************;
io8255aequ288h
io8255bequ28bh
io8255cequ28ah
资料Word
codesegment//定义代码段
assumecs:
code
start:
movdx,io8255b;设8255为C口输入,A口输出movdx,28bh//D7=1,D6D5=00(工作方式为0),D4=0(A出),D2=0,D3=1(C入),D0=1(C入)。
moval,8bh//D7D6D5D4D3D2D1D0=10001011,D7=1,D6D5=00,D4=0,D3.D0=0,D2=0,D1=1
outdx,al//设8255为C口输入,A口输出
inout:
movdx,io8255c;c口的地址28AH从C口输入一数据
inal,dx//将al的数给dx
movdx,io8255a;A口的地址288H从A口输出刚才自C口
outdx,al;所输入的数据
movdl,0ffh;判断是否有按键
movah,06h
int21h
jzinout;若无,则继续自C口输入,A口输出
movah,4ch;否则返回
int21h
codeends
endstart
实验七竞赛抢答器
一、实验目的
1、了解微机化竞赛抢答器的基本原理。
2、进一步学习使用并行接口。
二、实验容
图7-1为竞赛抢答器(模拟)的原理图,逻辑开关K0~K7代表竞赛抢答按钮0~7号,当某个逻辑电平开关置“1”时,相当某组抢答按钮按下。
在七段数码管上将其组号(0~7)显示出来,并使微机扬声器响一下。
三、编程提示
设置8255为C口输入、A口输出,读取C口数据,若为0表示无人抢答,若不为0则有人抢答。
根据读取数据可判断其组号。
从键盘上按空格键开始下一轮抢答,按其它键程序退出。
;********************************
;*本程序为模拟抢答器*
;********************************
datasegment;定义数据段
io8255aequ28ah;端口初始化
io8255bequ28bh
io8255cequ288h
资料Word
leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h;数码表
dataends
codesegment;定义代码段
assumecs:
code,ds:
data;有了这一句代码,程序就知道从ds:
data中找到data所定义的存地址,然后传送给ds
start:
movax,data;把data段的段地址送入es中,以便计算物理地址的时候得到正确的段地址。
movds,ax
movdx,io8255b;设8255为A口输出,C口输入
movax,89h
outdx,al
movbx,offsetled;使BX指向段码管首址
sss:
movdx,io8255a;从8255的C口输入数据
inal,dx
oral,al;比较是否为0
jesss;若为0,则表明无键按下,转sss
movcl,0ffh;cl作计数器,初值为-1
rr:
shral,1;al逻辑右移一位
inccl;cl减一
jncrr;如果进位则跳转
moval,cl;
xlat;交换。
。
。
。
22行到27行应该循环计数
movdx,io8255c;从8255的C端输出“个人觉得是初始化”
outdx,al
movdl,7;响铃ASCII码为07
movah,2;输出指令(三条指令一起读)
int21h
wai:
movah,1;键盘输入一个数
int21h
cmpal,20h;是否为空格
jneeee;不是,转eee,等于零跳转,不等于零继续执行
moval,0;是,关灭灯
movdx,io8255c;从8255的C端输出“个人觉得是初始化”
outdx,al
jmpsss;跳转到sss
eee:
movah,4ch;功能调用,该功能为关闭窗,即抢答结束
int21h
codeends;代码段结束
endstart;程序结束
资料Word
实验九中断
一、实验目的
1、掌握PC机中断处理系统的基本原理。
2、学会编写中断服务程序。
二、实验原理与容
1、实验原理
PC机用户可使用的硬件中断只有可屏蔽中断,由8259中断控制器管理。
中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求。
IBMPC、PC/XT机有一片8259中断控制器对外可以提供8个中断源:
中断源中断类型号中断功能
IRQ008H时钟
IRQ109H键盘
IRQ20AH保留
IRQ3OBH串行口2
IRQ40CH串行口1
IRQ50DH硬盘
IRQ60EH软盘
IRQ70FH并行打印机
8个中断源的中断请求信号线IRQ0~IRQ7在主机的62线ISA总线插座中可以引出,系统已设定中断请求信号为“边沿触发”,普通结束方式。
对于PC/AT及286以上微机又扩展了一片8259中断控制,IRQ2用于两片8259之间级连,对外可以提供16个中断源:
中断源中断类型号中断功能
IRQ8070H实时时钟
IRQ9071H用户中断
IRQ10072H保留
IRQ11O73H保留
IRQ12074H保留
IRQ13075H协处理器
IRQ14076H硬盘
IRQ15077H保留
TPC-USB实验板上,固定的接到了3号中断IRQ3上,即进行中断实验时,所用中断类型号为0BH。
2、实验容
实验电路如图9-1,直接用手动产单脉冲作为中断请求信号(只需连接一根导线)。
要求每按一次开关产生一次中断,在屏幕上显示一次“TPCAInterrupt!
”,中断10次后程序退出。
;*******************************;
;*中断实验*;
;*******************************;
资料Word
datasegment;定义数据段
messdb'TPCAinterrupt!
',0dh,0ah,'$';显示TCPAinterrupt!
0dh:
回车0ah:
换行
dataends;数据段结束
codesegment;定义代码段
assumecs:
code,ds:
data;假定code位于代码段,data位于数据段
start:
movax,cs;cs容送ax中
movds,ax;ds:
dx容为中断服务程序的入口地址,位于数据段,偏移量送到dx中
movdx,offsetint3;取中断服务程序的偏移地址送dx中
movax,250bh;dos调用的功能号为25h,中断矢量是0bh
int21h;设置IRQ3的中断矢量
inal,21h;读中断屏蔽寄存器
andal,0f7h;开放IRQ3中断(与上11110111H,3位为0)
out21h,al;写进去允许
movcx,10;记中断循环次数为10次
Sti;置中断标志位,IF=1
ll:
jmpll;cx是否为0,等待循环
int3:
中断服务程序
movax,data取数据的地址
movds,ax把数据的地址送到ds
movdx,offsetmess把字符串的偏移地址取出
movah,09显示每次中断的提示信息(ds:
dx=字符缓冲首址)
int21h执行调用
moval,20h20H送al,OCW2=00100000B
out20h,al发出EOI结束中断
loopnextCF=1,不为0,跳到next
inal,21h设中断屏蔽器
oral,08h关闭IRQ3中断
out21h,al写入
sti显中断标志位,IF=1
movah,4ch
int21h返回DOS
next:
iret中断返回
codeends
endstart
实验十可编程并行接口
(二)(8255方式1)
资料Word
一、实验目的工作方式1时的使用及编程。
1、掌握8255
2、进一步掌握中断处理程序的编写。
二、实验容10-1,8255方式1的输出电路连好线路。
1、按图进行一次中:
每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU2、编程依次发光,中断8L7使L0~,04H08H,10H,20H,40H,80H断服务:
依次输出01H、02H,次结束。
;*******************************;
*;8255方式1实验1;*
;*******************************;
codesegment1:
codecs2assumestart:
3csmovax,4
movds,ax5
dxint_proc地址送给int_proc;将,6movdxoffset类;设置外部中断int_proc250bh,7movax系统设置中断向量程型号为0bh,25H可知由6DX=序:
AH=25H,DS:
中断服务入口(中断类型),AL=中放的是dxint_proc的地址号
资料Word
0bH功能0bh这个中断(;调用21h8int
描述:
检查标准输入设备上是否有字符可读。
0bH,)
=该输入操作可被重定向入口参数:
AHdx将21h送给;9movdx,21h
;将21h号端口的容给al10inal,dx
)中断;开放IRQ3(串口设备andal,0f7h11
dx,al12out
口方式为A1输入设;13movdx,28bh8255mov14al,0a0h
dxal15out
;将PC6置位0dhmov16al,
17dx,aloutblmov,118
;循环等待ll19ll:
jmp
int_proc:
20
almov,bl21
22movdx288h口输出A的8255从AL将;
out,dxal2324,almov20h2520houtal,资料Word
26shlbl,1
27jncnext;中断次数小于8,返回主程序
28inal,21h
29oral,08h;关闭IRQ7中断
30out21h,al
31sti;开中断,将IF置1
32movah,4ch;返回DOS
33int21h
34next:
iret;中断返回指令
35codeends
36endstart
接口程序10.2可编程并行接口(8255方式一实验二)
一、实验目的
1、掌握8255工作方式1时的使用及编程。
2、进一步掌握中断处理程序的编写。
二、实验容
1、按图10-2,8255方式1输入电路,连好线路。
2、编程:
每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:
读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。
三、实验原理图
四:
实验流程图
五:
实验代码及注释
;*******************************;
;*8255方式1实验2*;
;*******************************;
codesegment;定义代码段
assumecs:
code;假定code位于代码段
资料Word
start:
;程序开始
movax,cs;将cs容送到ax中
movds,ax;将ax容送到ds中,因为不能段与段之间直接传送,所以借助ax
movdx,offsetint_proc;将中断子程序的偏移地址送入dx,设置IRQ3中断矢量
movax,250bh;dos调用25号功能号设置中断向量号,设外部中断int_proc类型号为0bh
int21h
movdx,21h
inal,dx;读中断屏蔽寄存器
andal,0f7h;开放IRQ3中断,将第4位置0
outdx,al
movdx,28bh;将控制寄存器端口地址(28bh)送到dx中
moval,0b8h;0b8h=10111000D7是标志位,D6,D5是A组方式的选择(方式0,1,2),D4是A口的输入输出选择(0为输出),D3是C口高四位的输入输出选择,
D2是B组方式的选择(方式0,1),D1是B口的输入输出选择,D0是C口低
四位的输入输出选择。
这里设置8255A口工作于方式1作输入,B口工作于
方式0作输出,C口上半部输入,下半部输出
outdx,al;out的意思是cpu通过执行out指令使WR#有效,即写信息,将命令字或数据写入8255,这里是命令字
moval,09h;将8255的PC4置位,09h=00001001b,D3,2,1是C口的为选择,这里是PC4,D0位为1表示置位,表示允许中断,当输入的数据缓冲区满的时候,8255
向cpu发出INTR中断请求,cpu相映中断,发出RD#信号把数据读入cpu。
outdx,al
movbl,8;bl为中断次数计数器
ll:
jmpll;循环等待
int_proc:
movdx,288h;8255A口地址为288h,这句代码含义为自8255A口输入数据
inal,dx;in的意思是cpu通过执行IN指令使RD#有效,即发读信号,将数据或
状态信息从8255中读入CPU
movdl,al;将输入的数据保存到dl中
movah,02h;显示ASCII码为DL的字符
int21h
movdl,0dh;回车
int21h
movdl,0ah;换行
int21h
movdx,20h
moval,20h;发出中断结束命令
outdx,al
decbl;中断次数计数器减一
jnznext;判断计数器数值,若不为0,则跳到NEXT
资料Word
inal,21h
oral,08h;C口的D3,2,1为100表示PC4,D0位为0,表示复位,使INTE复位以
禁止中断,PC4是在输入的时候通过置位控制INTEA使A口允许中断,
这里是PC4复位,即禁止中断
out21h,al
sti;开中断
movah,4ch;返回DOS
int21h
next:
iret;返回中断
codeends
endstart
资料Word