北邮微机原理硬件实验报告.docx

上传人:b****1 文档编号:14627546 上传时间:2023-06-25 格式:DOCX 页数:29 大小:675.57KB
下载 相关 举报
北邮微机原理硬件实验报告.docx_第1页
第1页 / 共29页
北邮微机原理硬件实验报告.docx_第2页
第2页 / 共29页
北邮微机原理硬件实验报告.docx_第3页
第3页 / 共29页
北邮微机原理硬件实验报告.docx_第4页
第4页 / 共29页
北邮微机原理硬件实验报告.docx_第5页
第5页 / 共29页
北邮微机原理硬件实验报告.docx_第6页
第6页 / 共29页
北邮微机原理硬件实验报告.docx_第7页
第7页 / 共29页
北邮微机原理硬件实验报告.docx_第8页
第8页 / 共29页
北邮微机原理硬件实验报告.docx_第9页
第9页 / 共29页
北邮微机原理硬件实验报告.docx_第10页
第10页 / 共29页
北邮微机原理硬件实验报告.docx_第11页
第11页 / 共29页
北邮微机原理硬件实验报告.docx_第12页
第12页 / 共29页
北邮微机原理硬件实验报告.docx_第13页
第13页 / 共29页
北邮微机原理硬件实验报告.docx_第14页
第14页 / 共29页
北邮微机原理硬件实验报告.docx_第15页
第15页 / 共29页
北邮微机原理硬件实验报告.docx_第16页
第16页 / 共29页
北邮微机原理硬件实验报告.docx_第17页
第17页 / 共29页
北邮微机原理硬件实验报告.docx_第18页
第18页 / 共29页
北邮微机原理硬件实验报告.docx_第19页
第19页 / 共29页
北邮微机原理硬件实验报告.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

北邮微机原理硬件实验报告.docx

《北邮微机原理硬件实验报告.docx》由会员分享,可在线阅读,更多相关《北邮微机原理硬件实验报告.docx(29页珍藏版)》请在冰点文库上搜索。

北邮微机原理硬件实验报告.docx

北邮微机原理硬件实验报告

北京邮电大学

——微机原理与接口技术硬件实验报告

 

 

学院:

信息与通信工程学院

班级:

学号:

班内序号:

姓名:

 

实验一I/O地址译码

一、实验目的

掌握I/O地址译码电路的工作原理。

二、实验原理和内容

1、实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。

译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:

280H~287H,Y1:

288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。

例如:

执行下面两条指令

MOVDX,2A0H

OUTDX,AL(或INAL,DX)

Y4输出一个负脉冲,执行下面两条指令

MOVDX,2A8H

OUTDX,AL(或INAL,DX)

Y5输出一个负脉冲。

图1-1

利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。

2、接线:

Y4/IO地址接CLK/D触发器

Y5/IO地址接CD/D触发器

D/D触发器接SD/D角发器接+5V

Q/D触发器接L7(LED灯)或逻辑笔

三、硬件接线图和软件程序流程图

1、硬件连线图如图1-1;

2、软件程序流程图

 

 

 

图1-2

四、源程序

DATA1EQU2A0H;定义数据变量代表地址2A0H

DATA2EQU2A8H;定义数据变量代表地址2A8H

CODESEGMENT

ASSUMECS:

CODE

BEGIN:

MOVDX,DATA1

OUTDX,AL;向地址DATA1输出信号

CALLDELAY;调用延时子程序

MOVDX,DATA2

OUTDX,AL

CALLDELAY

MOVAH,1;检测是否有键盘输入

INT16H

JEBEGIN;如果没有输入,则循环

MOVAX,4C00H;返回DOS

INT21H

DELAYPROCNEAR;延时子程序

MOVCX,0FFFFH

LP1:

MOVBX,200

LP2:

DECBX

JNZLP2

LOOPLP1

RET

DELAYENDP

CODEENDS

ENDBEGIN

五、实验结果

运行程序后可以看到LED灯亮灭交替,改变延时时间,灭的持续时间增加。

六、实验总结

