东华大学微机硬件课程设计实验报告分解.docx
- 文档编号:27855930
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:19
- 大小:194.98KB
东华大学微机硬件课程设计实验报告分解.docx
《东华大学微机硬件课程设计实验报告分解.docx》由会员分享,可在线阅读,更多相关《东华大学微机硬件课程设计实验报告分解.docx(19页珍藏版)》请在冰豆网上搜索。
东华大学微机硬件课程设计实验报告分解
目录
实验1 存储器读写实验............................1
实验2 简单I/O口扩展实验........................3
实验3 8255并行口实验...........................4
实验4 8253定时器/计数器接口实验................5
实验5 8259中断控制器实验.......................7
一、基础实验部分
实验1 存储器读写实验
一、实验设备
微机实验箱、8086CPU模块。
2、实验要求
学会用使用工具软件,掌握用单步执行和断点方式运行程序,观察寄存器和内存中的数据变化等程序调试的手段。
三、实验步骤
1、实验接线:
本实验无需接线。
2、编写调试程序。
3、运行实验程序,可采取单步、设置断点方式,打开内存窗口可看到内存区的变化。
四、思考题
1、①单步执行到“intram”标号的语句时,ds寄存器的数据是什么?
②采用断点方
式运行时执行到第一个断点处,2000H~202FH内存单元的数据是什么?
③执行到第二个断点处,2000H~200FH内存单元的数据是什么?
④并根据观察结果和对源程序的判读简述源程序的运行效果。
答:
①ds寄存器的数据是0100H。
②2000H~202FH内存单元的数据全是00。
③2000H~200FH内存单元的数据是AA55AA55AA55AA55AA55AA55AA55AA55。
④源程序的运行效果是在第一个间断点处可以把数据清零,在第二个间断点处即可完成赋值。
2、修改程序,实现从2000H到200FH单元依次赋值00H~0FH的功能。
答:
程序如下
codesegment
assumecs:
code
org0100h
start:
movax,0100h
movds,ax;数据段地址
moves,ax
movsi,1000h;偏移地址
movcx,0010h;循环次数
moval,0;将al清零
intram:
mov[si],al
incsi;将偏移地址+1
incal;将al的值+1
loopintram
nop;设置断点处
jmpstart
codeends
endstart
5、出现的问题及解决过程
序号
出现的问题
原因
解决过程
1
不能得到内存单元的运行结果
未在程序中设置断点
在程序中设置正确断点
2
2000H到200FH单元得不到00H~0FH
设置的循环次数不对
movcx,0016h
将循环次数改为
movcx,0010h
实验2 简单I/O口扩展实验
1、实验设备
微机实验箱、8086CPU模块。
二、实验要求
逻辑电平开关的状态输入74LS244,然后通过74LS273锁存输出,程序全速运行后,逻辑电平开关的状态改变应能在LED上显示出来。
三、实验步骤
1、实验接线:
CS0CS244;CS1CS273;K1~K8IN0~IN7;O0~O7LED1~LED8。
2、编辑程序,单步运行,调试程序。
3、调试通过后,全速运行程序,观看实验结果。
四、思考题
将74LS244的片选信号CS244改接CS2,将74LS273的片选信号CS273改接CS3,修改程序实现与范例程序相同的功能。
答:
程序如下
assumecs:
code
codesegmentpublic
org100h
start:
movdx,04c0h;74LS244地址
inal,dx;读输入开关量
movdx,04d0h;74LS273地址
outdx,al;输出至LED
jmpstart
codeends
endstart
五、出现的问题及解决过程(无)
实验3 8255并行口实验
1、实验设备
微机实验箱、8086CPU模块。
二、实验要求
8255A的A口作为输入口,与逻辑电平开关相连。
8255A的B口作为输出口,与发光二极管相连。
程序全速运行后,逻辑电平开关的状态改变应能在LED上显示出来。
三、实验步骤
1、实验接线:
CS0CS8255;PA0~PA7K1~K8;PB0~PB7LED1~LED8。
2、编程并全速或单步运行。
3、全速运行时拨动开关,观察发光二极管的变化。
当开关某位置于L时,对应的发光二极管点亮,置于H时熄灭。
四、思考题
修改接线CS2CS8255,并要求开关置“H”(下)位置时对应LED亮,修改程序实现相应功能。
答:
程序如下
assumecs:
code
codesegmentpublic
org100h
start:
movdx,04c6h;控制寄存器地址
movax,90h;设置为A口输入,B口输出
outdx,ax
start1:
movdx,04c0h;A口地址
inax,dx;输入
movdx,04c2h;B口地址
notax;将ax取反
outdx,ax;输出
jmpstart1
codeends
endstart
实验4 8253定时器/计数器接口实验
1、实验设备
微机实验箱、8086CPU模块、示波器。
二、实验要求
了解8253计数器的不同工作方式,掌握其初始化控制字对定时/记数效果的影响。
程序全速运行后,LED1按一定周期闪烁(周期理论值为0.2s),LED2在高频脉冲信号(约15KHz)影响下,有微弱的光亮,但无明显的周期变化现象。
三、实验步骤
1、实验连线:
CS0CS8253;OUT08253CLK2;OUT2LED1;OUT1LED2;
CLK3
8253CLK0;CLK3
8253CLK1。
2、编程调试程序。
3、全速运行,观察实验结果。
四、思考题
1、为什么说范例程序运行时LED1闪烁周期的理论值是0.2秒?
在范例程序设置LED2
的最大闪烁周期是多少?
请分析说明。
答:
因为计数器二的初值为04h即十进制的4,那么LED1闪烁周期的理论值是t2=0.05*4=0.2。
LED2的最大闪烁周期是0.05*(15*16^3+15*16^2+15*16+15)=3276.75s
2、修改片选信号接线使CS1和CS8253连接,并要求LED1的闪烁周期变为4秒(亮2
秒,灭2秒),修改程序实现功能。
assumecs:
code
codesegmentpublic
org100h
start:
movdx,04b6h;控制寄存器
movax,36h;计数器0,方式3
outdx,ax
movdx,04b0h
movax,7Ch
outdx,ax
movax,92h
outdx,ax;计数值927Ch
movdx,04b6h
movax,76h;计数器1,方式3
outdx,ax
movdx,04b2h
movax,32h
outdx,ax
movax,0;计数值32h
outdx,ax
movdx,04b6h
movax,0b6h;计数器2,方式3
outdx,ax
movdx,04b4h
movax,50h
outdx,ax
movax,0;计数值50h
outdx,ax
next:
nop
jmpnext
codeends
endstart
五、出现的问题及解决过程(无)
实验5 8259中断控制器实验
一、实验设备
微机实验箱、8086CPU模块。
二、实验要求
了解中断处理的原理,掌握利用中断控制器进行中断申请和中断操作的方法。
全速运行程序,由上往下拨动开关时,相应位置的LED点亮,其余LED全灭。
三、实验步骤
1、实验接线:
CS0CS8259;CS3CS273;O0~O3LED1~LED4;K1~K4IR0~IR3;INTINT;INTAINTA
2、编译调试程序
3、全速运行程序,拨动某一电平开关,观察LED的亮灭情况。
四、思考题
1、说明源代码8259初始化所设置的所有中断控制字的值和含义(按位说明)。
答:
ICW1:
ICW2:
ICW4:
2、修改接线IR3P+(实验箱右下角),并修改源程序,使按实验箱右下角“Pules”键时LED1~LED4全亮。
答:
程序如下
assumecs:
code
codesegmentpublic
org100h
start:
movcx,0
start1:
cli
movdx,04a0h
movax,13h;00010011b单片8259a需要ICW4
outdx,ax;ICW1,ICW4NEEDED
movdx,04a2h
movax,80h;10000000b
outdx,ax;ICW2中断类型80h
movax,01h;01;00000001b
outdx,ax;ICW4正常EOI,非缓冲方式
movax,00h
outdx,ax;OCW1,开放所有中断
nop;以上为8259初始化
movax,0
movds,ax
movdi,200h;初始化中断向量表
movax,offsetint0
movds:
[di],ax
adddi,2
movds:
[di],100h
adddi,2
movax,offsetint1
movds:
[di],ax
adddi,2
movds:
[di],100h
adddi,2
movax,offsetint2
movds:
[di],ax
adddi,2
movds:
[di],100h
adddi,2
movax,offsetint3
movds:
[di],ax
adddi,2;上述程序为芯片8259的初始化程序
movds:
[di],100h;建议不熟练者不要修改
main:
movax,0
sti;开中断
waiting:
cmpax,0h
jewaiting;没发生中断,则等待
nop
nop
movdx,04d0h
outdx,ax;对应LED灯亮
movcx,0
delay:
loopdelay;数字滤波,按键去抖
jmpstart1
int0:
cli;关中断,以下类推
nop;此两行为IR0的中断服务程序
movax,0feh;用户可修改
iret;中断返回,以下类推
int1:
cli
nop;此两行为IR1的中断服务程序
movax,0fdh;用户可修改
iret
int2:
cli
nop;此两行为IR2的中断服务程序
movax,0fbh;用户可修改
iret
int3:
cli
nop;此两行为IR3的中断服务程序
movax,0f0h;用户可修改
iret
codeends
endstart
五、出现的问题及解决过程
序号
出现的问题
原因
解决过程
1
LED1~LED4灯没反应
P+端接线错误
重新接线
二、综合设计实验部分
一、实验设备
微机实验箱、8086CPU模块。
二、实验要求
红绿灯的定时切换(每10秒切换一次)设置灯光测试开关K1,当K1打开(高电平)时,LED1~LED4全亮,关闭时恢复正常切换。
三、实验步骤
1、实验接线:
CS08255CS;CS1CS8253;CLK38253CLK0;OUT08253CLK2
OUT2PA0,PA1,PA2,PA3;PB0LED1;PB1LED4;PB2LED2;PB3LED3;
PA4---K0
2、编辑程序,单步运行,调试程序。
3、调试通过后,全速运行程序,观看实验结果。
四、程序代码
assumecs:
code
codesegmentpublic
org100h
start:
movdx,04b6h;控制寄存器
movax,36h;计数器0,方式3
outdx,ax
movdx,04b0h
movax,7Ch
outdx,ax
movax,92h
outdx,ax;计数值927Ch
movdx,04b6h
movax,0b6h;计数器2,方式3
outdx,ax
movdx,04b4h
movax,90h
outdx,ax
movax,01h;计数值190h
outdx,ax
movcx,9000h;计数
movbl,0;为下面比较做准备
movdx,04a6h;控制寄存器地址
movax,90h;设置为A口输入,B口输出
outdx,ax
start1:
movdx,04a0h;A口地址
inax,dx;输入
movdx,04a2h;B口地址
cmpbl,0
jnzextra;bl≠0→extra
xorax,0ch;取相邻两位
movbh,al;赋值存数
again:
outdx,ax;输出
cmpbl,0
jzstart2
decbl
jmpdelay;进入延时delay
delay:
loopdelay
movcx,9000h
start2:
movdx,04a0h;A口地址
inax,dx
andax,10h;取A口PA5
cmpax,10h;比较是否为1
jzlight;为1进入light全亮灯
moval,bh;赋值取数
jmpstart1
light:
movbl,1;设置bl状态
movdx,04a2h
movax,00h;等全亮
outdx,ax
jmpstart2
extra:
moval,bh;赋值取数
jmpagain
codeends
endstart
五、出现的问题及解决过程
序号
出现的问题
原因
解决过程
1
4个LED灯不能交换亮灭
未对ax赋值操作
增添xorax,0ch语句
2
检测4个LED灯全亮后不能恢复之前的先后亮灭状态
①没有保护现场
②没有延时操作
①增加extra模块,并设置bl状态进行选择判断
②增加delay模块
六、硬件电路图
见下页。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 东华 大学 微机 硬件 课程设计 实验 报告 分解