微机实验报告.docx
- 文档编号:6355439
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:35
- 大小:405.59KB
微机实验报告.docx
《微机实验报告.docx》由会员分享,可在线阅读,更多相关《微机实验报告.docx(35页珍藏版)》请在冰豆网上搜索。
微机实验报告
微机实验报告
姓名
学号
班级
时间
实验一I/O地址译码与交通灯控制实验
一、实验名称:
I/O地址译码与交通灯控制实验
二、实验目的:
通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。
三、实验器件:
8255A红黄绿LED彩灯各两个
四、实验内容:
如下图所示:
通过并行接口8255实现十字路口交通灯的模拟控制。
如图,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。
编程使六个灯按交通灯变化规律燃灭。
1、8255控制寄存器端口地址28BH
A口的地址288H
C口的地址28AH
2、
(1)南北路口的绿灯、东西路口红灯同时亮3秒左右
(2)南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮
(3)南北路口的红灯、东西路口绿灯同时亮3秒左右
(4)南北路口的红灯继续亮,同时东西路口的黄灯闪烁若干次
(5)转到
(1)重复。
五流程图:
STACKSEGMENT
DB100DUP(0)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
STACK
DYPROCNEAR
PUSHAX
PUSHCX
MOVAX,0FFFFH;延时程序
MOVCX,02FFFH
L0:
DECAX
JNZL0
LOOPL0
POPCX
POPAX
RET
DYENDP
START:
MOVDX,0C40BH
MOVAL,10000000B
OUTDX,AL
MOVDX,0C40AH
MOVBL,6H;设置延迟3秒
L1:
MOVAL,00100100B;南北绿灯亮,东西红灯亮
OUTDX,AL
CALLDY;调用延迟子程序
DECBL
JNZL1
MOVBL,4H;设置第二次闪烁3次
L2:
MOVDX,0C40AH
MOVAL,01000100B;南北黄灯亮,东西红灯亮
OUTDX,AL
CALLDY
MOVAL,00000100B;南北黄灯灭,东西红灯亮,实现要求闪的功能
OUTDX,AL
CALLDY
DECBL
JNZL2
MOVBL,6H;第三次设置亮灭时间为3秒
L3:
MOVAL,10000001B;南北黄灯亮,东西红灯亮
OUTDX,AL
CALLDY
DECBL
JNZL3
MOVBL,4H
L4:
MOVAL,10000010B;南北红灯亮,东西黄灯亮
OUTDX,AL
CALLDY
MOVAL,10000000B;南北红灯亮,东西黄灯灭,实现闪的功能
OUTDX,AL
CALLDY
DECBL
JNZL4
MOVDL,0FFH;判断是否有键按下,结束程序
MOVAH,06H
INT21H
JZSTART;没有键按下,进入下一次循环
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
六、实验出现错误及感想:
延时过短,经计算后采用新的循环数值,得到预期结果
此程序条理很清晰,调试非常顺利。
两个实验的独自完成,使我对汇编语言产生了浓厚的兴趣,对之后的实验也有了信心。
实验二可编程定时器/计数器(8253)
一、实验目的
1、掌握并行接口8253的基本原理
2、掌握8253的编程方法
二、实验内容
1、按图虚线连接电路,将计数器0设置为工作方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0遍高电平)。
2、按图连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1Hz)。
三、编程分析
1、8253地址分析:
控制寄存器地址:
0C403H
计数器0地址:
04C400H
计数器1地址:
04C401H
CLK0连接时钟:
1MHz。
2、程序参考流程图
四、汇编语言程序
程序1
DATASEGMENT
NDB0BH
DATAENDS
STACK1SEGMENTPARASTACK
DB20DUP(0)
STACK1ENDS
CODESEGMENT
START:
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1
MOVAX,DATA
MOVDS,AX
MOVAL,10H
MOVDX,0C403H
OUTDX,AL;写控制字
MOVAL,N
MOVDX,0C400H
OUTDX,AL;写入计数器0初值,初始化完成
READ:
MOVDX,0C400H
INAL,DX;读入计数值
CMPAL,09H
JLEASCI
ADDAL,07H
ASCI:
ADDAL,30H;转化成ascii码
MOVDL,AL
MOVAH,02H
INT21H;显示计数值
MOVDL,0DH;加回车符,只显示一个符号
INT21H
MOVDL,0FFH;有键按下回DOS
MOVAH,06H
INT21H
JNZEXIT
JMPREAD
EXIT:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
程序2
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,0C403H
MOVAL,00110110B;计数器0方式3产生方波
OUTDX,AL
MOVDX,0C400H
MOVAX,1000;计数器0计数值1000
OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVDX,0C403H
MOVAL,01110110B;计数器1方式3
OUTDX,AL
MOVDX,0C401H
MOVAX,1000;计数器1送入记数值1000
OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVDL,0FFH;有按键时结束
MOVAH,06H
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验三中断
一、实验目的:
1、掌握PC机中断处理系统的基本原理。
2、学会编写中断服务程序。
二、实验器件8259PC机
三、实验原理与内容
1、实验原理
PC机用户可使用的硬件中断只有可屏蔽中断由8259中断控制器管理中断控制器用于接收外部的中断请求信号,经过优先级判别等处理后向CPU发出可屏蔽中断请求IBMPC、PC/XT机内有一片8259中断控制器对外可以提供8个中断源
中断源中断类型号中断功能
IRQO08H时钟
IRQ109H键盘
IRQ2OAH与从片连接
IRQ3OBH串行口2
IRQ4OCH串行口l
IRQ5ODH硬盘
IRQ6OEH软盘
IRQ7OFH并行打印机
8个中断源的中断请求信号线IRQ0IRQ7在主机的62线ISA总线插座中可以引出,系统已设定中断请求信号为边沿触发普通结束方式。
对于PC/AT及286以上微机内又扩展了一片8259中断控制IRQ2用于两片8259之间级连,对外可以提供16个中断源
中断源中断类型号中断功能
IRQ8O7OH实时时钟
IRQ9O7lH用户中断
IRQ10O72H保留
IRQllO73H保留
IRQ12074H保留
IRQ13O75H协处理器
IRQ14O76H硬盘
IRQ15O77H保留
2、原理图
虚线为实验中需要连的线。
直接用手动产生单脉冲作为中断请求信号,要求每按一次开关产生一次中断,在屏幕上显示一次“TPCpcicardInterrupt”,中断10次后程序退出。
四:
流程图
五实验程序
;386以上微机适用
;纯dos下才能使用
;tasm4.1或以上编译
;接1根线,单脉冲--IRQ,输入一个脉冲中断一次,输入10次结束.
;*********************;
;*中断*;
;*********************;
datasegment
int_vectEQU0bH;中断0-7的向量为:
08h-0fh,中断8-15的向量为:
70h-77h.中断类型号:
73是在本微机设备管理器中查出的.
irq_mask_2_7equ011110111b;中断掩码,中断0-7时从低至高相应位为零,中断8-15时第2位为零
irq_mask_9_15equ011111111b;中断0-7时全一,中断8-15时从低至高相应位为零
ioport_centequ0c000H;tpc卡中9054芯片的io地址,地址0c000H是在本微机设备管理器中查出的.
csregdw?
ipregdw?
;旧中断向量保存空间
irq_timesdw00h;中断计数
msg1db0dh,0ah,'TPCpcicardInterrupt',0dh,0ah,'$'
msg2db0dh,0ah,'Pressanykeytoexit!
',0dh,0ah,'$'
msg3db0dh,0ah,'PressDMCtointerrupt10timesandexit!
',0dh,0ah,'$'
dataends
stackssegmentstack
db100dup(?
)
stacksends
codesegment
assumecs:
code,ds:
data,ss:
stacks,es:
data
start:
;EnableLocalInterruptInput
.386
cli
movax,data
movds,ax
moves,ax
movax,stacks
movss,ax
movdx,ioport_cent+68h;设置tpc卡中9054芯片io口,使能中断
inax,dx
orax,0900h
outdx,ax
moval,int_vect;保存原中断向量
movah,35h
int21h
movax,es
movcsreg,ax
movipreg,bx
movax,cs;设置新中断向量
movds,ax
movdx,offsetint_proc
moval,int_vect
movah,25h
int21h
inal,21h;设置中断掩码
andal,irq_mask_2_7
out21h,al
inal,0a1h
andal,irq_mask_9_15
out0a1h,al
movax,data
movds,ax
movdx,offsetmsg2
movah,09h
int21h
movdx,offsetmsg3
movah,09h
int21h
movirq_times,0ah
sti
loop1:
cmpirq_times,0;等待中断并判断中断10次后退出
jzexit
hlt
;jzloop1;按任意键退出
jmploop1
exit:
cli
movbl,irq_mask_2_7;恢复中断掩码
notbl
inal,21h
oral,bl
out21h,al
movbl,irq_mask_9_15
notbl
inal,0a1h
oral,bl
out0a1h,al
movdx,ipreg;恢复原中断向量
movax,csreg
movds,ax
movah,25h
moval,int_vect
int21h
movdx,ioport_cent+68h;设置tpc卡中9054芯片io口,关闭中断
inax,dx
andax,0f7ffh
outdx,ax
movah,4ch
int21h
int_procprocfar
cli
pushax
pushdx
pushds
decirq_times
movax,data;Interrupttodo
movds,ax
movdx,offsetmsg1
movah,09h
int21h
moval,20h;SendEOI
out0a0h,al
out20h,al
popds
popdx
popax
sti
iret
int_procendp
codeends
endstart
六实验说明
1、本实验需要在纯DOS环境中才能正常进行。
2、由于每台微机分配的中断号可能都不同,所以编程时需要了解当前的微机使用哪个中断号并进行设置。
获取方法是在纯DOS环境中,运行一个读PCI配置空间的程序“PORTR.EXE”,该程序能够获得本机TPC板卡或所有PCI板卡的硬件资源。
本实验中需要获得的数据如下:
(1)TPCpcicard9054chipI/OBaseAddress(9054I/O起始地址)通过查找可知为C000H
(2)TPCpcicardInterruptLine.通过查找可知0003H。
然后根据获得的中断请求号码来修改程序中的中断类型号、中断掩码的参数,并重新编译链接后即可。
注:
中断掩码即中断屏蔽字OCW1。
InterruptLine寄存器用于识别PCI中断请求引脚连接到中断控制器的哪个输入端。
3、中断时能代码:
;设置tpc卡中9054芯片io口,使能中断
movdx,ioport_cent+68h
inax,dx
orax,0900h
outdx,ax
ioport_cent是9054芯片寄存器组的I/O起始地址。
中断使能寄存器(INTCSR)的偏移地址是+68H。
4、程序退出前还要关闭9054的中断,代码如下:
;设置tpc卡中9054芯片io口,关闭中断
movdx,ioport_cent+68h
inax,dx
andax,0f7ffh
outdx,ax
5、PC机中断控制器8259主片的地址为20H、21H,从片地址为A0H、A1H,编程时要根据中断类型号设置中断向量,8259中断屏蔽寄存器IMR对应位要清零(允许中断,OCW1),每一次中断服务结束返回前要使用中断结束命令(OCW2):
MOVAL,20H
OUT20H,AL
OUTA0H,AL
七.实验总结
此次实验时第一次使用dos环境运行程序,因此在此环境中处理数据就占用了很长时间,因为不知道应该如何使用,所以只能按照老师讲的方法一步一步抄写下来,所以很费劲,以后还是应该多了解一下dos环境的应用。
实验四AD转换
一、实验目的
1了解模/数转换的基本原理。
2掌握ADC0809的使用方法。
二、实验内容
通过实验台左下角电位器RW1输出0~5V直流电压送入ADC0809通道0(IN0),编程采集IN0输入的电压,在屏幕上显示出转换后的数据(用16进制数)
三、实验原理图
四、流程图
五、程序
;*******************************;
;*接收A/D转换器数据在屏幕上显示*;
;*******************************;
ioportequ0c400h-0280h
io0809aequioport+298h
codesegment
assumecs:
code
start:
movdx,io0809a;启动A/D转换器
outdx,al
movcx,0ffh;延时(等待转换结束)
delay:
loopdelay
inal,dx;从A/D转换器输入数据
movbl,al;将AL保存到BL
movcl,4
shral,cl;将AL右移四位
calldisp;调显示子程序显示其高四位
moval,bl
andal,0fh
calldisp;调显示子程序显示其低四位
movah,02
movdl,20h;加空格
int21h
movdl,20h
int21h
pushdx
movah,06h;判断是否有键按下
movdl,0ffh
int21h
popdx
jestart;若没有转START
movah,4ch;退出
int21h
dispprocnear;显示子程序
movdl,al
cmpdl,9;比较DL是否>9
jleddd;若不大于则为'0'-'9',加30h为其ASCII码
adddl,7;否则为'A'-'F',再加7
ddd:
adddl,30h;显示
movah,02
int21h
ret
dispendp
codeends
endstart
实验五8250串行通信实验
一、实验目的
1、掌握串行接口芯片8250的基本原理和编程方法
2、熟悉PC机串行的基本连接方法
3、进一步了解串行通信的基本原理
二、实验内容
1、PC机RS-232串口自发自收
2、自发自收实验:
将RS232C的DB9的电缆插头第2脚和第3脚短接,然后编程实现。
3、2台PC的串行通信:
用RS232C的DB9的电缆(交叉线)将两台机器连接,然后编程实现收发数据。
三、硬件连接
四、汇编语言程序
程序1-自发自收
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAL,10000000B;8250初始化,设DLAB=1
MOVDX,3FBH
OUTDX,AL
MOVAX,30H;写入除数低字节
MOVDX,3F8H
OUTDX,AL
MOVAL,AH;写入除数高字节
MOVDX,3F9H
OUTDX,AL
MOVAL,00001010B;7位数据,1位停止,奇校验
MOVDX,3FBH
OUTDX,AL;写入线路控制寄存器
MOVAL,00010000B;自检控制
MOVDX,3FCH
OUTDX,AL;写入Modem控制寄存器
MOVAL,0
MOVDX,3F9H
OUTDX,AL;写中断允许寄存器,屏蔽中断
WAIT_FOR:
MOVDX,3FDH;读线路状态寄存器
INAL,DX
TESTAL,00011110B;出错否
JNZERROR;出错,转ERROR
TESTAL,00000001B;接收数据就绪否
JNZRECEIVE;就绪,转接受
TESTAL,00100000B;发送寄存器空否,不空,返回等待
JZWAIT_FOR
MOVAH,1
INT21H;读键盘
MOVDX,3F8H;发送
OUTDX,AL
JMPWAIT_FOR;返回等待
RECEIVE:
PUSHCX
PUSHAX
MOVCX,02000H
T1:
MOVAX,0FFFFH
T2:
DECAX
JNZT2
LOOPT1;延时程序
MOVDX,3F8H;读接收数据
INAL,DX
ANDAL,01111111B;保留7位数据
CMPAL,03H;是Ctrl+C?
JNZCHAR
MOVAH,4CH;返回DOS
INT21H
CHAR:
PUSHAX
MOVDL,AL
MOVAH,2H;显示接收字符
INT21H
POPAX
JMPWAIT_FOR;返回等待
ERROR:
MOVDX,3FDH;出错则清除线路状态寄存器
INAL,DX
MOVDL,'?
';显示'?
'
MOVAH,02H
INT21H
JMPWAIT_FOR
CODEENDS
ENDSTART
程序2-双机通信
发送部分:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAL,80H;8250初始化,设DLAB=1
MOVDX,3FBH
OUTDX,AL
MOVAX,0030H
MOVDX,3F8H
OUTDX,AL;写入除数低字节
MOVAL,AH
MOVDX,3F9H
OUTDX,AL;写入除数高字节
MOVAL,0AH;7位数据,1位停止,奇校验
MOVDX,3FBH
OUTDX,AL;写入线路控制寄存器
MOVAL,03H;数据终端就绪,请求发送数据
MOVDX,3FCH
OUTDX,AL;写入Modem控制寄存器
MOVAL,0
MOVDX,3F9H
OUTDX,AL;写中断允许寄存器,屏蔽中断
WAIT_FOR:
MOVDX,3FDH;读线路状态寄存器
INAL,DX
TESTAL,00100000B;发送寄存器空否,不空,返回等待
JZWAIT_FOR
SEND:
MOVAH,1
INT21H
CMPAL,21H
JZEXIT
MOVDX,3F8H;读键盘,若是'!
',返回DOS,若不是,则发送
OUTDX,AL
JMPWAIT_FOR;返回等待
EXIT:
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
接收部分:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAL,80H;8250初始化,设DLAB=1
MOVDX,3FBH
OUTDX,AL
MOVAX,0030H
MOVDX,3F8H
OUTDX,AL;写入除数低字节
M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)