由于这个实验是第一次接触,虽然比较简单,但是还是出现了很多的问题。

刚开始忘记写延时子程序,后来发现后加上,发现LED灯还是一直亮,到最后才发现原来是延时的时间太短,所以延时采用了两层循环以增加延时长度。

七、实验收获与心得体会

通过这个实验,首先让我对汇编程序的要素有了更加清晰的认识,就是汇编程序便需要有代码段;其次,当汇编程序出现问题时,掌握了一定的解决方法。

实验二简单并行接口

一、实验目的

掌握简单并行接口的工作原理及使用方法。

二、实验原理和内容

1、按下面图4-2-1简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。

74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。

2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。

3、按下面图4-2-2简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。

74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。

4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。

5、接线:

1)输出按图4-2-1接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门)

2)输入按图4-2-2接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门)

三、硬件接线图和软件程序流程图

1、硬件接线图

图2-1

2、软件程序流程图

图2-2

四、源代码

CODESEGMENT

ASSUMECS:

CODE

BEGIN:

XORAX,AX

MOVAH,1

INT21H

CMPAL,1BH

JZED

MOVDX,2A8H

OUTDX,AL

LOOPBEGIN

ED:

MOVAX,4C00H

INT21H

CODEENDS

ENDBEGIN

五、实验结果

连接好电路后,运行程序,然后用键盘输入任意一个字母或者数字,然后发现LED灯的亮灭情况正好表示了所输入字符的ASC码。

六、实验总结

此次实验代码比较简单,看好输出端基本上就不会有什么大的代码问题,这个实验关键的一点我觉得是连接电路,由于实验所需电路要连接的线比较多,所以在连接线的时候一定要认真仔细,一旦连错很难检查出来,那样的话就只能重新连接了。

七、实验收获与心得体会

这个实验主演还是让我们进一步接触这种软硬结合的方式,以便不断地了解熟悉它,通过这次实验,除实验本身外,由于要检测键盘的输入,我还对理论课上讲的中断号01H有了更加深刻的印象。

实验三可编程并行接口8255

一、实验目的

1、通过实验,掌握8255工作于方式0以及设置A口为输出口,C口为输入口的方法。

二、实验原理及内容

1.8255的工作方式

一片8255内部有3个端口,A口可以工作在方式0、方式1或方式2,B口可以工作在方式0、方式1,C口可以工作在方式0。

方式0是基本型输入/输出。

这种方式和外设交换数据时,8255端口与外设之间不使用

联络线。

方式1为选通型输入/输出。

用这种方式和外界交换数据时,端口和外设之间要有联络

信号。

方式2是双向数据传送,仅A口有这项功能。

当A口工作在方式2时,B口仍可以工作在方

式0或方式1,但此时B口方式1只能用查询方式与CPU交换信息。

2.工作方式选择字

8255工作方式选择字共8位(如图),存放在8255控制寄存器中。

最高位D7为标志位,D7=1表示控制寄存器中存放的是工作方式选择字,D7=0表示控制寄存器中存放的是C口置位/复位控制字。

3.C口置/复位控制字

8255的C口可进行位操作,即:

可对8255C口的每一位进行置位或清零操作,该操作是通过设置C口置/复位字实现的(图8-10)。

C口置/复位字共8位,各位含义如下:

4.8255A的控制信号与传输动作的对应关系

5.命令字与初始化编程

8255有两个命令字,即方式选择控制字和C口置0/置1控制字,初始化编程的步骤是:

1向8255控制寄存器写入“方式选择控制字”,从而预置端口的工作方式。

2②当端口预置为方式1或方式2时,再向控制寄存器写入“C口置0/置1控制字”。

这一操作的主要目的是使相应端口的中断允许触发器置0,从而禁止中断,或者使相应端口的中断允许触发器置1,从而允许端口提出中断请求。

注意:

“C口置0/置1控制字”虽然是对C口进行操作,但是该控制字是命令字,所以要写入控制寄存器,而不是写入C口控制寄存器。

③向8255数据寄存器写入“数据”或从8255数据寄存器读出“数据”

实验内容:

