微机原理与接口研究性教学实验报告.docx
- 文档编号:3921002
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:32
- 大小:620.13KB
微机原理与接口研究性教学实验报告.docx
《微机原理与接口研究性教学实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理与接口研究性教学实验报告.docx(32页珍藏版)》请在冰豆网上搜索。
微机原理与接口研究性教学实验报告
《微机原理与接口》课程上机操作
实验报告
姓名:
XXXXXXXX
学号:
XXXXXXXX
指导教师:
付文秀
时间:
2011年12月18日
I/O地址译码与交通灯控制实验
一、实验目的
通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。
二、实验内容
如图5-3,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。
编程使六个灯按交通灯变化规律燃灭。
十字路口交通灯的变化规律要求:
(1)南北路口的绿灯、东西路口的红灯同时亮3秒左右。
(2)南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。
(3)南北路口的红灯、东西路口的绿灯同时亮3秒左右。
(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。
(5)转
(1)重复。
三、
8255动态分配地址:
控制寄存器:
0EC0BH
A口地址:
0EC08H
C口地址:
0EC0AH
程序流程图
四、程序清单
DATASEGMENT
XDB?
DATAENDS
STACK1SEGMENTSTACK
DW100HDUP(0)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1
START:
MOVAX,DATA
MOVDS,AX
;---------------INIT----------------
MOVDX,0EC0BH;写控制字
MOVAL,80H
OUTDX,AL
L3:
MOVDX,0EC0AH
MOVAL,24H;南北绿灯,东西红灯亮
OUTDX,AL
CALLDELAY
CALLDELAY;长延时,3s左右
CALLDELAY
CALLDELAY
CALLDELAY
CALLDELAY
CALLDELAY
MOVBL,8
MOVAL,04H
L0:
XORAL,40H;南北黄灯闪,东西红灯亮
OUTDX,AL
CALLDELAY;延时
CALLDELAY
DECBL;闪烁几次
JNZL0
CALLDELAY
MOVAL,81H;南北红灯亮,东西绿灯亮
OUTDX,AL
CALLDELAY
CALLDELAY
CALLDELAY;长延时,3s左右
CALLDELAY
CALLDELAY
CALLDELAY
CALLDELAY
MOVBL,9
MOVAL,80H
L1:
XORAL,02H;南北红灯亮,东西黄灯闪
OUTDX,AL
CALLDELAY;延时
CALLDELAY
DECBL
JNZL1;闪烁几次
CALLDELAY
MOVDL,0FFH
MOVAH,06H
INT21H
JZL3;六号功能判断若无字符输入ZF=1继续循环
;------------------------------
MOVAH,4CH
INT21H
;-----------延时函数------------
DELAY:
PUSHCX
PUSHDX
MOVCX,1FFFH
LOP1:
MOVDX,0FFFFH
LOP2:
DECDX
JNZLOP2
LOOPLOP1
POPDX
POPCX
RET
CODEENDS
ENDSTART
可编程定时时钟/计数器(8253)
五、实验目的
掌握8253的基本工作原理和编程方法。
六、实验内容
按图5-1虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。
按图5-2连接电图,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1HZ)。
七、实验原理
8253具有3个独立的计数通道,采用减1计数方式。
在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。
当计数脉冲是已知周期的时钟信号时,计数就成为定时。
作计数器时,要求计数的次数可直接作为计数器的初值预置到减“1”计数器中。
8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。
本实验用到的是方式0—计数结束中断。
在写入计数值N之后的第一个CLK的下降沿将N装入计数执行单元,待下一个CLK的下降沿到来且门控信号GATE为高电平时,通道开始启动计数。
在计数过程中,OUT一直保持低电平,直到计数达“0”时,OUT输出由低电平变为高电平,并且保持高电平。
8253动态分配地址:
控制寄存器:
0EC03H
计数器0地址:
0EC00H
计数器1地址:
0EC01H
八、程序流程图
九、程序清单
DATASEGMENT
NEQU0BH;计数器初值,不大于0FH
CHLDB0AH,0DH,'$';换行
DATAENDS
STACK1SEGMENTSTACK
DW100DUP(0)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1
START:
MOVAX,DATA
MOVDS,AX
;--------------INIT----------------
MOVDX,0EC03H;控制寄存器地址
MOVAL,10H;计数器0,低字节,方式0,二进制计数
OUTDX,AL;写入控制字
MOVDX,0EC00H
MOVAL,N
OUTDX,AL;写入计数初值
MOVCL,N
L0:
;MOVAL,0;计数器0锁存
;MOVDX,IO8253
;OUTDX,AL
MOVDX,0EC00H
INAL,DX;读取当前数值
CMPAL,CL
JNEL0;若AL不等于CL,则继续到L0循环
DECCL;更改CL值
MOVDL,AL
CMPDL,09H;是0~9吗?
JLEASCI
ADDDL,07H;是A~F
ASCI:
ADDDL,30H
MOVAH,02H;单字符输出计数器当前值
INT21H
MOVDX,OFFSETCHL;输出字符串换行
MOVAH,09H
INT21H
CMPCL,0
JNLL0;CL不小于0时,继续循环
;------------------------------
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
2)
DATASEGMENT
XDB?
DATAENDS
STACK1SEGMENTSTACK
DW100HDUP(0)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1
START:
MOVAX,DATA
MOVDS,AX
MOVAL,36H
MOVDX,0EC03H;写计数器0控制字
OUTDX,AL
MOVAX,1000;写计数器0初值
MOVDX,0EC00H
OUTDX,AL;先写低字节后写高字节
MOVAL,AH
OUTDX,AL
;-------------------------------------
MOVAL,76H
MOVDX,0C403H
OUTDX,AL;写计数器1控制字
MOVAX,1000;写计数器0初值
MOVDX,0C401H
OUTDX,AL
MOVAL,AH;先写低字节后写高字节
OUTDX,AL
CODEENDS
ENDSTART
中断实验(纯DOS)
一十、实验目的
1、掌握PC机中断处理系统的基本原理。
2、学会编写中断服务程序。
一十一、实验原理
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保留
PCI总线中的中断线只有四根,INTA#、INTB#、INTC#、INTD#,它们需要通过P&P的设置来和某一根中断相连接才能进行中断申请。
一十二、实验内容
实验电路如图31,直接用手动产单脉冲作为中断请求信号(只需连接一根导线)。
要求每按一次开关产生一次中断,在屏幕上显示一次“TPCpcicardInterrupt”,中断10次后程序退出。
提示:
由于9054的驱动程序影响直写9054芯片的控制寄存器,中断实验需要在纯DOS的环境中才能正常运行。
这里指的纯DOS环境是指微机启动时按F8键进入的DOS环境。
WINDOWS重启进入MSDOS方式由于系统资源被重新规划过,所以也不能正常实验。
由于TPC卡使用PCI总线,所以分配的中断号每台微机可能都不同,编程时需要了解当前的微机使用那个中断号并进行设置,获取方法请参看汇编程序使用方法的介绍。
(也可使用自动获取资源分配的程序取得中断号)
在纯DOS环境下,有些微机的BIOS设置中有将资源保留给ISA总线使用的选项,致使在纯DOS环境(WINDOWS环境下不会出现此问题)下PCI总线无法获得系统资源,也就无法做实验,这时需要将此选项修改为使用即插即用。
在纯DOS环境下,有些微机的BIOS设置中有使用即插即用操作系统的选项,如果在使用即插即用操作系统状态下,BIOS将不会给TPC卡分配系统资源,致使在纯DOS环境(WINDOWS环境下不会出现此问题)下PCI总线无法获得系统资源,也就无法做实验,这时需要将此选项修改为不使用即插即用操作系统。
由于TPC卡使用9054芯片连接微机,所以在编程使用微机中断前需要使能9054的中断功能。
其中IOPORT_CENT是9054芯片寄存器组的I/O起始地址,每台微机可能都不同,编程时需要了解当前的微机使用哪段并进行设置,获取方法请参看本书结尾部分的介绍。
(也可使用自动获取资源分配的程序取得),+68H的偏移是关于中断使能的寄存器地址。
PC机中断控制器8259的地址为20H、21H,编程时要根据中断类型号设置中断矢量,8259中断屏蔽寄存器IMR对应位要清零(允许中断)。
一十三、程序流程图
五、程序清单
;*********************;
;*中断*;
;*********************;
DATASEGMENT
INT_VECTEQU073H;中断0-7的向量为:
08H-0FH,中断8-15的向量为:
70H-77H.中断类型号:
73H
IRQ_MASK_2_7EQU011111011B;中断掩码IMR,开主片IR2中断——与从片级联
IRQ_MASK_9_15EQU011110111B;开从片IR3中断
IOPORT_CENTEQU0E800H;TPC卡中9054芯片寄存器组的IO地址
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口,使能中断。
+68H的偏移是关于中断使能的寄存器地址
INAX,DX
ORAX,0900H;第8位和第11位设置为1,8:
能够产生PCI中断,11:
能够LOCAL端输入的中断送到PCI端
OUTDX,AX
;--------------------------------保存原中断向量
MOVAL,INT_VECT
MOVAH,35H;获取原中断向量=(ES:
BX)
INT21H
MOVAX,ES
MOVCSREG,AX
MOVIPREG,BX
;--------------------------------设置新中断向量
MOVAX,CS
MOVDS,AX
MOVDX,OFFSETINT_PROC
MOVAL,INT_VECT
MOVAH,25H
INT21H
INAL,21H;PC机中断控制器8259的地址为20H21H
ANDAL,IRQ_MASK_2_7;OCW1,开第一片IR2
OUT21H,AL
INAL,0A1H;第二片8259地址A0、A1H,OCW1,开IR3
ANDAL,IRQ_MASK_9_15
OUT0A1H,AL
;--------------------------------显示提示字符:
程序运行过程中按任意键退出或者10次中断后退出
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMSG2
MOVAH,09H
INT21H
MOVDX,OFFSETMSG3
MOVAH,09H
INT21H
MOVIRQ_TIMES,0AH;计数初值10次
STI;开中断
LOOP1:
CMPIRQ_TIMES,0;等待中断并判断中断10次后退出
JZEXIT
MOVAH,1
INT16H
JNZEXIT
JMPLOOP1
EXIT:
CLI
MOVBL,IRQ_MASK_2_7;恢复中断掩码,屏蔽IRQ1的2和IRQ2的3
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
MOVAX,4C00H
INT21H
;---------------------------------------中断服务程序
INT_PROCPROCFAR
CLI
PUSHAX
PUSHDX
PUSHDS
DECIRQ_TIMES
MOVAX,DATA;INTERRUPTTODO
MOVDS,AX
MOVDX,OFFSETMSG1;打印字符串
MOVAH,09H
INT21H
MOVAL,20H;写OCW2,送两级的EOI
OUT0A0H,AL
OUT20H,AL
POPDS
POPDX
POPAX
STI
IRET
INT_PROCENDP
CODEENDS
ENDSTART
模/数转换器
一十四、实验目的
了解模/数转换的基本原理,掌握ADC0809的使用方法。
一十五、实验内容
实验电路原理图如图38。
通过实验台左下角电位器RW1输出0~5V直流电压送入ADC0809通道0(IN0),利用debug的输出命令启动A/D转换器,输入命令读取转换结果,验证输入电压与转换后数字的关系。
启动IN0开始转换:
Out02980
读取转换结果:
In0298
编程采集IN0输入的电压,在屏幕上显示出转换后的数据(用16进制数)。
将JP3的1、2短接,使IN2处于双极性工作方式,并给IN1输入一个低频交流信号(幅度为±5V),编程采集这个信号数据并在屏幕上显示波形。
提示:
ADC0809的IN0口地址为298H,IN1口地址为299H。
IN0单极性输入电压与转换后数字的关系为:
其中Ui为输入电压,UREF为参考电压,这里的参考电压为PC机的+5V电源。
一次A/D转换的程序可以为:
MOVDX,口地址
OUTDX,AL;启动转换
;延时
INAL,DX;读取转换结果放在AL中
一十六、程序流程图
一十七、程序清单
1:
AD_1.ASM
ioportequ0d400h-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
串行通讯
一十八、实验目的
1、进一步了解串行通信的基本原理。
2、掌握串行接口芯片8250的工作原理和编程方法。
3、熟悉PC机串行口的基本连接方法
一十九、实验内容
1、PC机RS-232串口自发自收。
按照PC机串口自发自收的连接方法连线。
编写PC机自发自收串行通信程序,要求:
从键盘输入一个字符,将字符通过串口发送出去,再由此串口将字符接收回来并在屏幕上显示,实现自发自收。
2、两台PC机间RS-232串口通信。
按照PC机RS-232串口直接互连的方法连接两台PC机。
编写PC机直接互连串行通信程序;要求:
由甲机键盘键入字符经串口发送给乙机,再由乙机通过串口接收字符并显示在屏幕上。
当键入感叹号“!
”,结束收发过程。
二十、实验原理
1、异步通信
本实验以字符为单位进行传送,每传送一个字符,以起始位作为开始标志,以停止位作为结束标志。
异步串行通信的工作过程是:
传送开始后,接收设备不断地检测传输线是否有起始位到来,当接收到一系列的“1”(空闲或停止位)之后,检测到第一个“0”,说明起始位出现,就开始接收所规定的数据位、奇偶校验位及停止位。
经过接收器处理,将停止位去掉,把数据位拼装成一字节数据,并且经奇偶校验无错误,才算是正确地接收到了一个字符。
当一个字符接收完毕,接收设备又继续测试传输线,监视“0”电平的到来(下一个字符的开始),直到全部数据接收完毕。
2、8250各部分功能说明
8250片内有10个寄存器,其中有几个是共用地址的,其识别由线路控制寄存器(LCR)的最高位DLAB来决定。
各寄存器的地址如下:
3、数据发送和接收:
二十一、程序清单
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,3FC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 研究 教学 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)