北交 微机原理与接口实验.docx
《北交 微机原理与接口实验.docx》由会员分享,可在线阅读,更多相关《北交 微机原理与接口实验.docx(23页珍藏版)》请在冰豆网上搜索。
![北交 微机原理与接口实验.docx](https://file1.bdocx.com/fileroot1/2023-1/14/65c2afab-a1ec-41dc-87fe-4d9fe4c4a7e9/65c2afab-a1ec-41dc-87fe-4d9fe4c4a7e91.gif)
北交北交微机原理与接口实验微机原理与接口实验微机原理与接口技术实验报告姓名学号班级老师时间2014年12月23日目录实验一交通灯控制实验1一、实验时间1二、实验目的1三、实验内容1四、实验提示1五、实验流程2六、实验程序2七、实验现象4八、实验收获4实验二可编程定时器/计数器(8253)5一、实验时间5二、实验目的5三、实验内容5四、实验提示6五、实验流程6六、实验程序6七、实验现象8八、实验收获8实验三PC机串行通信实验9一、实验时间9二、实验目的9三、实验内容9四、实验提示9五、实验流程10六、实验程序11七、实验现象14八、实验收获14实验四竞赛抢答器15一、实验时间15二、实验目的15三、实验内容15四、实验提示15五、实验流程16六、实验程序16七、实验现象17八、实验收获17实验一实验一交通灯控制实验交通灯控制实验一、实验时间一、实验时间2014年11月29日星期六10:
0012:
00二、实验目的二、实验目的
(1)通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。
(2)掌握利用X86汇编语言技巧(3)掌握X86微处理器与可编程并行接口芯片8255A硬件电路设计(4)熟悉模拟交通灯控制的实现方法并思考如何应用在实际中。
三、实验内容三、实验内容如下图所示,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。
编程使六个灯按交通灯变化规律燃灭。
四、实验提示四、实验提示1、8255控制寄存器端口地址:
28BHA口地址:
288HC口地址:
28AH2、十字路口交通灯的变化规律要求:
(1)南北路口的绿灯、东西路口的红灯同时亮3秒左右;
(2)南北路口的黄灯闪烁3次,同时东西路口的红灯继续亮;(3)南北路口的红灯、东西路口的绿灯同时亮3秒;(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁3次;(5)转
(1)重复。
五、实验流程五、实验流程六、实验程序六、实验程序DATASEGMENTXDB?
DATAENDSSTACK1SEGMENTSTACKDW100HDUP(0)STACK1ENDSCODESEGMENTASSUMECS:
CODE,DS:
DATA,SS:
STACK1START:
MOVAX,DATAMOVDS,AX;-INIT-MOVDX,0EC0BH;写控制字MOVAL,80HOUTDX,ALL3:
MOVDX,0EC0AHMOVAL,24H;南北绿灯,东西红灯亮OUTDX,ALCALLDELAYCALLDELAY;长延时,3s左右CALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYMOVBL,8MOVAL,04HL0:
XORAL,40H;南北黄灯闪,东西红灯亮OUTDX,ALCALLDELAY;延时CALLDELAYDECBL;闪烁几次JNZL0CALLDELAYMOVAL,81H;南北红灯亮,东西绿灯亮OUTDX,ALCALLDELAYCALLDELAYCALLDELAY;长延时,3s左右CALLDELAYCALLDELAYCALLDELAYCALLDELAYMOVBL,9MOVAL,80HL1:
XORAL,02H;南北红灯亮,东西黄灯闪OUTDX,ALCALLDELAY;延时CALLDELAYDECBLJNZL1;闪烁几次CALLDELAYMOVDL,0FFHMOVAH,06HINT21HJZL3;六号功能判断若无字符输入ZF=1继续循环MOVAH,4CHINT21H;-延时函数-DELAY:
PUSHCXPUSHDXMOVCX,1FFFHLOP1:
MOVDX,0FFFFHLOP2:
DECDXJNZLOP2LOOPLOP1POPDXPOPCXRETCODEENDSENDSTART七、实验现象七、实验现象南北路口的绿灯、东西路口的红灯同时亮3秒左右,然后南北路口的黄灯闪烁若干次,东西路口的红灯继续亮,接着南北路口的红灯、东西路口的绿灯同时亮3秒左右,然后南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。
如此循环,结果与实验要求相符。
八、实验收获八、实验收获这是我们的第一个微机实验,对于全新的试验箱和全新的软件都比较陌生,所以在实验开始时花费了一些时间来熟悉实验环境。
我认为如何实现延时是本实验最大的困难,因为要亮三秒钟左右,因此要使用双层嵌套的延迟方式才能满足要求。
同时要不断调整延迟的次数,才能保证交通灯点亮的时间满足要求。
在验收时,助教主要考察了对TPC-2003A集成开发环境的应用情况。
在ASM程序正常汇编与链接之后,选择菜单栏中的“ASM调试”菜单,选择开始调试选项,则进入调试工具TD(turbodebug)调试窗口,在调试窗口中可以用热键F2设置断点、用F8分步执行等。
这个实验让我想起了设置在九教和五教附近的两个红绿灯,据说是咱们电信学院用于教学实践的。
虽然真正的红绿灯控制肯定比这个小实验要复杂的多,但我想,基本原理应该还是差不多的。
实验二实验二可编程定时器可编程定时器/计数器(计数器(8253)一、实验时间一、实验时间2014年12月6日星期六10:
0012:
00二、实验目的二、实验目的掌握8253的基本工作原理和编程方法。
(1)掌握8253与X86微机处理硬件连接原理。
(2)掌握8253计数定时应用编程。
(3)熟悉掌握8253在PC机系统中典型应用方法并思考如何应用在其他系统中。
三、实验内容三、实验内容1、按下图虚线连接电路,将计数器0设置为工作方式0,计数器初值为N(N0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0遍高电平)。
2、按下图连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1Hz)。
四、实验提示四、实验提示8253控制寄存器地址283H计数器0地址280H计数器1地址281HCLK0连接时钟1MHZ五、实验流程五、实验流程六、实验程序六、实验程序1、实验1DATASEGMENTNEQU0BH;计数器初值,不大于0FHCHLDB0AH,0DH,$;换行DATAENDSSTACK1SEGMENTSTACKDW100DUP(0)STACK1ENDSCODESEGMENTASSUMECS:
CODE,DS:
DATA,SS:
STACK1START:
MOVAX,DATAMOVDS,AX;-INIT-MOVDX,283H;控制寄存器地址MOVAL,10H;计数器0,低字节,方式0,二进制计数OUTDX,AL;写入控制字MOVDX,280HMOVAL,NOUTDX,AL;写入计数初值MOVCL,NL0:
;MOVAL,0;计数器0锁存;MOVDX,IO8253;OUTDX,ALMOVDX,280HINAL,DX;读取当前数值CMPAL,CLJNEL0;若AL不等于CL,则继续到L0循环DECCL;更改CL值MOVDL,ALCMPDL,09H;是09吗?
JLEASCIADDDL,07H;是AFASCI:
ADDDL,30HMOVAH,02H;单字符输出计数器当前值INT21HMOVDX,OFFSETCHL;输出字符串换行MOVAH,09HINT21HCMPCL,0JNLL0;CL不小于0时,继续循环;-MOVAH,4CHINT21HCODEENDSENDSTART2、实验二DATASEGMENTXDB?
DATAENDSSTACK1SEGMENTSTACKDW100HDUP(0)STACK1ENDSCODESEGMENTASSUMECS:
CODE,DS:
DATA,SS:
STACK1START:
MOVAX,DATAMOVDS,AXMOVAL,36HMOVDX,283H;写计数器0控制字OUTDX,ALMOVAX,1000;写计数器0初值MOVDX,280HOUTDX,AL;先写低字节后写高字节MOVAL,AHOUTDX,AL;-MOVAL,76HMOVDX,283HOUTDX,AL;写计数器1控制字MOVAX,1000;写计数器0初值MOVDX,281HOUTDX,ALMOVAL,AH;先写低字节后写高字节OUTDX,ALCODEENDSENDSTART七、实验现象七、实验现象1、实验1开始时,逻辑笔显示为低电平,绿灯亮,按下脉冲键屏幕显示10,之后每按一次脉冲键,计数器值将减1并在屏幕上显示,当减到0的时候,逻辑笔显示为高电平,红灯亮。
2、实验2逻辑笔高低电平交替变换,红绿灯交替亮,1秒变1次。
八、实验收获八、实验收获本次实验遇到的最大问题就是设备问题。
我在调试的时候,电脑和实验箱都是时好时坏的,甚至有时自己调试时是好的,但是找老师验收的时候就坏了。
具体表现在屏幕上不显示计数或者指示灯不变化。
具体原因我也不知道,我觉得应该是设备的问题吧。
验收时,主要考察的对象是实验2的计数初值,若将1000换为2000,则红绿灯变换频率将由1秒1次改为1秒2次。
通过这次实验,我再一次巩固了8253的相关知识,也对实验所用到的软件和实验箱更加了解。
实验三实验三PC机串行通信实验机串行通信实验一、实验时间一、实验时间2014年12月13日星期六10:
0012:
00二、实验目的二、实验目的1、进一步了解串行通信的基本原理。
2、掌握串行接口芯片8250的工作原理和编程方法。
3、熟悉PC机串行口的基本连接方法三、实验内容三、实验内容1、PC机RS-232串口自发自收。
按照PC机串口自发自收的连接方法连线。
编写PC机自发自收串行通信程序,要求:
从键盘输入一个字符,将字符通过串口发送出去,再由此串口将字符接收回来并在屏幕上显示,实现自发自收。
2、两台PC机间RS-232串口通信。
按照PC机RS-232串口直接互连的方法连接两台PC机。
编写PC机直接互连串行通信程序;要求:
由甲机键盘键入字符经串口发送给乙机,再由乙机通过串口接收字符并显示在屏幕上。
当键入感叹号“!
”,结束收发过程。
四、实验提示四、实验提示1、连线图DB-9连接器双机近距离通信连接图2、8250寄存器地址PC机自带两个串口,分为COM1和COM2,地址分别在3F8-3FFH和2F8-2FFH,接口芯片选用8250。
8250片内有10个寄存器,其中有几个是共用地址的,其识别由线路控制寄存器(LCR)的最高位DLAB来决定。
各寄存器的地址和格式如下所示:
.五、实验流程五、实验流程1、实验1自发自收2、实验2双机通信六、实验程序六、实验程序1、实验1自发自收CODESEGMENTASSUMECS:
CODESTART:
MOVAL,80H;初始化MOVDX,3FBHOUTDX,ALMOVAX,30HMOVDX,3F8HOUTDX,AL;写入除数低字节MOVAL,AHMOVDX,3F9HOUTDX,AL;写入除数高字节MOVAL,0AH;7位数据,1位停止,奇数校验MOVDX,3FBHOUTDX,AL;写入线路控制寄存器MOVAL,0FHMOVDX,3FCHOUTDX,AL;写入Modem控制寄存器MOVAL,0;屏蔽全部中断MOVDX,3F9HOUTDX,AL;写中断允许寄存器0.WAIT_FOR:
MOVDX,3FDH;读线路状态寄存器INAL,DXTESTAL,00011110B;出错否JNZERROR;不为零转ERRORTESTAL,00000001B;接收数据就绪否JNZRECEIVETESTAL,01000000B;发送寄存器空否,不空,返回等待JZWAIT_FORMOVAH,1INT21H;读键盘MOVDX,3F8H;发送OUTDX,ALJMPWAIT_FOR;返回等待RECEIVE:
MOVDX,3F8H;读接收数据INAL,DXANDAL,01111111B;保留7位数据CMPAL,21H;是否!
JNZCHARMOVAH,4CH;返回DOSINT21HCHAR:
PUSHAXMOVDL,ALMOVAH,02H;显示接收字符INT21HPOPAXJMPWAIT_FOR;返回等待ERROR:
MOVDX,3FDH;出错则清除线路状态寄存器INAL,DXMOVDL,?
;显示?
MOVAH,02HINT21HJMPWAIT_FORCODEENDSENDSTART2、实验2双机通信DATASEGMENTD1DB?
CHLDB0AH,0DH,$;换行DATAENDSSTACK1SEGMENTSTACKDW100HDUP(?
)STACK1ENDSCODESEGMENTASSUMECS:
CODE,DS:
DATA,SS:
STACK1START:
MOVAX,DATAMOVDS,AXMOVAX,DATAMOVDS,AXMOVDX,3FBHMOVAL,10000000BOUTDX,AL;置线路控制寄存器DLAB为“1”MOVDX,3F8HMOVAX,60HOUTDX,ALINCDXMOVAL,AHOUTDX,AL;波特率1200MOVDX,3FBHMOVAL,00001010BOUTDX,ALMOVDX,3FCHMOVAL,00000011BOUTDX,ALMOVDX,3F9HMOVAL,00000000BOUTDX,ALWAIT1:
MOVDX,3FDH;读线路状态寄存器INAL,DXTESTAL,00011110B;判断是否有错:
终止符、帧格式、奇偶、溢出JNZERRORTESTAL,00000001B;判断是否收到JNZRECEIVETESTAL,00100000B;判断发送端是否空JZWAIT1MOVDL,0FFH;六号功能调用读入待发送数据MOVAH,06HINT21HJZWAIT1MOVDX,3F8H;写发送REGOUTDX,ALJMPWAIT1;返回WAIT1CHAR:
PUSHAXMOVDL,AL;显示接收MOVAH,02HINT21HMOVDX,OFFSETCHL;输出字符串换行MOVAH,09HINT21HPOPAXJMPWAIT1ERROR:
MOVDX,3FDH;读线路状态寄存器INAL,DXMOVDL,?
;对于错误显示?
MOVAH,02HINT21HJMPWAIT1RECEIVE:
MOVDX,3F8HINAL,DX;读数据接收寄存器CMPAL,!
;判断是否结束JNECHARMOVAH,4CHINT21HCODEENDSENDSTART七、实验现象七、实验现象1、实验1自发自收在屏幕上输入一个字符,屏幕显示输入字符,还将显示自行接收回来的字符,即每个字符显示两次。
2、实验2双机通信将两台计算机RS-232串口用交叉线连接起来,同时运行接收和发送程序。
在计算机A输入字符将在计算机B显示该字符,而在计算机B输入字符将在计算机A显示该字符。
八、实验收获八、实验收获这个实验的难点在于编写程序,为了完成这个实验,我们查阅了很多参考程序,也失败了很多次,后来在询问老师同学的基础上才使实验得以顺利完成。
自发自收比较简单,在双机通信那里我们花费了许多时间,因为一开始我们只能实现计算机A输入、计算机B显示,而不能实现计算机B输入、计算机A显示,也就是只能实现半双工。
后来改进了程序才实现了全双工。
通过此次实验,我了解了计算机通信的基本原理,学会了实现两台计算机数据通信的方法,并掌握了通信相关的协议与标准、通信软件的编程与调试、串行接口芯片8250的工作原理和编程方法等,还熟悉了PC机串行口的基本连接方法。
实验四实验四竞赛抢答器竞赛抢答器一、实验时间一、实验时间2014年12月20日星期六10:
0012:
00二、实验目的二、实验目的1、了解微机化竞赛抢答器的基本原理。
2、进一步学习使用并行接口。
三、实验内容三、实验内容下图为竞赛抢答器(模拟)的原理图:
逻辑开关K0K7代表竞赛抢答按钮07号,当某个逻辑电平开关置“1”时,相当某组抢答按钮按下。
在七段数码管上将其组号(07)显示出来,并使喇叭响一下。
从键盘上按空格键开始下一轮抢答,按其它键程序退出。
四、实验提示四、实验提示设置8255为C口输入、A口输出,读取C口数据,若为0表示无人抢答,若不为0则有人抢答。
根据读取数据可判断其组号。
从键盘上按空格键开始下一轮抢答,按其它键程序退出。
响铃的DOS功能调用:
MOVDL,7;响铃ASCII码为07MOVAH,2INT21H五、实验流程五、实验流程六、实验程序六、实验程序DATASEGMENTLISTDB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDATAENDSSTACK1SEGMENTSTACKDW100HDUP(0)STACK1ENDSCODESEGMENTASSUMECS:
CODE,DS:
DATA,SS:
STACK1START:
MOVAX,DATAMOVDS,AXMOVDX,0EC0BHMOVAL,89HOUTDX,AL;对8255进行初始化L0:
MOVDX,0EC0AHINAL,DX;读C口状态CMPAL,0;如果为0则循环JZL0MOVBL,0L1:
INCBLSHRAL,1;将AL逻辑右移JNCL1DECBLMOVAL,BL;求出组号MOVBX,OFFSETLIST;七段显示代码表的首址送BXANDAX,00FFH;屏蔽AX高字节,组号ADDBX,AX;形成显示字符的地址MOVAL,BX;取出字符送ALMOVDX,0EC08HOUTDX,AL;送到A口输出显示MOVDL,7MOVAH,2INT21H;响铃功能调用MOVAH,01HINT21HCMPAL,20H;当为空格时跳到CLOSEJZCLOSEMOVAH,4CHINT21HCLOSE:
MOVAL,0MOVDX,0EC08HOUTDX,ALJMPL0CODEENDSENDSTART七、实验现象七、实验现象在逻辑开关K0K7中,当某个开关逻辑电平置“1”时,则数码管上显示相应数字,并且蜂鸣器响一下。
从键盘上按空格键开始下一轮抢答,按其它键程序退出。
八、实验收获八、实验收获这次实验是本次微机实验的最后一次实验,实验过程中涉及到本课程中的接口芯片、中断、定时、DOS功能调用等知识,是一个综合性的实验。
本实验比较有趣,程序也较简单,所以比较顺利。
在验收时,通过将DECBL改为INCBL,可以实现数码管显示内容加2,即开关K0推上时,数码管显示2,以此类推。