微机综合实验 微机原理与接口技术.docx
《微机综合实验 微机原理与接口技术.docx》由会员分享,可在线阅读,更多相关《微机综合实验 微机原理与接口技术.docx(15页珍藏版)》请在冰豆网上搜索。
微机综合实验微机原理与接口技术
淮海工学院计算机科学系
实验报告书
课程名:
《微机原理与接口技术》
题目:
综合实验
班级:
学号:
姓名:
一、目的与要求
1、进一步掌握并行接口芯片8255A和微机接口的连接及其编程方法;
2、进一步熟悉DAC0832数模转换器的特性和接口方法,掌握D/A输出程序的设计和调试方法;
3、掌握汇编语言程序设计方法;
4、掌握接口芯片的应用,提高综合运用所学知识解决实际问题的基本方法;
5、提高硬软件调试的方法。
二、实验内容
(1)8255A相关部分
实验原理与8255A相关部分如图11.4所示,PC口8位仅使用PC0,PC1两位接2个开关K1、K2,PB口8位接2个发光二极管(L1、L2),从PC口读入2位开关量送PB口显示。
拨动K1、K2,PB口上接的2个发光二极管L1、L2对应显示K1、K2的状态。
此外,随着PC0、PC1输入的四种开关状态(00、01、10、11)的改变,实时改变:
1.2个发光二极管(L1、L2)的显示;2.8个LED数码管的显示(显示要求:
0832――0x)x为0、1、2、3中的1个数;3.DAC0832的输出波形。
具体要求:
00-输出方波;01-输出锯齿波;10-输出三角波;11-输出正弦波。
图11.4实验线路
图11.5实验线路
(2)DAC0832相关部分
实验原理如图11.5所示,由于DAC0832有数据锁存器、选片、读、写控制信号线,故可与8088CPU总线直接接口。
图中是只有一路模拟量输出,且为单极型电压输出。
DAC0832工作于单缓冲方式,它的ILE接+5V,CS#和XFER#相接后作为0832芯片的片选0832CS。
这样,对DAC0832执行一次写操作就把一个数据直接写入DAC寄存器、模拟量输出随之而变化。
实验框图
三、实验步骤与源程序
1.按图11.4、11.5连好线路(共6根线);
2.使用示波器,检测DAC0832的电压输出;
3.使用DVCC86H调试软件,选择新建源文件或者在某个源文件基础上修改;
4.完成源文件输入后,选择编译->编译连接传送;定位程序起始地址选择默认的1000H;
5.编译错误,修改源程序;
6.调试程序,拨动K1、K2,观察L1、L2显示、数码管显示、示波器波形;
7.纪录各种波形的周期、幅值。
(2)源程序:
CODESEGMENT
ASSUMECS:
CODE
DAPORTEQU0070H;DAC0832端口
CONTPORTEQU00DFH;8279控制口
DATAPORTEQU00DEH;8279数据口
IOCONPTEQU0063H;8255A的控制口
IOCPTEQU0062H;8255A的PC口(输入)
IOBPTEQU0061H;8255A的PB口(输出)
DATAEQU0500H;显示RAM偏移地址,8位段码存放在CS:
[500H]~CS:
[507H]
JUMPEQU0600H;判断转移偏移量
VALEQU0604H;数据量
START:
JMPDACONTORL
SINDB0,2,4,7,9,11,13,16,18,20;0-9
DB22,24,27,29,31,33,35,37,39,42;10-19
DB44,46,48,50,52,54,56,58,60,62;20-29
DB64,66,68,69,71,73,75,77,78,80;30-39
DB82,84,85,87,89,90,92,93,95,96;40-49
DB98,99,100,102,103,104,106,107,108,109;50-59
DB110,112,113,114,115,116,116,117,118,119;60-69
DB120,121,121,122,123,123,124,124,125,125;70-79
DB126,126,126,127,127,127,127,127,127,127,127,127;80-89+90
DACONTORL:
CALLFORMAT
CALLLEDDISP
CALLINIT
LOOPk:
MOVDX,IOCPT
INAL,DX
ANDAL,03H
MOVDS:
[0600H],AL
MOVDX,IOBPT
NOTAL
OUTDX,AL
MOVDX,DAPORT
MOVAL,DS:
[0600H]
CMPAL,0
JEL0
CMPAL,1
JEL1
CMPAL,2
JEL2
CMPAL,3;SIN处理=3
JEL3
JMPLOOPk
L0:
;方波处理
MOVBYTEPTRDS:
[0500H],3FH
CALLLEDDISP
CALLSQUARE;方波处理
JMPLOOPk
L1:
;锯齿波处理
MOVBYTEPTRDS:
[0500H],06H
CALLLEDDISP
CALLhackle;锯齿波处理
JMPLOOPk
L2:
;三角波处理
MOVBYTEPTRDS:
[0500H],5BH
CALLLEDDISP
CALLtrigonal;三角波处理
JMPLOOPk
L3:
;正弦函数处理
MOVBYTEPTRDS:
[0500H],4FH
CALLLEDDISP
CALLsinusoid;正弦函数处理
JMPLOOPk
ERROR:
MOVBYTEPTRDS:
[VAL],0
JMPSQUARE1
SQUARE:
;方波处理
MOVAL,DS:
[VAL]
CMPAL,0
JNECHECK
JMPSQUARE1
CHECK:
CMPAL,0FFH
JNEERROR
SQUARE1:
MOVCX,DS:
[0602H];取度数
CMPCX,180
JAESQUARE2
MOVAL,DS:
[VAL]
OUTDX,AL
INCCX
MOVDS:
[0602H],CX
RET
SQUARE2:
MOVWORDPTRDS:
[0602H],0
MOVAL,DS:
[VAL]
NOTAL
MOVDS:
[VAL],AL
RET
hackle:
;锯齿波处理
MOVAL,DS:
[VAL]
OUTDX,AL
INCAL
MOVDS:
[VAL],AL
RET
trigonal:
;三角波处理
MOVCX,DS:
[0602H];取度数0-255*2
CMPCX,256
JAEtrigonal1
MOVAL,DS:
[VAL]
OUTDX,AL
INCAL
MOVDS:
[VAL],AL
INCCX
MOVDS:
[0602H],CX
RET
trigonal1:
CMPCX,512
JAEtrigonal2
MOVAL,DS:
[VAL]
DECAL
OUTDX,AL
MOVDS:
[VAL],AL
INCCX
MOVDS:
[0602H],CX
RET
trigonal2:
MOVBYTEPTRDS:
[VAL],0
MOVWORDPTRDS:
[0602H],0
RET
sinusoid:
;正弦函数处理
MOVCX,DS:
[0602H];取度数
CMPCX,90
JAquadrant2
MOVSI,DI
ADDSI,CX
MOVAL,[SI]
ADDAL,127
OUTDX,AL
INCCX
MOVDS:
[0602H],CX
RET
quadrant2:
MOVCX,DS:
[0602H];取度数
CMPCX,180
JAquadrant3
MOVSI,DI
ADDSI,180
SUBSI,CX
MOVAL,[SI]
ADDAL,127
OUTDX,AL
INCCX
MOVDS:
[0602H],CX
RET
quadrant3:
MOVCX,DS:
[0602H];取度数
CMPCX,270
JAquadrant4
MOVSI,DI
ADDSI,CX
SUBSI,180
MOVBL,[SI]
MOVAL,127
SUBAL,BL
OUTDX,AL
INCCX
MOVDS:
[0602H],CX
RET
quadrant4:
MOVCX,DS:
[0602H];取度数
CMPCX,360
JAEquadrant5
MOVSI,DI
ADDSI,360
SUBSI,CX
MOVBL,[SI]
MOVAL,127
SUBAL,BL
OUTDX,AL
INCCX
MOVDS:
[0602H],CX
RET
quadrant5:
MOVWORDPTRDS:
[0602H],0
RET
INIT:
MOVAL,89H
MOVDX,IOCONPT
OUTDX,AL
MOVBYTEPTRDS:
[JUMP],3;SIN
MOVBYTEPTRDS:
[VAL],0
MOVWORDPTRDS:
[0602H],0
MOVSI,OFFSETSIN
ADDSI,1000H
MOVDI,SI
MOVDX,DAPORT
RET
DELE:
PUSHCX
MOVCX,60H
DACON2:
LOOPDACON2
POPCX
RET
LEDDISP:
PUSHDX
PUSHAX
PUSHBX
MOVAL,90H
MOVDX,CONTPORT
OUTDX,AL
MOVBX,0
LED1:
CMPBX,7
JALED2
MOVAL,DS:
[BX+DATA]
MOVDX,DATAPORT
OUTDX,AL
INCBX
JMPLED1
LED2:
POPBX
POPAX
POPDX
RET
FORMAT:
MOVBX,0
MOVWORDPTRDS:
[BX+0500H],3F06H;显示01
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],4040H;显示--
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],4F5BH;显示32
ADDBX,2
MOVWORDPTRDS:
[BX+0500H],3F7FH;显示08
ADDBX,2
RET
CODEENDS
ENDSTART
四、实验结果(可以抓图粘贴)
(一)开关状态为00时,其截图如下:
图一:
数码管显示截图图二:
两个灯的状态,此时不亮
图三:
显示的方波
(二)开关状态为01时,其截图如下:
图一:
数码管显示截图
图二:
显示的锯齿波
图三:
两个灯的状态,此时,1号不亮,2号亮
(三)开关状态为10时,其截图如下:
图一:
数码管显示截图
图二:
显示的三角波
图三:
两个灯的状态,此时,2号不亮,1号亮
(四)开关状态为11时,其截图如下:
图一:
数码管显示截图
图二:
显示的正弦波
图三:
两个灯的状态,此时,两个灯均亮
五、结果分析与实验体会
这次实验是微机这门课程的最后一次实验,是一个综合实验也是比较难的一个实验,这次实验把我们前几次的实验综合起来写一个程序,一开始我自己有了大概的想法后就开始写程序,可是到自己写程序的时候就会遇到好多问题,这个程序用的最多的就是跳转语句,在用跳转语句编译的时候会出现超出范围这样的语句我又不知道怎么改的后来参考同学的程序才知道自己哪里错了,在跳转语句里加一个call语句访问比较长的代码段就不会出现这样的问题了,然后继续改自己的程序最后终于可以编译成功了,可是连接的时候.exe文件很难生成的,最后老师告诉我们怎么生成,虽然能运行了但是离理想的结果相差还是有点远的,经过我不断的修改最后终于可以成功运行了,得出了自己想要的结果了。
通过这次实验,我们进一步掌握并行接口芯片8255A和微机接口的连接及其编程方法,熟悉了DAC0832数模转换器的特性和接口方法以及D/A输出程序的设计和调试方法,更加深一步地掌握汇编语言程序设计方法,掌握了接口芯片的应用,提高综合运用所学知识解决实际问题的基本方法以及提高硬软件调试的方法。
总的来说,这次实验让我对于课上所学的知识了解得更加深刻了,为以后的学习打下了一定基础,每次实验都能让我学到好多。
出师表
两汉:
诸葛亮
先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。
然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。
诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。
宫中府中,俱为一体;陟罚臧否,不宜异同。
若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理;不宜偏私,使内外异法也。
侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下:
愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。
将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰“能”,是以众议举宠为督:
愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。
亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。
先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。
侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之、信之,则汉室之隆,可计日而待也
。
臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。
先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。
后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。
先帝知臣谨慎,故临崩寄臣以大事也。
受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。
今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。
此臣所以报先帝而忠陛下之职分也。
至于斟酌损益,进尽忠言,则攸之、祎、允之任也。
愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。
若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。
臣不胜受恩感激。
今当远离,临表涕零,不知所言。