东南大学微机原理微机系统与接口实验五六实验报告自动化学院_第1页
东南大学微机原理微机系统与接口实验五六实验报告自动化学院_第2页
东南大学微机原理微机系统与接口实验五六实验报告自动化学院_第3页
东南大学微机原理微机系统与接口实验五六实验报告自动化学院_第4页
东南大学微机原理微机系统与接口实验五六实验报告自动化学院_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、 东南大学微机实验及课程设计实验报告实验五 8253 计数器/定时器实验六 8255 并行输入输出姓 名: 学 号: 08011 专 业: 自动化 实 验 室: 计算机硬件技术 实验时间: 2012年04月27日 报告时间: 2013年05月15日评定成绩: 审阅教师: 一. 实验目的实验五:1)掌握计数器/定时器 8253 的基本工作原理和编程应用方法; 2)了解掌握 8253 的计数器/定时器典型应用方法实验六:1)掌握8255方式0的工作原理及使用方法,利用直接输入输出进行控制显示;2)掌握8段数码管的动态刷新显示控制;3)分析掌握 8255工作方式时的使用及编程,进一步掌握中断处理程序

2、的编写。二. 实验内容实验五:必做:5-1 将计数器0设置为方式0,计数初值为N(小于等于0FH),用手动的方式逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化。(参考程序p63)5-2 将计数器0、1分别设置在方式3,计数初值设为1000,用逻辑笔观察OUT0电平的变化。(参考程序p64)实验六:(1)8255方式 0:简单输入输出实验电路如图一,8255C口输入接逻辑电平开关K0K7,编程A口输出接 LED显示电路L0L7;用指令从 C口输入数据,再从A口输出。图一 8255简单输入输出(2)编程将A口 L0-L7控制成流水灯,流水间隔时间由软件产生;流水方向由

3、K0键在线控制,随时 可切换;流水间隔时间也可由K4K7键编码控制,如 0000对应停止,0001对应 1秒,1111对应 15 秒,大键盘输入 ESC键退出。(3)8段数码管静态显示:按图二连接好电路,将 8255的 A口PA0PA6分别与七段数码管的段码 驱 动输入端a相连,位码驱动输入端 S1接+5V(选中),S0、dp接地(关闭)。编程从键盘输 入一位十进制数字(09),在七段数码管上显示出来。 图二 单管静态显示(4) 8段数码管动态显示:按图三连接好电路,七段数码管段码连接不变,位码驱动输入端S1、S0接8255 C口的PC1、PC0。编程在两个数码管上显示“56”。图三 双管动态

4、显示二. 实验原理与接线实验五:5-1 参考图 3.6-1 虚线连接电路,将计数器 0 设置为方式 0,计数器初值为 N(N0FH) ,用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察 OUT0 电平变化(当输入 N+1 个脉冲后 OUT0 变高电平)l 8253的CS接280Hl 8253的GATE0接5Vl 8253的CLK0接单脉冲1或2l 8253的OUT0接逻辑笔(高电平LED12亮,低电平LED13亮)5-2 按图 3.6-2连接电路,将计数器 0、计数器 1 分别设置为方式 3,计数初值设为 1000,用逻辑笔观察OUT1 输出电平的变化(频率 1Hz)l 82

5、53的CS接280Hl 8253的GATE0和GATE1接5Vl 8253的CLK0接1MHzl 8253的OUT0接CLK1l 8253的OUT1接逻辑笔编辑提示:1、8253定时器0地址 280h 8253定时器1地址 281h 8253定时器2地址 282h 8253控制口地址 283h 2、实验参考程序中的口地址和代号是随意的,看程序的时候要注意。 实验六: 八段式LED数码管的符号和引脚共阴极七段数码管字型数码实验接线图实验接线图(静态显示)¨ PA0PA6分别接数码管的ag¨ PC0PC7分别逻辑电平开关的K0K7¨ 位选端S1接5V¨ 位选

6、端S0接地¨ 数码管dp端接地实验接线图(动态显示)¨ PA0PA6分别接数码管的ag¨ 位选端S0 、S1接8255C口的PC0、PC1端编程提示:1、实验台的七段数码管为共阴性,段码同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码的输入端高电平选中。2、8255的A口、B口、C口和控制口的端口地址分别为288H28BH。编程首先要设置控制字输出到控制口。3、逻辑电平开关向上拨到“1”时输出高电平;向下拨到“0”时输出低电平。4、动态显示时应先从A口输出段码,然后再从C口输出位码,然后应该延时一段时间才能看到数码管的显示。其中段码需要查表Led

7、db 3fh,06h,71h位码分别为:左边的数码管xxxxxx10 右边的数码管xxxxxx015、动态显示时为了使两个数码管的字符可以同时看到,应注意延时的时间。6、注意字符变换之间应使段位全灭,避免影子。四.实验源程序(主要部分)和流程图实验五:源程序:5-1 将计数器0设置为方式0,计数初值为N(小于等于0FH),用手动的方式逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化。(参考程序p63)ioportequ 0b800H-0280H ;tpc卡中设备的io地址io8253aequ ioport+283H ; 8253控制寄存器地址io8253bequ i

