东南大学微机原理第五次实验报告.doc_第1页
东南大学微机原理第五次实验报告.doc_第2页
东南大学微机原理第五次实验报告.doc_第3页
东南大学微机原理第五次实验报告.doc_第4页
东南大学微机原理第五次实验报告.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

微机实验及课程设计实验报告实验五8255并行输入输出姓 名: 学 号: 专 业: 仪器科学与工程学院 实 验 室:计算机硬件技术 实验时间: 2014年05月22日报告时间: 2014年05月28日评定成绩: 审阅教师: 1、 实验目的1、掌握8255方式0的工作原理及使用方法,利用直接输入输出进行控制显示。2、掌握8段数码管的动态刷新显示控制。2、 实验内容1、8段数码管静态显示: 编程从键盘输入一位十进制数字(09),在数码管上显示出来。2、8段数码管动态显示:在两个数码管上同时显示不同的两位数字或字母,保持不变直至退出。(如56或7f,参考程序p69)3、静态显示:用逻辑电平开关预置某个数字(09)的ASCII码,将该数据用8255的C口读入,并用A口输出,并在数码管显示出来;如果预置的ASCII码不是数字(09),数码管显示E字母。4、动态显示:在两个数码管上滚动循环显示不同的0f字符。(即开始时两个数码管显示01,12,23,34 f0,一直循环直至退出)(选作) 3、 实验台的数码管显示电路4、 入实验接线图 1、静态显示 PA0PA6分别接数码管的ag PC0PC7分别逻辑电平开关的K0K7 位选端S1接5V 位选端S0接地 数码管dp端接地2、动态显示 PA0PA6分别接数码管的ag 位选端S0 、S1接8255C口的PC0、PC1端 5、 源代码 1.input1.asmdata segmentioport equ 0b800h-0280hio8255a equ ioport+288hio8255b equ ioport+28bhled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhstring db 0dh,0ah,Input a num (0-9h):,0dh,0ah,$data endsstacks segment stack db 100 dup (?)stacks endscode segment assume cs:code,ds:data,ss:stacksstart: mov ax,stacks mov ss,ax mov ax,data mov ds,ax mov dx,io8255b ;使8255的A口为输出方式 mov ax,80h out dx,alsss: mov dx,offset string ;显示提示信息 mov ah,09h int 21h mov ah,01 ;从键盘接收字符 int 21h cmp al,0 ;是否小于0 jl exit ;若是则退出 cmp al,9 ;是否大于9 jg exit ;若是则退出 sub al,30h ;将所得字符的ASCII码减30H mov bx,offset led ;bx为数码表的起始地址 xlat ;求出相应的段码 mov dx,io8255a ;从8255的A口输出 out dx,al jmp sss ;转SSSexit: mov ah,4ch ;返回DOS int 21hcode endsend start 2.output.asmdata segmentioport equ 0b800h-0280h ;tpc卡中设备的io地址io8255a equ ioport+28ah ;8255C口地址io8255b equ ioport+28bh ;8255控制寄存器端口地址io8255c equ ioport+288h ;8255A口地址led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码buffer1 db 5,6 ;存放要显示的个位和十位bz dw ? ;位码data endsstacks segment stack db 100 dup (?)stacks endscode segment assume cs:code,ds:data,ss:stacksstart: mov ax,stacks mov ss,ax mov ax,data mov ds,ax mov dx,io8255b ;将8255设为A口输出 mov al,80h out dx,al mov di,offset buffer1 ;设di为显示缓冲区loop2:mov bh,02lll: mov byte ptr bz,bh push di dec di add di, bz mov bl,di ;bl为要显示的数 pop di mov al,0 mov dx,io8255a out dx,al mov bh,0 mov si,offset led ;置led数码表偏移地址为SI add si,bx ;求出对应的led数码 mov al,byte ptr si mov dx,io8255c ;自8255A的口输出 out dx,al mov al,byte ptr bz ;使相应的数码管亮 mov dx,io8255a out dx,al mov cx,3000delay:loop delay ;延时 mov bh,byte ptr bz shr bh,1 jnz lll mov dx,0ffh mov ah,06 int 21h je loop2 ;有键按下则退出 mov dx,io8255a mov al,0 ;关掉数码管显示 out dx,al mov ah,4ch ;返回 int 21hcode endsend start3.input2.asmdata segmentioportequ 0b800h-0280h ;tpc卡中设备的io地址io8255aequ ioport+288h ;8255A口地址 io8255bequ ioport+28bh ;8255控制寄存器端口地址io8255cequ ioport+28ah ;8255C口地址led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,79hdata endsstacks segment stack db 100 dup (?)stacks endscode segment assume cs:code,ds:data,ss:stacksmain proc farstart:mov ax,stacksmov ss,ax mov ax,datamov ds,axmov dx,io8255b ;设8255为C口输入,A口输出mov al,8bhout dx,alinout: mov dx,io8255c ;从C口输入一数据in al,dxcmp al,30h ;是否小于0jl error ;若是则显示Ecmp al,39h ;是否大于9jg error ;若是则显示E sub al,30h jmp show error: mov al,0gfah ;显示Eshow: mov bx,offset led ;bx为数码表的起始地址xlat ;求出相应的段码 mov dx,io8255a ;从A口输出刚才自C口所输入的数据out dx,al mov dl,0ffh ;判断是否有按键mov ah,06hint 21hjz inout ;若无,则继续自C口输入,A口输出mov ah,4ch ;否则返回DOSint 21hmain endpcode ends end start6、 思考与总结本次实验中遇到的主要问题有:1、 设备损坏本次实验中用到两片数码管皆各有损坏,表现为各有几处一直

温馨提示

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

评论

0/150

提交评论