微机原理实验报告
实验三
班 级: 2016级信息工程 班 姓 名: 学 号: 序 号:
评阅分数:
实验三 微机接口实验系统的熟悉、8255芯片的编程
一、实验目的
1、自学TPC-ZK通用32位微机接口实验系统的组成。
2、掌握实验系统中接口地址译码电路的工作原理及计算方法。 3、掌握简单I/O端口的读写操作。 4、掌握8255的工作原理及编程方法。
二、实验内容
题目1:简单I/O端口的读写操作 (1)端口地址的计算方法
74LS138地址译码器译码输出端/Y0~/Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,/Y0:280H~287H,/Y1:288H~28FH等。
实验要求参考实验指导书上实验一 I/O地址译码
题目2:8255的综合编程
(1)实验电路如图20,8255C口接逻辑电平开关K0~K7,A口接LED显示
电路L0~L7。 编程从8255C口输入数据,再从A口输出。 实验要求参考实验指导书上实验三 可编程并行接口8255
(2)通过并行接口8255实现十字路口交通灯的模拟控制,如图29,L7、L6、L5作为
南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通灯变化规律亮灭。 十字路口交通灯的变化规律要求:
实验要求参考实验指导书上实验七 交通灯控制实验
南北路口的绿灯、东西路口的红灯同时亮一定时间。
南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。 南北路口的红灯、东西路口的绿灯同时亮一定时间。
南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。 转(1)重复。
请将交通灯的点亮时间扩大6倍. 附加功能:
1)PC3(PA3)键作为右侧那组信号等的优先控制信号,如果PC3(PA3)键为高,右侧信号灯立即转换成绿灯亮(PC0=1),左侧信号灯红灯亮(PC7=1),其它信号灯为0
2)PC4(PA4)键作为左侧那组信号等的优先控制信号,如果PC4(PA4)键为高,左侧信号灯立即转换成绿灯亮(PC5=1),右侧信号灯红灯亮(PC2=1),其它信号灯为0
3)PC3(PA3)=0,PC4(PA4)=0,依照正常信号灯控制方式。
2.1 实验原理
通过代码实现8255的PA口作为输入端,将按键与PA口相连,通过PA口来检测按键各个状态;PC口与LED灯相连,将从PA读取的状态利用PC输出,从而控制左右红绿灯的亮灭。
而设置PA为输入,PC为输出,首先要做的是:设置控制字寄存器;然后通过方式选择控制字,来读A口写C口。
图(1)程序流程图
2.2 实验代码
data segment
io8255a equ 28ah io8255b equ 28bh
portc1 db 24h,44h,04h,44h,04h,44h,04h ;六个灯可能 db 81h,82h,80h,82h,80h,82h,80h ;的状态数据 db 0ffh ;结束标志 data ends code segment
assume cs:code,ds:data start:
mov ax,data mov ds,ax
mov dx,io8255b mov al,90h
out dx,al ;设置8255为C口输出 mov dx,io8255a re_on: mov bx,0 on: mov dx,288H
IN AL,DX ;把从A端口读到的放到AL中去 test al,8h jnz case1 test al,10h jnz case2
;如果开关都没有打开,执行下面循环灯亮 mov dx,io8255a mov al,portc1[bx] cmp al,0ffh jz re_on
out dx,al ;点亮相应的灯 inc bx
mov cx,200 ;参数赋初值 test al,21h ;是否有绿灯亮 jz de1 ;没有,短延时 mov cx,2000 ;有,长延时
de1: mov di,54000 ;di赋初值9000 de0: dec di ;减1计数 jnz de0 ;di不为0 loop de1 push dx mov ah,06h mov dl,0ffh int 21h
pop dx
jz on ;没有,转到on
exit: mov ah,4ch ;返回 int 21h
case1: mov dx,io8255a ;选择端口C的写入 mov al,81h
out dx,al ;点亮相应的灯 jmp on
case2: mov dx,io8255a ;选择端口C的写入 mov al,24h
out dx,al ;点亮相应的灯 jmp on
code ends
end start
2.3 实验结果
当按键开关K3,K4未打上, LED灯按正常的红绿灯顺序点亮; 当打上K3时,左侧红灯、右侧绿灯点亮,打下K3,LED回到原先的状态,按正常的红绿灯顺序点亮;
当打上K4时,左侧绿灯、右侧红灯点亮,打下K4,LED回到原先的状态,并按正常的红绿灯顺序点亮。
2.4 结果分析
K3 K4打上的时候,红绿灯不能马上跳转,这是因为在红绿灯的延时中,没有一直判断K3 K4的状态,所以只有在执行完一个延时循环之后才会判断按键状态进而跳转对应的交通灯。这对实验功能的实现影响并不大,总体功能都能够实现。如果希望能够立即跳转,可以在延时循环中加上判断按键状态,这样就能够实现极快的跳转。
三、实验感悟
本次实验借助开发箱,模拟了8255的编程。通过一个红绿灯的模拟实现,让我了解了I/O端口地址和输入输出端的设置。对于理论课学到的知识有了更深入的掌握。在这次实验过程中,不仅仅是熟悉了8255,也运用到了前几章学习的汇编指令,如循环,条件跳转等。
总的来说,这次实验收获很多,同时,这也是最后一次微机实验。回顾三次的微机实验,我从最开始接触汇编,到现在能较为熟练地使用汇编编写代码,这都离不开老师的孜孜教诲,感谢老师一直以来的耐心解惑!谢谢老师!