8、oport+280H ;计数器0地址stacks segment stack db 100 dup (?)stacks endscode segment assume cs:code,ss:stacksmain proc farstart:mov ax,stacks mov ss,ax mov al,10h ;设置8253通道0为工作方式0,二进制计数 mov dx,io8253a out dx,al mov dx,io8253b ;送计数初值为0FH mov al,0fh out dx,alZZZ: in al,dx ;读计数初值 call disp ;调显示子程序 push dx mov

9、ah,06h mov dl,0ffh int 21h pop dx jz ZZZ mov ah,4ch ;退出 int 21hmain endpdisp proc near ;显示子程序 push dx and al,0fh ;首先取低四位 mov dl,al cmp dl,9 ;判断是否<=9 jle num ;若是则为'0'-'9',ASCII码加30H add dl,7 ;否则为'A'-'F',ASCII码加37Hnum: add dl,30h mov ah,02h ;显示 int 21h mov dl,0dh ;加回

10、车符 int 21h mov dl,0ah ;加换行符 int 21h pop dx ret ;子程序返回 disp endp code endsend start实验现象:计数器:当手动输入单脉冲时,屏幕显示F,E,D,C,B,A1,然后输出逻辑笔显示一个高电平。原因:计数器:程序中设定的计数初值为0FH,故从0FH递减至1计数,每计完一次,输出一个高电平。 上图为计数过程中逻辑笔红灯亮。5-2 将计数器0、1分别设置在方式3,计数初值设为1000,用逻辑笔观察OUT0电平的变化。(参考程序p64)ioportequ 0b800h-0280h ;tpc卡中设备的io地址io8253

11、aequ ioport+280h ;计数器0地址io8253bequ ioport+281h ;计数器1地址io8253cequ ioport+283h ; 8253控制寄存器地址stacks segment stack db 100 dup (?)stacks endscode segment assume cs:code,ss:stacksmain proc farstart:mov ax,stacksmov ss,axmov dx,io8253c ;向8253写控制字mov al,36h ;使0通道为工作方式3out dx,almov ax,1000 ;写入循环计数初值1000mov d

12、x,io8253aout dx,al ;先写入低字节mov al,ahout dx,al ;后写入高字节mov dx,io8253cmov al,76h ;设8253通道1工作方式2out dx,almov ax,1000 ;写入循环计数初值1000mov dx,io8253bout dx,al ;先写低字节mov al,ahout dx,al ;后写高字节mov ah,4ch ;程序退出int 21hmain endp code endsend start定时器:逻辑笔输出频率为1Hz的信号。 定时器:初始信号为1MHz,经过2级10000的记数,频率变为原来的1000000倍,即

13、1Hz,实现1s的周期信号。流程图:实验六:1. 8255简单输入输出程序ioportequ 0b800h-0280h ;tpc卡中设备的io地址io8255aequ ioport+288h ;8255A口地址 io8255bequ ioport+28bh ;8255控制寄存器端口地址io8255cequ ioport+28ah ;8255C口地址stacks segment stack db 100 dup (?)stacks endscode segment assume cs:code,ss:stacksmain proc farstart:mov ax,stacksmov ss,axm

14、ov dx,io8255b ;设8255为C口输入,A口输出 mov al,8bh out dx,alinout: mov dx,io8255c ;从C口输入一数据 in al,dx mov dx,io8255a ;从A口输出刚才自C口 out dx,al ;所输入的数据 mov dl,0ffh ;判断是否有按键 mov ah,06h int 21h jz inout ;若无,则继续自C口输入,A口输出 mov ah,4ch ;否则返回DOS int 21hmain endpcode ends end start实验现象:开关K0K7的高低电平分别表示1和0,设置K0K7的值,在流水灯L0L7

15、中用灯的亮与灭来显示。下图将k0,k1设置为高电平,对应的灯亮起。2. 流水灯start:mov ax,stacksmov ss,ax mov dx,io8255b ;设8255为C口输入,A口输出mov al,8bh out dx,alinout: mov cl,01h mov dx,io8255c ;从C口输入一数据 in al,dx test al,01 jne right ;k0为高电平时向右 jmp left ;k0为低电平时向左 right: mov dx,io8255c ;从C口输入一数据 in al,dx and al,11110000b ;判断高四位 cmp al,00h ;

16、判断延时,ah=00时停止,ah=10时延时移动显示 je right mov al,cl call delay1 rol cl,1 mov dx,io8255c ;从C口输入一数据 in al,dx test al,01 jne right ;k0为高电平时向右 jmp left left: mov dx,io8255c ;从C口输入一数据in al,dx and al,11110000b ;判断高四位 cmp al,00h ;判断延时,ah=00时停止,ah=10时延时移动显示 je left mov al,cl call delay1 ror cl,1 mov dx,io8255c ;从

