logo资料库

微机实验报告.docx

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
第三次微机实验报告 题目:8255 芯片的编程 8255 芯片的编程 姓 学 名 号 专 业 班 级 提 交 日 期 赖 慧 谋 201230281232 信 息 工 程 5 班 2014-6-16
一、实验目的 1、自学 TPC-ZK 通用 32 位微机接口实验系统的组成。 2、掌握实验系统中接口地址译码电路的工作原理及计算方法。 3、掌握简单 I/O 端口的读写操作。 4、掌握 8255 的工作原理及编程方法。 二、开发环境 运行于 XP 操作系统下 TPC-ZK 集成开发环境 参见附录:在 XP 操作系统下汇编程序实现直接进行 I/O 读写的使用说明 三、实验系统的介绍 实验系统相关资料请查考 TPC-ZK USB 接口学生实验指导书 四、实验题目: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) 南北路口的绿灯、东西路口的红灯同时亮一定时间。 (2) 南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。 (3) 南北路口的红灯、东西路口的绿灯同时亮一定时间。 (4) 南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。 (5) 转(1)重复。 附加功能: 1)PC3键作为右侧那组信号等的优先控制信号,如果PC3键为高,右侧信号灯立 即转换成绿灯亮(PC0=1),左侧信号灯红灯亮(PC7=1),其它信号灯为0 2)PC4键作为左侧那组信号等的优先控制信号,如果PC4键为高,左侧信号灯立 即转换成绿灯亮(PC5=1),右侧信号灯红灯亮(PC2=1),其它信号灯为0 3)PC3=0,PC4=0,依照正常信号灯控制方式。 五.程序流程图
开始 设置 8255A 口输出 C 口输出 南北路口绿灯亮,东西路口红灯亮 长延时 南北路口黄灯闪,东西路口红灯亮 南北路口红灯亮,东西路口绿灯亮 长延时 南北路口红灯亮,东西路口黄灯闪 是否有按 键按下
Y 六.源程序清单 DATAS SEGMENT io8255a io8255b io8255c io8255d light equ 288h equ 289h equ 28ah equ 28bh db 24h,44h,04h,44h,04h,44h,04h,44h,04h;六个灯可能 db 81h,82h,80h,82h,80h,82h,80h,82h,80h ;的状态数据 db 0ffh;结束标志
;此处输入数据段代码 DATAS ENDS STACKS SEGMENT DB 100 DUP(?) ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX re_on:mov bx,0 on: ;设置 8255 为 C 口输入 ;将 dx 设置到 C 口 ;检查输入 ; ;如果相等就跳 ; ;如果相等就跳 mov dx,io8255d mov al,99h out dx,al mov dx,io8255c in al,dx mov dl,al cmp dl,10h jz set1 cmp dl,8h jz set2 mov dx,io8255d mov al,90h out dx,al mov dx,io8255c mov al,light[bx];取得状态值 cmp al,0ffh jz re_on out dx,al inc bx ;设置 8255 为 C 口输出 ;将 dx 设置到 C 口 ;判断是否到状态表的最后一个值 ;是的时候跳 ;点亮相应的灯 ;使 bx 指向状态表的下一个状态值(jz 是不相等就跳,jnz 是相等 就跳(如果按老师的代码的话)) ;参数赋初值(短延时) ;是否有绿灯亮 ;没有,短延时 ;有,长延时 ;di 赋初值 9000 ;减一计数 ;di 不为零 mov cx,200 test al,21h jz dea mov cx,2000 dea:mov di,9000 deb:dec di jnz deb loop dea
;正常时候 跳过下面代码 jmp q set1: mov bx,0 jmp if set2: mov bx,9 if: mov dx,io8255d q: ;设置 8255 为 C 口输出 ;将 dx 设置到 C 口 mov al,90h out dx,al mov dx,io8255c mov al,light[bx];取得状态值 out dx,al push dx mov ah,06h mov dl,0ffh int 21h pop dx jz on ;没有,转到 on ;此处输入代码段代码 exit: MOV AH,4CH INT 21H CODES ENDS END START ;返回
分享到:
收藏