东华大学信息学院微机课程设计硬件_第1页
东华大学信息学院微机课程设计硬件_第2页
东华大学信息学院微机课程设计硬件_第3页
东华大学信息学院微机课程设计硬件_第4页
东华大学信息学院微机课程设计硬件_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录实验1 存储器读写实验1实验2 简单I/O口扩展实验5实验3 8255并行口实验8实验4 8253定时器/计数器接口实验12实验58259中断控制器实验15微机原理课程设计(硬件设计)报告实验1 存储器读写实验一、实验目的 1.掌握PC机外存扩展的方法。 2.熟悉6264芯片的接口方法。 3.掌握8086十六位数据存储的方法 。二、实验设备 微机实验箱、8086CPU模块。三、实验内容向02000020FFH单元的偶地址送入AAH,奇地址送入55H。四、实验原理介绍本实验用到存储器电路五、实验步骤和要求1、实验接线:本实验无需接线。2、编写调试程序3、运行实验程序,可采取单步、设置断点方式

2、,打开内存窗口可看到内存区的变化。六、思考题1. 单步执行到“intram”标号的语句时,ds寄存器的数据是什么?采用断点方式运行时执行到第一个断点处,2000H202FH内存单元的数据是什么?执行到第二个断点处,2000H200FH内存单元的数据是什么?并根据观察结果和对源程序的判读简述源程序的运行效果。如图,单步执行到“intram”标号的语句时ds寄存器的数据为0100采用断点方式运行时执行到第一个断点处,2000H202FH内存单元的数据如图所示。由源程序可知2000H202FH内存单元中的内容全为0执行到第二个断点处,2000H200FH内存单元的数据如图所示。由源程序可知程序的运行

3、结果为向02000020FFH单元的偶地址送入AAH,奇地址送入55H。2. 修改程序,实现从2010H到201FH内存单元依次赋值00H0FH,从2020H到202FH内存单元依次赋值0FH00H的功能。程序流程图:程序代码:code segment assume cs:code org 0100h;在代码段0100h偏移地址处开始存放代码start: mov ax,0100h mov ds,ax;数据段地址 mov es,ax mov si,1000h;偏移地址 mov cx,0100h;循环次数 mov al,0;使al中置0intram: mov si,al;将al中的值赋给si in

4、c si;使地址指针si加1 loop intram;使0100:1000开始处的256个单元中的数据清0 mov si,1010h;设置断点处 mov cx,0010h;预置循环次数16次 mov al,00h;al的初值为00hfil: mov si,al;RAM区循环置数 inc si;地址指针si加1 inc al;使al中的值每执行一次循环加1,初始值为0,加到0F loop fil;使02010H到0201F的数据区中依次存放00H-0FHmov al,0fh ;al的初值为0fhmov cx,0010h;预置循环次数16次fil1:mov si,al;RAM区循环置数inc si

5、;使地址指针si加1dec al; 使al中的值每执行一次循环减1,初始值为0FH,减到00hloop fil1;使02020H到0202F的数据区中依次存放0FH-00H nop;设置断点处 jmp startcode ends end start 七、实验中的问题及其解决方法问题:(1)在范例程序中按题目要求设置两个断点时,全速运行时只能运行第一个断点处的程序,而不知道怎么运行下一个断点处的程序。(2)在做思考题程序时,运行所写程序时发现内存空间中上一个题目的运行结果还在里面,没有将其置为0。解决方法:(1)针对问题(1),当执行完第一个断点执行完毕应该取消该断点,这样在全速运行时可以运行

6、到下一个断点,可以观察程序运行结果。(2)针对问题(2),发现在初始化程序时,自己把所有的循环初值都设成了0010H,导致程序初始化时只初始化16个内存单元,而后面的内存单元没有初始化,保留了上次运行的程序运行结果,所以将初始化的循环初值设成0100H,这样就可以初始化256个内存单元了,把上次的结果初始化为0。实验2 简单I/O口扩展实验一、实验目的 1、 熟悉74LS273,74LS244的应用接口方法。 2、掌握用锁存器、三态门扩展简单并行输入、输出口的方法。二、实验设备 微机实验箱、8086CPU模块。三、实验内容逻辑电平开关的状态输入74LS244,然后通过74LS273锁存输出,利

