




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浙江工业大学计算机学院实 验 报 告实验名称 定时/计数器(8253)姓 名 学 号 班 级 教 师 日 期 2014.11.2 实验目的和要求了解8255A并行接口芯片的工作原理,学会设置方式选择控制字,设置C端口置位控制字 ,如何从端口读入,输出数据。并且了解A、B、C各个端口的工作机理和它们之间的联系。实验设备(环境)及要求PC机一台,TPC-USB平台,8255A并行接口芯片实验要求实验(1):从8255端口C输入数据,再从端口A输出。实验(2):用8255测试3-8译码器74LS138输出结果。要求人机交互界面设计按照集成电路74LS138芯片的引脚图显示在屏幕上,如图3.3所示。 图3.3 TPC-USB平台8255方式0实验二:人机交互界面图实验(3):编程实现每按一次单脉冲按钮产生一个正脉冲,使8255产生一次中断请求,让CPU进行一次中断服务:依次输出01H、02H,04H,08H,10H,20H,40H,80H使L0L7依次发光,中断次结束。实验(4):编程实现:每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断次结束。实验步骤实验(1):1)连接实验电路如图3.1,8255端口C接逻辑电平开关K0K7,端口A接LED显示电路L0L7。图3.1 TPC-USB平台8255方式0实验一连线2)根据流程图3.2,编程并运行,观察实验结果。图3.2 TPC-USB平台8255方式0实验1:程序流程实验(2): 1)按图3.4连接硬件电路。图3.4 TPC-USB平台8255方式0实验二连线图2)根据流程图3.5,编程并运行,观察实验结果。图3.5 TPC-USB平台8255方式0实验二流程图实验(3):1)按图3.6连好线路。图3.6 TPC-USB平台8255方式1输出实验连线图 2)根据流程图3.7,编程并运行,观察实验结果。(A) 输出主程序 (B) 输出中断服务程序图3.7 TPC-USB平台8255方式1输出实验流程图实验(4): 1)按图3.8连好线路。 图3.8 TPC-USB平台8255方式1输入实验连线图 2)根据流程图3.9,编程并运行,观察实验结果。(A) 输出主程序 (B) 输出中断服务程序图3.9 TPC-USB平台8255方式1输入实验流程图实验结果实验(1):PC0PC7对应的各个开关打开,相应PA端口的灯就亮,开关关闭,则相应PA端口的灯就灭。实验(2):在屏幕上74LS138译码器的各个引脚上输入相应的值,由A、B、C三个引脚的二进制值计算出十进制数(这部分都是译码器的工作),行对应的引脚输出0,其他引脚输出1。实验(3):每按一次单脉冲按钮,产生一次中断请求,依次使L0L7灯亮,中断8次结束。实验(4):每按一次单脉冲按钮,产生一次中断请求,在屏幕上显示A端口开关预置的ASIIC码,中断8次结束讨论和分析(1)实验结果分析:实验(1):通过mov dx,28AH in al,dx读入C端口的字,即读入C端口的开关预置的值,又通过mov dx,288H out dx,al 把从C端口读入的字送到A端口,所以A端口相应的灯会亮。实验(2):在屏幕上A、B、C相应的引脚输入值,通过调用InputB子程序将输入的值读入A端口,经过译码器的计算,在Y0Y7引脚输出对应的值,然后由C端口读入,调用OutputC子程序一位一位得取出来,然后依次输出在屏幕上对应的引脚。实验(3):每按一次单脉冲按钮,产生一次中断请求,通过mov al,bl mov dx,288h out dx,al将bl的值从8255的A口输出,由于bl初始化为01H,每一次中断以后执行shl bl,1 将bl左移一位,即01H变成02H,依次变成04H、08H、10H.所以L0L7会依次发光。实验(4):每按一次单脉冲按钮,产生一次中断请求,通过mov dx,288h in al,dx自8255A口输入一数据,又通过mov dl,al mov ah,02h int 21h 将数据在屏幕上输出。,bl初始化为8,每执行一次中断bl减1,所以8次以后退出。 (2)实验总结及需要注意的问题:由于各种硬件设备的连线都与前面的实验比较相似,所以在硬件连接上没有出现什么问题,在第一个实验过程中,中间都没有差错,但是就是出不了结果,经过几番折腾后,我们换了它的端口,因为288H端口就是没有结果,换了280端口后才成功了,所以本来最简单的一个实验却耗费了很长的时间。实验2相对来说是这几个实验中最难做的,代码运行后不管怎么输入引脚值,Y0Y7引脚输出的都是全1,代码也找不出错误,后来重启了实验运行软件,结果就好了。实验3其实也比较简单,但是实验结果就是A端口连接的灯都不会亮,在这里也耗费了很多时间,后来才发现在做第2个实验的时候,把74LS138译码器移到了另一个位置,导致小灯不能发光,移到原来位置以后就可以了。实验4跟实验3的原理差不多,一个是输入,一个是输出,所以在实验3的基础上很快就完成了。实验主要代码实验(1):code segment assume cs:codestart: mov al,10001001B mov dx,28BH out dx,al ;设置方式选择控制字 mov dx,28AH in al,dx ;读入C端口的字 mov dx,288H out dx,al ;把从C端口读入的字送到A端口 mov dl,al mov ah,2 int 21h ;显示输出,dl中存储的为输出的字符 mov dl,0dh int 21h ;回车符 jmp start mov ax,4c00h ;返回DOS系统 int 21h code ends end start实验(2):data segment chip db 13,10 db 13,10 db Program to test the chip of 74LS138,13,10 db 13,10 db 13,10 db +-+,13,10 db | A B C G1 G2A+G2B |,13,10 db | |,13,10 db | 74LS138 |,13,10 db | |,13,10 db | Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 |,13,10 db +-+,13,10,$mess db After you have ready,Please press any key !,$ mes2 db Test Again ?(Y/N),$InA db 0 OutC db 0 cll db ,$ data ends ;* code segment assume cs:code,ds:data start: mov ax,data mov ds,axagain: call cls ;屏幕初始化call InputB ;输入各个引脚的子程序,InA赋值mov dx,28bh ;设置方式选择控制字 mov al,10001011bout dx,al mov dx,288h ;把InA的值送到A端口 mov al,InA out dx,al call OutputC ;C端口读入,并显示在屏幕相应引脚上jmp1: mov ah,2 mov dh,15 mov dl,20 int 10h ;置光标位置,dh为行,dl为列mov ah,09 ;输出提示符Test Again ?(Y/N)lea dx,mes2 int 21h mov ah,1 int 21h ;从键盘输入一个字符存于al中cmp al,y ;判断是否为Yje again ;相等则重复执行 cmp al,n ;判断是否为Nje exit ;相等则退出mov ah,2mov dh,15mov dl,0int 10h ;置光标位置,dh为行,dl为列lea dx,cll ;输出cll字符串mov ah,9 int 21hjmp jmp1 ;如果输入的既不是Y也不是N,则跳到jump1继续执行exit: mov ah,4chint 21h ;* InputB proc near mov ah,2 mov bh,0 mov dx,0 int 10h ;置光标位置,dh为行,dl为列mov ah,09 lea dx,chip int 21h ;显示74LS138芯片视图mov ah,2 mov bh,0 mov dh,15 mov dl,10 int 10h ;置光标位置,dh为行,dl为列mov ah,09h lea dx,mess int 21h ;提示输入引脚值mov ah,0ch mov al,08h int 21h ;清除缓冲区,并请求指定的输入功能为08hwait1: mov ah,0Bh int 21h ;检验键盘状态cmp al,0 jne wait1 ;不相等,继续等待mov ah,2 mov bh,0 mov dh,15 mov dl,10 int 10h ;置光标位置lea dx,cll mov ah,9 int 21h ;输出cll字符串mov dh,4 ;用于置光标位置mov dl,18 jmp3: push dx mov ah,2 mov bh,0 int 10h ;置光标位置 jmp4: mov ah,7 int 21h ;键盘输入(无回显),输入值存放在alcmp al,1 ;输入为1则往下执行,不为1则跳转到jump2执行jne jmp2 mov ah,2xchg al,dl int 21h ;输出刚刚输入的字符mov cl,1 ;用于移位mov bl,InA ;把InA的值存入bl sal bl,cl ;bl算数左移一位add bl,1 ;bl加1mov InA,bl ;将bl的值存入InA jmp jmp5 jmp2: cmp al,0 jne jmp4 ;输入为0则往下执行,不为0则跳转到jump2执行,重新输入mov ah,2 xchg al,dlint 21h ;输出刚刚输入的字符mov cl,1 ;用于移位mov bl,InA ;把InA的值存入bl sal bl,cl ;bl算数左移一位mov InA,bl ;将bl的值存入InAjmp5: pop dx ;保持原来的光标位置add dl,5 ;原来的光标位置向右移5位cmp dl,43 ;与43比较;若不到43跳到jmp3继续执行输入引脚jb jmp3 ;若不到43跳到jmp3继续执行输入引脚mov cl,3 ;设置移位的位数mov bl,InA ;把InA的值存到blsal bl,cl ;算数左移3位mov InA,bl ;把bl的值重新放回到InAret InputB endp ;* cls proc near mov ah,6 mov al,0mov ch,0 mov cl,0 mov dh,24 mov dl,79 mov bh,7 int 10h ;屏幕初始化,AL为页号,BH为卷入行属性,CH/CL为左上角行;列号,DH/DL为右上角行/列号ret cls endp ;* OutputC proc near mov dx,28ah in al,dx ;读C端口的值mov OutC,al ;将值暂存在OutC中mov dh,12mov dl,16 ;用于置光标位置j: push dx ;保护现场,使pop dx以后DX的值不改变 mov ah,2 ;置光标位置mov bh,0 int 10h mov al,OutC ;将OutC放回到almov bl,01h ;二进制位00000001B,用于取al的最低位and bl,al ;取al的最低位存放于bl中mov cl,1 ;用于移位shr al,cl ;al向右移1位,是原来的第二位变成最低位mov OutC,al ;将值暂存在OutC中add bl,30h ;将ASIIC码转换成字符形式,用于输出xchg bl,dl ;交换bl.dl中的值mov ah,2 ;输出DL中的值,即刚才取出的最低位int 21hpop dxadd dl,4 cmp dl,46 jb j ret OutputC endp ;* code ends end start实验(3):code segment assume cs:code start: mov ax,cs mov ds,ax mov dx,offset int_proc mov ax,250bh ;设外部中断int_proc类型号为0BH int 21h mov dx,21h ;读入中断屏蔽命令字in al,dx and al,0f7h ;开放IRQ3中断 out dx,al mov dx,28bh ;置8255为A口方式1输出 mov al,0a0h out dx,al mov al,0dh ;将PC6置位 out dx,al mov bl,1 ;bl初始化为1sti ;开中断ll:jmp ll ;空循环等待中断 int_proc: mov al,bl 将bl的值送到al mov dx,288h ;将AL从8255的A口输出 out dx,al mov al,20h ;发中断结束命令out 20h,al shl bl,1 ;bl左移一位jnc next ;中断次数小于8,返回主程序 in al,21h ;读入中断屏蔽命令字or al,08h ;关闭IRQ3中断 out 21h,al sti ;开中断 mov ah,4ch ;返回DOS int 21h next:iret ;返回主程序code ends end start实验(4):code segment assume cs:code sta
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论