河工大接口原理实验报告.docx
《河工大接口原理实验报告.docx》由会员分享,可在线阅读,更多相关《河工大接口原理实验报告.docx(16页珍藏版)》请在冰豆网上搜索。
![河工大接口原理实验报告.docx](https://file1.bdocx.com/fileroot1/2023-4/24/b904bb74-7e74-4615-b993-518d0a3338f9/b904bb74-7e74-4615-b993-518d0a3338f91.gif)
河工大接口原理实验报告
计算机原理及接口技术
实验报告
班级:
网络C111
姓名:
封荣(同组:
李家兴)
学号:
115072
实验一8253计数器/定时器实验
一、实验目的:
1.学会通过62芯总线、驱动器、译码器等,在PC/XT机外扩展新的芯片。
2.掌握8253定时器编程原理,用示波器观察不同模式下的波形。
二、实验内容:
用8253构成一个方波发生器或分频器。
1.
按下图连接硬件线路:
2.编程将定时器0设为模式3(方波),定时器1设为模式2(分频),定时器0的输出脉冲作为定时器1的时钟输入。
在示波器中,观察定时器0和1的输出波形及其关系。
三、程序框图:
8253控制端口地址为203H定时器0地址为200H定时器1地址为201H
注:
CLK0连接由8MHZ时钟分频得到的250KHZ,则定时器l输出OUT1约为50HZ。
四、实验报告要求:
1.编写实验程序。
2.画出OUT0、OUT1的输出波形。
3.改变定时器0计数值为奇数(01F5)时,画出其输出波形。
4.总结模式2、模式3的工作特点。
结果:
1.CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,0EC03H
MOVAL,36H
OUTDX,AL
MOVDX,0EC00H
MOVAL,0F4H
OUTDX,AL
MOVAL,01H
OUTDX,AL
MOVDX,03C03H
MOVAL,74H
OUTDX,AL
MOVDX,0EC01H
MOVAL,0AH
OUTDX,AL
MOVAL,0
OUTDX,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
2.
3.
4.
模式2:
CPU输出控制字后,输出OUT信号变为高电平,在写入计数值后,Count将立即自动对输入CLK计数,在计数过程中,输出始终保持为高电平,直至计数为0,输出才变低电平。
特点:
能够连续工作;不用重新设置计数初值;计数过程可由GATE控制脉冲;在计数过程中可以改变计数器,这对正在进行的计数过程没有影响。
模式3:
若计数值为偶数,在装入计数面器后,每一个脉冲都使计数器减2,当减为0时,一方面使输出改变状态另一方面重新装入计数值开始新的计数,若为奇数,则减为1.
GATE信号可以计数程序重新开始;若在计数期间写入一个新的计数值,并不影响现行的计数过程。
实验二8255A并行口实验<一>
一、实验目的:
1.掌握8255A编程原理。
2.了解键盘结构,学会读取按键的方法。
二、实验内容:
用8255来控制一个小键盘的识别。
1.
线路图如下:
注:
在实验台上8255A的CS端接218—21F插孔,PA0一PA7,PB0一PB2与其旁边的插孔短接。
8255A的端口A地址为218H
端口B地址为219H
端口C地址为21AH
控制口地址为21BH
2.编写程序,使得在小键盘按键后,微机屏幕上有相应字符显示出来.
三、编程指南:
1.通过采用行扫描法或行反转法,识别键盘上的闭合键。
行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如果列值中有某位为低电平,则表明行列交点处的键被按下;否则扫描下一行,直到扫完全部的行线为止.
行反转法识别闭合键时,要将行线接一个并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作在输入方式。
程序使CPU通过输出端口往各行线上全部送低电平,然后读入列线值,如果此时有某一键被按下,则必定会使某一列线值为0。
然后,程序再对两个并行端口进行方式设置,使行线上工作在输入方式,列线工作在输出方式,并且将刚才读得的列线值从列线所接的并行端口输出,再读行线上的输入值,那么,在闭合键所在的行线上的值必定为0。
这样,当一个键被按下时,必定可以读得一对唯一的行值和列值,在我们提供的程序中就采用行反转法来识别键盘按键。
2.在程序设计时,将各个键对应的代码(列值,行值)放在一个表中。
程序通过查表来确定具体按下的为哪一个键。
四、程序清单
PA55EQU0EC18H;8255A的A口地址
PB55EQU0EC19H;8255A的B口地址
P55CTLEQU0EC1BH;8255A的控制口地址
DATASEGMENT
TABIEDW0101H,0102H,0104H,0108H,0110H,0120H,0140H,0180H
DW0201H,0202H,0204H,0208H,0210H,0220H,0240H,0280H
DW0401H,0402H,0404H,0408H,0410H,0420H,0440H,0480H
CHARDB‘CDEFBA9845673210WXYSRPMG’;字符码表
MESDB‘PLAYANYKEYINTHESMALLKEYBOARD!
’,
0AH,0DH
DB‘ITWILLBEONTHESCREEN!
ENDWITHR’,
0AH,0DH,’$’
DATAENDS
CODESEGMENT
MAINPROCFAR
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX;DS指向数据段
MOVDX,OFFSETMES
MOVAH,09;显示提示信息
INT21H
KY:
CALLKEY;调键盘扫描子程序,健入
字符的ASCII码在DL中
CMPDL,‘R’;键入的字符不是结束字符
JNZKY‘R’,则转KY继续
MOVAX,4C00H;返回DOS
INT21H
RET
MAINENDP
KEYPROCNEAR;键盘扫描子程序,键人字
符的ASCII码送DL中
KST:
MOVAL,82H
MOVDX,P55CTL;设置8255A的控制字,均
OUTDX,AL工作于方式0,端口A为输出,B为输入
WAIT1:
MOVAL,00
MOVDX,PA55;端口A输出全0
OUTDX,AL
MOVDX,PB55;从端口B读入列值
INAL,DX
CMPAL,0FFH;若为0FFH,则说明无键
JZWAIT1按下,转WAIT1
PUSHAX;入栈保存列值
PUSHAX
MOVCX,1000H
DLY:
LOOPDLY;延时去抖动
MOVDX,P55CTL
MOVAL,90H;设置8255A的控制字,均
OUTDX,AL工作于方式0,端口A为
输入,B为输出
MOVDX,PB55
POPAX;从端口B输出列值
OUTDX,AL
MOVDX,PA55;从端口A读进行值
INAL,DX
POPBX;列值送AH中
MOVAH,BL
NOTAX;行、列值取反
MOVSI,OFFSETTABLE;扫描码表首址
MOVDI,OFFSETCHAR;字符码表首址
MOVCX,24;小键盘共3×8=24健
TT:
CMPAX,[SI];扫描码相符则转NN
JZNN
DECCX;计数值减1
JZKST;已全部比较完,仍不相符
则转KST
ADDSI,2;修改指针
INCDI
JMPTT;继续比较
NN:
MOVDL,[DI]
MOVAH,02;显示该扫描码对应字符
INT21H
PUSHDX;字符ASCII码入栈保存
MOVAL,82H
MOVDX,P55CTL;设置8255A控制字,均工
OUTDX,AL作于方式0,端口A为输
出,B为输人
WAIT2:
MOVAL,00
MOVDX,PA55;端口A输出全0
OUTDX,AL
MOVDX,PB55;从端口B读进列值
INAL,DX
CMPAL,0FFH;有键按下则转WAIT2等
待释放
JNZWAIT2
POPDX;退栈
RET
KEYENDP
CODEENDS
ENDSTART
五、实验报告要求:
1.参考实验程序画出流程图。
2.用行扫描法编写实验程序,并进行调试。
3.写出实验心得体会。
通过本次实验对于8255有了更深一步的了解,对键盘的识别及如何识别也有了深一步的了解。
本次实验CPU要先检查是否有键按下,然后再对键入的内容进行比较,因此为了提高CPU的利用率,一般可以采用的中断处理程序里面再对键盘进行键号扫描,为了防止抖动问题,可以设置延迟再开始扫描按键号。
实验三8255A并行口实验<二>
一、实验目的:
掌握通过8255并行口传输数据的方法,读取开关的数据,控制LED发光二极管的亮灭。
二、实验内容:
编写一个开关量控制程序。
1.输入开关状态全为0时,PA口上发光二极管循环轮流点亮。
2.当开关处于非全0时,则直接把开关状态在发光二极管上显示出来。
三、实验步骤:
1.将8255的PA0~PA7与LED1~LED8,PC4~PC7与LED9~LED12相连。
将8255的PB0~PB7与KEY1~KEY8,PC0~PC3与KEY9~KEY12相连。
2.编写程序,为8255初始化,使三个端口均工作在方式0,设A组为输出状态,B组为输入状态,根据实验内容调试程序,完成实验要求。
四、编程提示:
各LED为共阳极发光二极管,使其点亮应使8255相应端口的相应位清0。
五、实验报告要求:
1.画出实验线路图。
2.编写程序并绘制流程图。
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,21BH
MOVAL,82H
OUTDX,AL
MOVDX,219H
INAL,DX
TESTAL,80H
JNZROLL
MOVAL,0
MOVDX,218H
OUTDX,AL
CALLDELAY
JMPEXIT
ROLL:
MOVAL,0FEH
MOVCX,8
MOVDX,218H
LOOP1:
OUTDX,AL
ROLAL,1
CALLDELAY
LOOPLOOP1
EXIT:
MOVAH,4CH
INT21H
DELAYPROC
PUSHCX
MOVBX,03333H
LOOP2:
MOVCX,03333H
LOOP3:
LOOPLOOP3
DECBX
JNZLOOP2
POPCX
RET
DELAYENDP
CODEENDS
ENDSTART
3.通过实验总结8255的三种工作方式。
1.方式0一般使用在同步传送和查询式传送中。
2.方式1的输出端口一般用于中断方式与CPU相联系。
方式1有如下特点:
①端口A和端口B可分别作为两个数据口工作于方式1,并且任何一个端口可作为输入或输出口。
②若只有一个端口工作于方式1,则端口C有三位被规定配合其工作,其余共13位可工作于方式0。
③若两个端口都工作于方式1,则端口C有6位被规定配合其工作,端口C所剩2位仍可作为输入或输出。
3.方式2应用于分时工作的双向外设(输入输出设备)的连接.