7、用LED显示电路作为输出的状态显示。四、实验原理介绍本实验用到两部分电路:开关量输入输出电路,简单I/O口扩展电路。五、实验步骤1、实验接线:(表示相互连接)CS0 CS244; CS1CS273; 平推开关的输出K1K8 IN0IN7(对应连接); O0O7LED1LED8。2、编辑程序,单步运行,调试程序3、调试通过后,全速运行程序,观看实验结果。4、编写实验报告。六、实验结果程序全速运行后,逻辑电平开关的状态改变应能在LED上显示出来。例如:K2置于L位置,则对应的LED2应该点亮。图1外围接线原理图七、思考题:修改连线:74LS244的片选信号CS244改接CS2,将74LS273的片

8、选信号CS273改接CS3,开关K1,k2接74LS244的IN0、IN1,74LS273 的O0O7接发光二极管L1L8。 编写程序实现以下功能:K1K2置于L(上)位置时,L1L8全灭; K1开关置于H(下)位置时,L1L4亮,L5L8灭; K2开关置于H(下)位置时,L1L4灭,L5L8亮;K1K2均置于H(下)位置时,L1L8全亮。程序流程图:程序代码:assume cs:codecode segment publicorg 100h; 在代码段0100h偏移地址处开始存放代码start:mov dx,04c0h ;74LS244地址 in al,dx ;读入开关量 and al,03

9、h ;取后开关量后两位,即K2,K1的值 test al,02h ;检测开关量K2位是否为1 jz lp1;若K2不为1,则跳转 and al,0fh ;L5-L8清0 jmp lp2lp1:or al,f0h ;L5-L8置1lp2:test al,01h ;检测K1位是否为1jz lp3 ;若K1不为1,跳转and al,f0h ;L1-L4清0jmp dispalylp3:or al,0fh ;L1-L4置1display:mov dx,04d0h ;74LS273地址out dx,al ;输出至LEDjmp start;循环运行code ends end start九、实验中的问题及其

10、解决方法问题:(1)在编好程序时,运行调试中发现所得的结果全部与预期的相反,即K1K2置于L(上)位置时,L1L8全亮; K1开关置于H(下)位置时,L1L4灭,L5L8亮; K2开关置于H(下)位置时,L1L4亮,L5L8灭;K1K2均置于H(下)位置时,L1L8全灭。(2)在问题(1)的解决过程中发现开关的逻辑也发生错误。(3)将程序编写完毕,编译链接,没有得到预期结果,然而把74LS244的片选信号CS244改接CS0,将74LS273的片选信号CS273改接CS1,结果出现。解决方法:(1)针对问题(1),通过观察外围接线原理图发现,LED为共阳极,只有当信号为“0”时才导通,信号为“

11、1”时不导通,正好与自己程序中的逻辑关系相反。所以将程序中“1”改为“0”即可实现预期结果。(2)一般来说,开关向上拨时,为“1”,处于高电平,而此实验箱开关在下面时候为“1”,而开关向上拨时为“0”,逻辑与平时的习惯相反,所以将开关的逻辑关系全变成它的相反就能达到预期结果。(3)针对问题(3)说明前一次的程序还保存在实验箱中,每进行一次编译和链接都需要将实验箱复位,复位完成,结果能得到。实验3 8255并行口实验一、实验目的掌握8255A的编程原理。二、实验设备 微机实验箱、8086CPU模块。三、实验内容8255A的A口作为输入口,与逻辑电平开关相连。8255A的B口作为输出口,与发光二极