17、C口输入一数据 in al,dx test al,01 jne right ;k0为高电平时向右 jmp left delay1 proc near mov dx,io8255a ;从A口输出刚才自C口 out dx,al ;所输入的数据 call delay mov al,0 out dx,al call delay retdelay1 endpDELAY PROCNEAR ;延迟子程序 pushcx push bx mov bx,0fffhcc: mov cx,0ffffhccc: loopccc dec bx jnz cc pop bx popcx retDELAY ENDPcode e

18、nds end start实验现象:流水灯的流水方向可由K0键控制,K0为高电平时向左,K0为低电平时向右。但是流水间隔时间可由K4K7来控制,但按ESC键也不能退出流水灯。虽然我们尝试修改了代码,不过最后还是没能实现按下esc退出。3. 8段数码管静态显示程序段:start:mov ax,stacksmov ss,axmov ax,datamov ds,axmov dx,io8255b ;将8255设为A口输出mov al,80hout dx,almov di,offset buffer1 ;设di为显示缓冲区loop2:mov bh,02lll: mov byte ptr bz,bhpus

19、h didec diadd di, bzmov bl,di ;bl为要显示的数pop di mov al,0 mov dx,io8255a out dx,almov bh,0mov si,offset led ;置led数码表偏移地址为SIadd si,bx ;求出对应的led数码mov al,byte ptr simov dx,io8255c ;自8255A的口输出out dx,almov al,byte ptr bz ;使相应的数码管亮mov dx,io8255aout dx,almov cx,3000delay:loop delay ;延时mov bh,byte ptr bzshr bh

20、,1jnz lllmov dx,0ffhmov ah,06int 21hje loop2 ;有键按下则退出mov dx,io8255amov al,0 ;关掉数码管显示out dx,almov ah,4ch ;返回int 21hcode endsend start实验现象: 从键盘输入一个09的数字后数码管中显示出该数字。键入的数字6:数码管显示6:4. 8段数码管动态显示程序段data segment ioport equ 0c800h-0280hio8255aequ ioport+288hio8255bequ ioport+28bhled db 3fh,06h,5bh,4fh,66h,6d

21、h,7dh,07h,7fh,6fhmesg1 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,stacksmov ss,ax mov ax,datamov ds,axmov dx,io8255b ;使8255的A口为输出方式mov ax,80hout dx,alsss: mov dx,offset m

22、esg1 ;显示提示信息mov ah,09hint 21hmov ah,01 ;从键盘接收字符int 21hcmp al,'0' ;是否小于0jl exit ;若是则退出cmp al,'9' ;是否大于9jg exit ;若是则退出sub al,30h ;将所得字符的ASCII码减30Hmov bx,offset led ;bx为数码表的起始地址xlat ;求出相应的段码mov dx,io8255a ;从8255的A口输出out dx,aljmp sss ;转SSSexit: mov ah,4ch ;返回DOSint 21hcode endsend start实

23、验现象:两个数码管动态显示出“56”。流程图 图四 8255简单输入输出程序流程图 图五 8255动态显示56程序流程图五提高与创新研究实验五:1.图3.6-2系统中最大定时时间为多长,如果需要获得20秒的精确定时该如何处理?CLK0:0.0000001sCLK1、OUT0:0.0001sCLK2、OUT1:1s所以最大定时时间为一秒。如果要获得20秒的精确定时应将OUT1接CLK2,OUT2接输出,当OUT2输出20个方波时,为20s。2.计数器选用方式三的原因:应要将OUT0接CLK1,所以输出最好为占空比为1:1的方波,而只有方式3输出为占空比为1:1的方波,故选用方式三。实验六:递增0

24、099 计数器在电路图3的基础上,编程实现递增0099 计数器(选作与探索实验一),编程如下:data segmentioportequ 0e000h-0280hio8255aequ ioport+28ahio8255bequ ioport+28bhio8255cequ ioport+288hled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码buffer1 db 0,0 ;存放要显示的十位和个位bz dw ? ;位码data endsstacks segment stack db 100 dup (?)stacks endscode segme

25、nt assume cs:code,ds:data,ss:stacksstart:mov ax,stacksmov ss,axmov ax,datamov ds,axmov dx,io8255b ;将8255设为A口输出mov al,80hout dx,al mov di,offset buffer1 ;设di为显示缓冲区loop1:mov cx,0300h ;循环次数loop2:mov bh,02diy:mov byte ptr bz,bhpush didec diadd di, bzmov bl,di ;bl为要显示的数pop dimov bh,0mov si,offset led ;置led数码表偏移地址为SIadd si,bx ;求出对应的led数码mov al,byte ptr simov dx,io8255c ;自8255A的口输出out dx,almov al,byte ptr bz ;使相应的数码管亮mov dx,io8255aout dx,alpush cxmov cx,0ffffh ;如果显示过快,可更改cx值为最大

温馨提示

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

评论

0/150

提交评论