《微机原理与接口》课程上机操作实验报告.docx
- 文档编号:2386628
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:25
- 大小:510.82KB
《微机原理与接口》课程上机操作实验报告.docx
《《微机原理与接口》课程上机操作实验报告.docx》由会员分享,可在线阅读,更多相关《《微机原理与接口》课程上机操作实验报告.docx(25页珍藏版)》请在冰点文库上搜索。
《微机原理与接口》课程上机操作实验报告
《微机原理与接口》课程上机操作
实验报告
姓名:
王自胜
学号:
12212162
指导教师:
付文秀
时间:
2014年12月
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
串行通讯
二、实验目的
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,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.双机通信
(1)发送端:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAL,80H;8250初始化,设DLAB=1
MOVDX,3FBH
OUTDX,AL
MOVAX,30H
MOVDX,3F8H
OUTDX,AL;写入除数低字节
MOVAL,AH
INCDX
OUTDX,AL;写入除数高字节
MOVAL,0AH;7位数据,1位停止,奇校验
MOVDX,3FBH
OUTDX,AL;写入线路控制寄存器
MOVAL,03H
MOVDX,3FCH
OUTDX,AL;写入Modem控制寄存器
MOVAL,0
MOVDX,3F9H
OUTDX,AL;写中断允许寄存器,屏蔽所有中断
WAIT1:
MOVDX,3FDH;读线路状态寄存器
INAL,DX
TESTAL,1EH;出错否
JNZERROR
;TESTAL,01H;接收数据就绪否
;JNZSEND;发送
TESTAL,20H;发送寄存器空否,不空,返回等待
JZWAIT1
SEND:
MOVAH,1
INT21H;读键盘
CMPAL,21H;是'!
'?
JZEXIT;是,返回操作系统
MOVDX,3F8H;不是,则发送
OUTDX,AL
JMPWAIT1;返回等待
ERROR:
MOVDX,3FDH;出错则清除线路状态寄存器
INAL,DX
MOVDL,'?
';显示'?
'
MOVAH,02H
INT21H
JMPWAIT1
EXIT:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
(2)接收端:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAL,80H;8250初始化
MOVDX,3FBH
OUTDX,AL
MOVAX,30H;写除数
MOVDX,3F8H
OUTDX,AL;写入除数低字节
MOVAL,AH
INCDX
MOVDX,3F9H
OUTDX,AL;写入除数高字节
MOVAL,0AH
MOVDX,3FBH
OUTDX,AL;写入线路控制寄存器
MOVAL,03H
MOVDX,3FCH
OUTDX,AL;写入Modem控制寄存器
MOVAL,0
MOVDX,3F9H
OUTDX,AL;写中断允许寄存器,屏蔽所有中断
WAIT1:
MOVDX,3FDH;读线路状态寄存器
INAL,DX
TESTAL,1EH;出错否
JNZERROR
TESTAL,01H;接收数据就绪否
JNZRECEIVE;转接收
;TESTAL,20H;发送寄存器空否,不空,返回等待
;JZWAIT1
JMPWAIT1;均返回等待
RECEIVE:
MOVDX,3F8H;读接收数据
INAL,DX
ANDAL,01111111B;保留位数据
CMPAL,21H;是'!
'?
JNZCHAR
MOVAH,4CH;返回操作系统
INT21H
CHAR:
PUSHAX
MOVDL,AL
MOVAH,2;显示接受字符
INT21H
POPAX
JMPWAIT1;返回等待
ERROR:
MOVDX,3FDH;出错则清除线路状态寄存器
INAL,DX
MOVDL,'?
';显示'?
'
MOVAH,02H
INT21H
JMPWAIT1
CODEENDS
ENDSTART
课程综合实验(抢答器)
三、实验目的
1、了解微机化竞赛抢答器的基本原理。
2、进一步学习使用并行接口。
实验内容
图5-4为竞赛抢答器(模拟)的原理图,逻辑开关K0~K7代表竞赛抢答按钮0~7号,当某个逻辑电平开关置“1”时,相当某组抢答按钮按下。
在七段数码管上将其组号(0~7)显示出来,并使喇叭响一下。
从键盘上按空格键开始下一轮抢答,按其它键程序退出。
8255动态分配地址:
控制寄存器:
0EC0BH
A口地址:
0EC08H
C口地址:
0EC0AH
程序流程图
程序清单
DATASEGMENT
LISTDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DATAENDS
STACK1SEGMENTSTACK
DW100HDUP(0)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1
START:
MOVAX,DATA
MOVDS,AX
;--------------------------------------------------
MOVDX,0EC0BH
MOVAL,89H
OUTDX,AL;对8255进行初始化
L0:
MOVDX,0EC0AH
INAL,DX;读C口状态
CMPAL,0;如果为0则循环
JZL0
MOVBL,0
L1:
INCBL
SHRAL,1;将AL逻辑右移
JNCL1
DECBL
MOVAL,BL;求出组号
MOVBX,OFFSETLIST;七段显示代码表的首址送BX
ANDAX,00FFH;屏蔽AX高字节,组号
ADDBX,AX;形成显示字符的地址
MOVAL,[BX];取出字符送AL
MOVDX,0EC08H
OUTDX,AL;送到A口输出显示
MOVDL,7
MOVAH,2
INT21H;响铃功能调用
MOVAH,01H
INT21H
CMPAL,20H;当为空格时跳到CLOSE
JZCLOSE
MOVAH,4CH
INT21H
CLOSE:
MOVAL,0
MOVDX,0EC08H
OUTDX,AL
JMPL0
CODEENDS
ENDSTART
实验总结
做完了微机的实验之后感触很多,实践是检验自己知识掌握程度的最好工具。
做实验之前感觉自己这方面的知识点掌握的还是很牢固的,做了试验之后才发现了自己的不足。
另外微机实验让我有种学以致用的感觉,通过动手操作也提高了我对微机这门课程的兴趣。
最后给实验室一些建议:
1:
希望能把实验室的电脑整体杀一下毒,我身边有好多同学把程序拷贝到自己电脑时出现了电脑死机,系统崩溃的问题,给学习生活带来了很大的不便。
2:
实验室里有很多试验箱是有问题的,会影响实验的完成,希望学校能够及时更换。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理与接口 微机 原理 接口 课程 上机 操作 实验 报告