12、管相连。编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。四、实验原理介绍本实验用到两部分电路:开关量输入输出电路和8255可编程并口电路。五、实验步骤1、实验接线CS0CS8255; PA0PA3 平推开关的输出K1K4; PB0PB3发光二极管的输入L1L4。2、编程并全速或单步运行。3、全速运行时拨动开关,观察发光二极管的变化。当开关某位置于L时,对应的发光二极管点亮,置于H时熄灭。六、实验提示8255A是比较常用的一种并行接口芯片,其特点在许多教科书中均有介绍。8255A有三个8位的输入输出端口,通常将A端口作为输入用,B端口作为输出用,C端口作为辅助控制用,本实验也是如此。实验

13、中,8255A工作于基本输入输出方式(方式0)。七、实验结果程序全速运行后,逻辑电平开关的状态改变应能在LED上显示出来。例如:K2置于L位置,则对应的LED2应该点亮。八、思考题:1、修改接线CS2CS8255,PA0PA3 平推开关的输出L1L4; PB0PB3发光二极管的输入K1K4。修改程序达到以下要求:开关K1置“H”(下)位置时L1L4全亮;K2置“H”(下)位置时L1、L3亮;K3置“H”(下)位置时L2、L4亮;K4置“H”(下)位置时L1和L4轮流闪烁,修改程序实现相应功能程序流程图:程序代码:assume cs:code code segment public org 10

14、0h; 在代码段0100h偏移地址处开始存放代码start: mov dx,04c6h;控制寄存器地址 mov ax,90h;设置为A口输入,B口输出 out dx,ax;将控制字写入控制寄存器地址movcx,0001h;初始化cxstart1: movbx,0;初始化bxmov dx,04c0h;A口地址 in ax,dx;输入f1:testax,0001h;判断开关K1是否值Hjzf2;不是则跳转orbx,000fh;当开关K1为H时,使BX后四位为“1”f2:testax,0002h;判断开关K2是否值Hjzf3;不是则跳转orbx,0005h;当开关K2为H时,使BX后四位为0101f

15、3:testax,0004h;判断开关K3是否值Hjzf4;不是则跳转orbx,000ah;当开关K3为H时,使BX后四位为1010f4:testax,0008h;判断开关K4是否值Hjzdisplay;不是则跳转,显示calldelay;是则,调用延时xorcx,0009h;andbx,0006horbx,cxmovcx,bx;andcx,0009h;该程序段的功能第一次的得到bx的值为0008h,下一次得到的值为0001如此周而复始,便使LED1与LED4循环闪烁display:movax,bxnotax;共阳极电路,取反,为零时灯亮mov dx,04c2h;B口地址 out dx,ax;

16、输出 jmp start1delayprocnearpushcxmovcx,0ffffhdis:noploopdis;空循环来实现延时popcxretdelayendpcode endsend start九、实验中的问题及其解决方法问题:(1)编程完毕调试程序发现结果恰好相反,K1为高时发现全部不亮,而K2为高发现L2和L4亮,K3为高时发现L1和L3亮,而闪烁的结果也相反。(2)调试过程中发现LED灯的闪烁频率过快。解决方法:(1)由程序可知,输出的端口的逻辑关系放在BX中,在将BX的值赋到AX中,所以当输出结果相反时,只要添加一条取反指令,对AX的值取反,即“not ax”便可得到正确的运

17、行结果。(2)在编写延时程序时,用的是给CX赋值,然后不断执行空循环实现延时,在最初的程序中CX的值赋值过小,导致循环执行的时间过短,后来将CX赋一个很大的值,实现轮流闪烁。实验4 8253定时器/计数器接口实验一、实验目的掌握8253定时器的编程原理,用示波器观察不同模式下的输出波形。二、实验设备 微机实验箱、8086CPU模块、示波器。三、实验内容了解8253计数器的不同工作方式,掌握其初始化控制字对定时/记数效果的影响。四、实验原理介绍本实验用到两部分电路:脉冲产生电路、8253定时器/计数器电路五、实验步骤1、实验连线:CS0CS8253 OUT08253CLK2 OUT2LED1 O