1)、实验电路如图4-3-1,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~

L7。

2)、编程从8255C口输入数据,再从A口输出。

3)、接线:

PC7~PC0/8255接K7~K0/逻辑电平开关

PA7~PA0/8255接L7~L0/LED显示

CS/8255接Y1/IO地址

三、硬件连线图和软件程序流程图

1、硬件连线图

图3-1

 

2、软件程序流程图

四、源程序

CODESEGMENT

ASSUMECS:

CODE

BEGIN:

MOVDX,28BH

MOVAL,10001001B

OUTDX,AL

MOVDX,28AH

INAL,DX

MOVDX,288H

OUTDX,AL

INT21H

MOVAX,4C00H

CODEENDS

ENDBEGIN

五、实验结果

连接好电路,运行程序后,可以发现根据开关闭合的不同,LED灯亮灭的情况也随之而改变,实现了实验中的要求。

六、实验总结

由于此实验比较简单,实验过程中没有出现什么大的问题。

只是一开始的时候发现在我运行完后,发现改变开关的闭合情况,LED灯的亮灭情况不变,后来发现每次程序运行时只读取一次数据,而在程序运行的过程中并不读取数据,所以就出现了那样的情况。

七、实验收获与心得体会

通过这次试验,让我对8255这个元器件有了一定的认识,进一步熟悉了汇编语言编程,为将来更加困难的实验做了准备。

实验四七段数码管

一、实验目的

掌握数码管显示数字的原理

二、实验原理和内容

1、静态显示:

按4-4-1连接好电路,将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~dp相连,位码驱动输入端S0、S1、S2、S3接PC0、PC1、PC2、PC3,编

程在数码管显示自己的学号的后四位。