18、UT1LED2CLK38253CLK0,CLK38253CLK12、编程调试程序3、全速运行,观察实验结果六、实验提示8253是计算机系统中经常使用的可编程定时器/计数器,其内部有三个相互独立的计数器,分别称为T0,T1,T2。8253有多种工作方式,其中方式3为方波方式。当计数器设好初值后,计数器递减计数,在计数值的前一半输出高电平,后一半输出低电平。实验中,T0、T1的时钟由CLK3提供,其频率为750KHz。程序中,T0的初值设为927CH(37500十进制),则OUT0输出的方波周期为(37500*4/3*10-6=0.05s)。T2采用OUT0的输出为时钟,则在T2中设置初值为n时,

19、则OUT2输出方波周期为n*0.05s。n的最大值为FFFFH,所以OUT2输出方波最大周期为3276.75s(=54.6分钟)。可见,采用计数器叠加使用后,输出周期范围可以大幅度提高,这在实际控制中是非常有用的。七、实验结果程序全速运行后,LED1按一定周期闪烁(周期理论值为0.2s),LED2在高频脉冲信号(约15KHz)影响下,有微弱的光亮,但无明显的周期变化现象。八、思考题:1. 为什么说范例程序运行时LED1闪烁周期的理论值是0.2秒?在范例程序设置LED2的最大闪烁周期是多少?请分析说明。(1)因为OUT08253CLK2 OUT2LED1,所以8253计数器2采用OUT0的输出为

20、时钟脉冲,且8253计数器2中设置计数值为04h,则OUT2输出方波周期为4*0.05s=0.2s。(2)因为OUT1LED2,所以LED2的闪烁周期即为计数器1的周期,且计数器1设置的计数值为32h,化为十进制为3*16+2=50,则范例程序设置LED2的最大闪烁周期为50*4/3*106=6.67x10(-5)s。2.修改片选信号接线使CS1和CS8253连接,并要求LED1的闪烁周期变为4秒(亮2秒,灭2秒),修改程序实现功能。4/0.05=80,化为16进制数为50h,则8253计数器2中设置计数值为50h。程序框图:源程序:assume cs:codecode segment pub

21、licorg 100h; 在代码段0100h偏移地址处开始存放代码start:mov dx,04b6h;控制寄存器地址mov ax,36h;计数器0,方式3out dx,axmov dx,04b0h;计数器0的地址mov ax,7Ch;计数初值的低位为7Chout dx,axmov ax,92h;计数初值的高位为92hout dx,ax;计数值927Chmov dx,04b6h;控制寄存器地址mov ax,76h;计数器1,方式3out dx,axmov dx,04b2h;计数器1的地址 mov ax,32h;计数初值的低位为32h out dx,axmov ax,0;计数初值的高位为00ho

22、ut dx,ax;计数值32h mov dx,04b6h;控制寄存器地址 mov ax,0b6h;计数器2,方式3 out dx,ax mov dx,04b4h;计数器2的地址 mov ax,50h;计数初值的低位为50h out dx,ax mov ax,0;计数初值的高位为00h out dx,ax;计数值50hnext:nopjmpnext;让程序一直循环执行code ends end start九、实验中的问题及其解决方法问题:在完成对范例程序修改后调试发现LED1灯的闪烁周期过快,与题目要求相差很大,没有4s的时间解决方案:在检查程序的发现将计数器2设计初值设计成28H,即2S时间,

23、对周期的计算还没有完全弄清楚,仔细阅读实验指导书后知道,应该根据周期为4s,则4/0.5=80,化为16进制数50H,则8253计数器2中设置计数值为50h,于是完成实验要求。实验58259中断控制器实验一、实验目的1、掌握8259A的工作原理。2、掌握编写中断服务程序方法。3、掌握初始化中断向量的方法。二、实验设备微机实验箱、8086CPU模块。三、实验内容了解中断处理的原理,掌握利用中断控制器进行中断申请和中断操作的方法。四、实验原理介绍本实验用到三部分电路:电平开关电路、简单I/O口扩展电路和8259中断控制器电路。五、实验步骤1、实验接线CS0 CS8259 CS3 CS273 O0O