(或编程在数码管上循环显示“00-99”,位

码驱动输入端S0、S1接PC0、PC1;S2、S3接地。

2、接线:

PA7~PA0/8255接dp~a/LED数码管

PC3~PC0/8255接S3~S0/LED数码管

CS/8255接Y1/IO地址

三、硬件连接图和软件程序流程图

1、硬件连接图

图4-1

2、软件程序流程图

图4-2

 

四、源代码

DATASEGMENT

DATA0EQU3FH

DATA3EQU4FH

DATA4EQU66H

DATA6EQU7DH

DATAENDS

STACKSEGMENTSTACK'STACK'

DB100dup(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

STARTPROCFAR

MOVAX,DATA

MOVDS,AX

MOVAL,80H

MOVDX,28BH

OUTDX,AL

LOOP1:

MOVDX,28AH

MOVAL,08H

OUTDX,AL

MOVDX,288H

MOVAL,DATA0

OUTDX,AL

CALLDELAY

MOVDX,28AH

MOVAL,04H

OUTDX,AL

MOVDX,288H

MOVAL,DATA3

OUTDX,AL

CALLDELAY

MOVDX,28AH

MOVAL,02H

OUTDX,AL

MOVDX,288H

MOVAL,DATA4

OUTDX,AL

CALLDELAY

MOVDX,28AH

MOVAL,01H

OUTDX,AL

MOVDX,288H

MOVAL,DATA6

OUTDX,AL

CALLDELAY

MOVAH,1

INT16H

JZLOOP1

RET

STARTENDP

DELAYPROCNEAR

MOVCX,00FFH

LP1:

MOVBX,200

LP2:

DECBX

JNZLP2

LOOPLP1

RET

DELAYENDP

CODEENDS

ENDSTART

五、实验结果

连接好电路图,然后运行程序,在数码管上显示我的学号0346四个数字。

六、实验总结

最开始的时候实验确实出现了一些问题,跟我想的不一样。

由于实验要求是在4个数码管上同时显示四个数字,所以刚开始我认为如果要延时程序,延时时间应该很短,因此我认为不用延时程序,而结果没有延时程序出不来结果,显示一群乱码。

之后我加上延时程序后,数码管显示就变得正常了。

这个程序的关键应该就是控制字的确定,然后数码管方面一定要有一组选通信号。

七、实验收获与心得体会

这个实验告诉我在做这类实验时千万不要想当然,一定要按照实际的要求一步一步来,不要想着“偷工减料”图省事,关键是要踏实。

其次是通过这个实验让我对8255这个芯片有了更加深刻的认识,对于控制字的理解更加深刻。

实验八可编程定时器/计数器(8253/8254)

一、实验目的:

学习掌握8253用作定时器的编程原理;

二、实验原理和内容

8253和8254都是可编程计数器,它们的引脚兼容,功能与使用方法相同。

8254是8253

的改进型。

1.8253初始化

使用8253前,要进行初始化编程。

初始化编程的步骤是:

1向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。

2②向使用的计数器端口写入计数初值。

2.8253控制字

D7D6=00:

使用0号计数器,D7D6=01:

使用1号计数器

D7D6=10:

使用2号计数器,D7D6=11:

无效

D5D4=00:

锁存当前计数值

D5D4=01:

只写低8位(高8位为0),读出时只读低8位

D5D4=10:

只写高8位(低8位为0),读出时只读高8位

D5D4=11:

先读/写低8位,后读/写高8位计数值

D3D2D1=000:

选择方式0,D3D2D1=001:

选择方式1

D3D2D1=X10:

选择方式2,D3D2D1=X11:

选择方式3

D3D2D1=100:

选择方式4,D3D2D1=101:

选择方式5

D0=0:

计数初值为二进制,D0=1:

计数初值为BCD码数

3、接线:

CS/8253接Y0/IO地址

GATE0/8253接+5V

CLK0/8253接1M时钟

OUT0/8253接喇叭或蜂鸣器

4、完成一个音乐发生器,通过喇叭或蜂鸣器放出音乐,并在数码管上显示乐谱。

音符频率对照

三、硬件接线图和软件程序连接图

1、硬件接线图

2、软件程序连接图

四、源程序

DATASEGMENT

BUF1DB06H5BH4FH66H6DH7DH07H7FH

BUF2DW3906,3472,3125,2933,2604,2344,2083,1953

DATAENDS

CODESEGMENT

ASSUMEDS:

DATA,CS:

CODE

BEGIN:

MOVCX,08H

LEASI,BUF1

MOVBX,OFFSETBUF2

MOVDX,283H

MOVAL,37H

OUTDX,AL

MOVDX,28BH

MOVAL,80H

OUTDX,AL

L1:

MOVDX,280H

MOVAX,[BX]

OUTDX,AL

MOVAL,AH

OUTDX,AL

MOVDX,28AH

MOVAL,01H

OUTDX,AL

MOVDX,288H

MOVAL,[SI]

OUTDX,AL

CALLDELAY

INCSI

INCBX

INCBX

LOOPL1

MOVAH,1

INT16H

JEBEGIN

MOVAX,4C00H

INT21H

DELAYPROCNEAR

PUSHCX

PUSHBX

MOVCX,0FFFFH

LP1:

MOVBX,100

LP2:

DECBX

JNZLP2

LOOPLP1

POPBX

POPCX

RET

DELAYENDP

CODEENDS

ENDBEGIN

五、实验结果

连接好电路后,运行程序,然后会听见蜂鸣器按照do/re/mi/fa/so/la/si/do依次响,当有键盘输入时,声音中止。

六、实验总结

这个实验思路比较简单,所以在写好代码后就基本上没有什么问题,只是个人觉得我写的原来的代码有点冗杂(原来是每一个音符都单独写一段汇编程序),其实有很多都可以用一个循环实现的,并且后来我也做了很多的尝试,但是多次的尝试都失败了,失败基本上都是由于寄存器不够用了。

后来突然想到了理论课上讲的推入堆栈保护,一下子恍然大悟,这就是现在代码的由来,个人觉得这个实验我还是下了一番苦心的。

七、实验收获与心得体会

这个实验毋庸置疑地让我学会了很多东西,更加熟悉了汇编程序,之前老师上课讲的什么推入堆栈保护,当时根本不理解,不知道为什么要这样做,这次实验让我彻底明白了这样做的意义:

就是有时候要多次用到一个寄存器时一定要先推入堆栈保护,这样的话就不会影响在别的地方用相同的寄存器了。

此外,又学习了一种元器件,即8253计数器,对于微机的原理有了更加上课的理解。

实验十六串行通讯8251

一、实验目的

1、了解串行通讯的基本原理。

2、掌握串行接口芯片8251的工作原理和编程方法。

二、实验原理和内容

1、按图4-16-1连接好电路,(8251插通用插座)其中8254计数器用于产生8251的发送和接收时钟,TXD和RXD连在一起。

2、编程:

从键盘输入一个字符,将其ASCII码加1后发送出去,再接收回来在屏幕上显

示,(或将内存制定区域内存放的一批数据通过8251A的TXD发送出去,然后从RXD接收

回来,并在屏幕上或数码管上显示出来。

)实现自发自收。

3、接线:

CLK0/8254接1M时钟

GATE0/8254接+5V

0UT0/8254接TX/RXCLK/8251

CS/8254接Y0/IO地址

CS/8251接Y7/IO地址

RXD/8251接TXD/8251

4、图示电路8251的控制口地址为2B9H,数据口地址为2B8H。

5、8254计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接

1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。

6、收发采用查询方式。

三、硬件接线图与软件程序流程图

1、硬件接线图

图16-1

2、软件程序流程图

四、源程序

CODESEGMENT

ASSUMECS:

CODE

BEGIN:

MOVDX,283H

MOVAL,16H

OUTDX,AL

MOVDX,280H

MOVAL,52

OUTDX,AL

MOVDX,2B9H

MOVAL,40H

OUTDX,AL

NOP

MOVAL,0EH

OUTDX,AL

MOVAL,37H

OUTDX,AL

GOON:

MOVDX,2B9H

INAL,DX

TESTAL,01H

JZGOON

MOVAH,01H

INT21H

CMPAL,1BH

JEED

ADDAL,01H

MOVDX,2B8H

OUTDX,AL

RECIEVE:

MOVDX,2B9H

INAL,DX

TESTAL,02H

JZRECIEVE

MOVDX,2B8H

INAL,DX

MOVAH,02H

MOVDL,AL

INT21H

JMPGOON

ED:

MOVAX,4C00H

INT21H

CODEENDS

ENDBEGIN

五、实验结果

连接好硬件电路后,运行程序,然后会提示用键盘输入一个字符,结果发现当输入一个字符后,在屏幕上紧接着会显示出来在ASC码表中排在该字符后的字符,比如输入1,紧接着在屏幕上会显示2.

六、实验总结

这次实验过程中一度出现了“超出我能力范围“的问题,怎么做都解决不了,问了很多人,都没有办法,后来经过我反复的看书上讲的关于8251的那部分内容终于弄懂了。

实验过程中出现的问题是,每次在我输入一个字符时,屏幕上显示的不是该字符后面的字符,而是上次输入字符后面的字符。

经过我反复对书上的内容进行了研究后,发现当接收字符时,不能仅仅判断一次状态字,要一直判断状态字直到它有效,这样就可以解决上述问题了。

七、实验收获与心得体会

这次实验真正让我体会到了,当我们遇到问题时,不要“病急乱投医”,一定要静下心来自己找一下问题的所在,想不出来就回去重新研究一下元器件的工作原理,因为万变不离其宗,只要你对它的原理了解的一清二楚后,什么样的问题都可以解决了。

然后就是深刻的明白了8251的工作原理,以及在对它写控制字时命令控制字和状态控制字的顺序。

实验总结

通过几次的微原硬件实验,虽然不能说对汇编语言编程完全掌握了,但是确实汇编能力增长了不少,不得不肯定微原实验的意义。

此外对课上讲的一些元器件起到了巩固的作用,个人觉得微机原理硬件实验很有必要,理论实践相结合。

最后感谢王老师在实验过程中对我的指导和帮助。

 

欢迎您的下载,

资料仅供参考!

 

致力为企业和个人提供合同协议,策划案计划书,学习资料等等

打造全网一站式需求

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2