24、3LED1LED4 K1K4IR0IR3 INTINT( 8086CPU板) INTAINTA(8086CPU板)2、编译调试程序3、将所有开关K1K4置于H(下)位置后,全速运行程序,拨动某一电平开关(推到L位置,再拨回H位置),观察LED的亮灭情况。六、实验提示1、 8259的使用说明请详细阅读教科书。2、8086的中断系统是向量中断方式。内存中特定位置有一中断向量表,表内存有不同中断类型的中断向量(中断入口地址)。不同中断类型的中断向量在表内有对应的偏移地址,其计算方法是:中断类型*4。3、中断类型由8259通过数据总线送给8086,8086内部电路会将该类型值自动乘4,而后赋给指令指针

25、,从而转向中断向量表的相应单元取得中断入口地址,之后就进入中断服务程序。请仔细研读8259的工作时序。4、中断类型的高5位由8259寄存器ICW2决定,低3位由中断源IRx的编码自动填入。IR0IR7的编码分别为000,001,010,011,100,101,110,111。七、实验结果全速运行程序,由上往下拨动开关时,相应位置的LED点亮,其余LED全灭。八、思考题:1. 按位说明范例代码8259初始化所设置的所有中断控制字的值和含义。ICW1(初始化字),写入的值为13h,化为二进制后:00010011。含义:边沿触发,地址间距为8,单片8259A,需要ICW4。ICW2(中断类型码字),

26、写入的值为80h,化为二进制后:10000000。含义:说明对应于IR0IR7的中断类型码为80h87h。ICW4(中断结束方式字),写入的值为01h,化为二进制后:00000001。含义:普通全嵌套方式,非缓冲方式,正常EOI,8086/8088模式。OCW1(屏蔽控制字),写入的值为00h,即00000000b。含义:全部为复位屏蔽,开放所有中断。2.按要求接线CS0 CS8259 CS3 CS273 74LS273的O0O3L1L4 8295的INTINT( 8086CPU板) 8259的INTAINTA(8086CPU板) IR1Pulse键(实验箱右下角)。并修改源程序,实现以下功能

27、:平时运行时L1、L3亮,L2、L4灭,当按下实验箱右下角“Pules”键时L1、L3灭,L2、L4亮,延续一段时间后恢复平时状态。程序流程图:源程序:assume cs:codecode segment publicorg 100h; 在代码段0100h偏移地址处开始存放代码start:movcx,0start1: cli;关中断,防止有些硬件中断对程序的干扰mov dx,04a0h; 写入ICW1的端口地址为04a0h mov ax,13h; ICW1为13H,化为二进制为00010011 out dx,ax ; ICW1, 边沿触发,地址间距为8,单片8259A,需要ICW movdx,

28、04a2h;写入ICW2的端口地址为04a2hmov ax,80h; ICW1为80H,化为二进制为10000000out dx,ax ; ICW2,中断类型80h,IR0IR7的中断类型码为80h87hmov ax,01h;01; ICW4为01H,化为二进制为00000001out dx,ax ;ICW4, 普通全嵌套方式,非缓冲方式,正常EOI,8086/8088模式mov ax,00hout dx,ax ;OCW1, 开放所有中断nop ;以上为8259初始化 mov ax,0mov ds,axmov di,200h ;初始化中断向量表mov ax,offset int0; ;IR0的中断服务程序入口地址放入中断向量表中mov ds:di,ax;先放IP(后同)add di,2mov ds:di,100h;再放CS值(后同)adddi,2mov ax,offset int1; IR1的中断服务程序入口地址放入中断向量表中mov ds:di,axadd di,2mov ds:di,100hadddi,2mov ax,offset int2; IR2的中断服务程序入口地址放入中断向量表中mov ds:di,axadd di,2mov ds:di,100hadddi,2mov ax,offset int3; IR3的中断服务程序入口地址放入中断向量表中mov ds:di

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论