收藏 分享(赏)

【精品】微机原理与接口技术课程设计实验报告4.doc

上传人:天天快乐 文档编号:1233845 上传时间:2018-06-19 格式:DOC 页数:3 大小:35.86KB
下载 相关 举报
【精品】微机原理与接口技术课程设计实验报告4.doc_第1页
第1页 / 共3页
【精品】微机原理与接口技术课程设计实验报告4.doc_第2页
第2页 / 共3页
【精品】微机原理与接口技术课程设计实验报告4.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、8255 并行接口应用实验报告 】【实验目的: 1掌握 8255 的工作方式和应用编程。 2掌握 8255 的典型应用电路接法。 【实验设备及器件:】PC 机一台,TDPIT 实验仪器一套。【实验内容及步骤:】1基本 输入输出实验。 编写程序,使 8255 的 A 口为输出,B 口为输入,完成拨动开关到数据灯的数据 传输。要求只要开关 拨动,数据灯的显示就改变。2流水线指示灯的显示实验。编写程序,使 8255 的 A 口和 B 口均 为输出,实现 16 位数据灯的相对循环显示。 3键盘及显示实验。按照实验线路编写实验程序,使按下不同的按键后数码管显示相应的数字。【实验原理图及程序流程图】1、基

2、本输入/输 出实验:本实验使 8255 端口 A 工作在方式 0 并作为输入口,端口 B 工作在方式 0 并作为输出口。用一 组开关信号接入端口 A,端口 B 输出线接至一组数据灯上,然后通过对 8255 芯片编程来实现输入/输出功能。8255 基本输入/输出实验参考接线图如图所示。流程 图: 8255 B 口方式 0 输出,A 口方式 0 输入 AL8255 A 口 8255 B 口AL N 有按键? Y 结束程序代码及注释:CS0 EQU 3000H 片选 CS0 对应的端口始地址MY8255_A EQU CS000H 8255 的 A 口地址MY8255_B EQU CS001H 825

3、5 的 B 口地址MY8255_C EQU CS002H 8255 的 C 口地址MY8255_MODE EQU CS003H 8255 的控制寄存器地址STACK1 SEGMENT STACKDW 256 DUPSTACK1 ENDSCODE SEGMENTASSUME CS:CODESTART: MOV DXMY8255_MODE 初始化 8255 工作方式MOV AL82H 工作方式 0,A 口输出, B 口输入OUT DXALLOOP1: MOV DXMY8255_B 读 B 口IN ALDXMOV DXMY8255_A 写 A 口OUT DXALMOV AH1 判断是否有按键按下IN

4、T 16HJZ LOOP1 无按键则跳回继续循环,有则退出QUIT: MOV AX4C00H 结束程序退出INT 21HCODE ENDSEND START实验步骤1.设计实验线路图,将 PCI 总线扩展卡上 总线与仿真 ISA 总线进行连接。2.编写程序。3.打开实验箱电源,运行程序,拨动开关组,观察数据灯的显示。实验现 象: 拨动开关,每个开关对应的数据灯随着开关的开与关而亮灭。2、流水 线指示灯显示实验: 首先分别将 A 口和 B 口写入 7FH 和 FEH,然后分别将该数右移和左移一位,在送到端口上, 这样循环下去,从而实现流水灯的显示。 8255 流水灯显示实验参考接线图如图所示。流

5、程图: 8255 B 口方式 0 输出 AL7FH 循环左移 AL 8255 B 口AL 延时 N 有按键? Y 结束程序代码及注释:CS0 EQU 3000H 片选 CS0 对应的端口始地址MY8255_A EQU CS000H 8255 的 A 口地址MY8255_B EQU CS001H 8255 的 B 口地址MY8255_C EQU CS002H 8255 的 C 口地址MY8255_MODE EQU CS003H 8255 的控制寄存器地址STACK1 SEGMENT STACKDW 256 DUPSTACK1 ENDSDATA SEGMENTLA DB 定义数据变量LB DB D

6、ATA ENDSCODE SEGMENTASSUME CS:CODEDS:DATASTART: MOV AXDATAMOV DSAXMOV DXMY8255_MODE 定义 8255 工作方式MOV AL80H 工作方式 0,A 口和 B 口为输出OUT DXALMOV DXMY8255_A 写 A 口发出的起始数据MOV AL80HOUT DXALMOV LAALMOV DXMY8255_B 写 B 口发出的起始数据MOV AL01HOUT DXALMOV LBALLOOP1: CALL DALLYMOV ALLA 将 A 口起始数据右移再写入 A 口ROR AL1MOV LAALMOV D

7、XMY8255_AOUT DXALMOV ALLB 将 B 口起始数据左移再写入 B 口ROL AL1MOV LBALMOV DXMY8255_BOUT DXALMOV AH1 判断是否有按键按下INT 16HJZ LOOP1 无按键则跳回继续循环,有则退出QUIT: MOV AX4C00H 结束程序退出INT 21HDALLY PROC NEAR 软件延时子程序PUSH CXPUSH AXMOV CX0FFFHD1: MOV AX0FFFFHD2: DEC AXJNZ D2LOOP D1POP AXPOP CXRETDALLY ENDPCODE ENDSEND START实验步骤1.设计实验

8、线路图,将 PCI 总线扩展卡上总线与仿真 ISA 总线进行连接。2.编写程序。3.打开实验箱电源,运行程序,观察数据灯的 显示。实验现象: 数据灯从右向左依次亮成流线型,并始终保持在同一时间只有一个灯亮着。3 键盘及显示实验 实验要求将 8255 单元与 LED-KEYBOARD 单元连接? 嘈闯绦颍 杓 淌淙耄? 将扫描结果送数码块显示。8255 键盘及显示实验参考接线图如图 3-6 所示。 图 3-6 8255 键盘及显示实验参考接线图程序代码及注释: CS0 EQU 3000H 片选 CS0 对应的端口始地址 MY8255_A EQU CS000H 8255 的 A 口地址 MY825

9、5_B EQU CS001H 8255 的 B 口地址 MY8255_C EQU CS002H 8255 的 C 口地址 MY8255_MODE EQU CS003H 8255 的控制寄存器地址 STACK1 SEGMENT STACK DW 256 DUP STACK1 ENDS DATA SEGMENT DTABLE DB 3FH06H5BH4FH66H6DH7DH07H7FH6FH77H7CH39H5EH79H71H DATA ENDS 键值表,0F 对应的 7 段数码管的段位值 CODE SEGMENT ASSUME CS:CODEDS:DATA START: MOV AXDATA M

10、OV DSAX MOV SI3000H 建立缓冲区,存放要显示的键值 MOV AL00H 先初始化键值为 0 MOV SIAL MOV SI1AL MOV SI2AL MOV SI3AL MOV SI4AL MOV SI5AL MOV DI3005H MOV DXMY8255_MODE 初始化 8255 工作方式 MOV AL81H 方式 0,A 口、B 口输出,C 口低 4 位输入 OUT DXAL BEGIN: CALL DIS 显示刷新 CALL CLEAR 清屏 CALL CCSCAN 扫描按 键 JNZ GETKEY1 有键按下则跳置 GETKEY1 MOV AH1 判断 PC 键盘

11、是否有按 键按下 INT 16H JZ BEGIN 无按键则跳回继续循环,有则退出 QUIT: MOV AX4C00H 返回到 DOS INT 21H GETKEY1:CALL DIS 显示刷新 CALL DALLY CALL DALLY CALL CLEAR 清屏 CALL CCSCAN 再次扫描按键 JNZ GETKEY2 有 键按下则跳置 GETKEY2 JMP BEGIN 否则跳回开始继续循环GETKEY2:MOV CH0FEHMOV CL00H 设置当前 检测的是第几列COLUM: MOV ALCH 选取一列,将 X1X4 中一个置 0MOV DXMY8255_AOUT DXALMO

12、V DXMY8255_C 读 Y1Y4,用于判断是哪一行按键闭合IN ALDXL1: TEST AL01H 是否为第 1 行JNZ L2 不是则继续判断 MOV AL00H 设置第 1 行第 1 列的对应的键值JMP KCODEL2: TEST AL02H 是否为第 2 行JNZ L3 不是则继续判断MOV AL04H 设置第 2 行第 1 列的对应的键值JMP KCODEL3: TEST AL04H 是否为第 3 行JNZ L4 不是则继续判断MOV AL08H 设置第 3 行第 1 列的对应的键值JMP KCODEL4: TEST AL08H 是否为第 4 行JNZ NEXT 不是则继续判

13、断MOV AL0CH 设置第 4 行第 1 列的对应的键值KCODE: ADD ALCL 将第 1 列的值加上当前列数,确定按键值CALL PUTBUF 保存按键值PUSH AXKON: CALL DIS 显示刷新CALL CLEAR 清屏CALL CCSCAN 扫描按键,判断按键是否弹起JNZ KON 未弹起则继续循环等待弹起POP AXNEXT: INC CL 当前检测的列数递增MOV ALCHTEST AL08H 检测是否扫描到第 4 列JZ KERR 是则跳回到开始处ROL AL1 没检测到第 4 列则准备检测下一列MOV CHALJMP COLUMKERR: JMP BEGINCCS

14、CAN PROC NEAR 扫描是否有按键闭合子程序MOV AL00HMOV DXMY8255_A 将 4 列全选通,X1X4 置 0OUT DXALMOV DXMY8255_CIN ALDX 读 Y1Y4NOT ALAND AL0FH 取出 Y1Y4 的反值RETCCSCAN ENDPCLEAR PROC NEAR 清除数码管显示子程序MOV DXMY8255_B 段位置 0 即可清除数码管显示MOV AL00HOUT DXALRETCLEAR ENDPDIS PROC NEAR 显示键值子程序PUSH AX 以缓冲区存放的键值为键值表偏移找到键值并显示MOV SI3000HMOV DL0D

15、FHMOV ALDLAGAIN: PUSH DXMOV DXMY8255_AOUT DXAL 设置 X1X4,选通一个数码管MOV ALSI 取出缓冲区中存放键值MOV BXOFFSET DTABLEAND AX00FFHADD BXAXMOV ALBX 将键值作为偏移和键值基地址相加得到相应的键值MOV DXMY8255_BOUT DXAL 写入数码管 ADpCALL DALLYINC SI 取下一个键值POP DXMOV ALDLTEST AL01H 判断是否 显示完?JZ OUT1 显示完,返回ROR AL1MOV DLALJMP AGAIN 未显示完,跳回继续OUT1: POP AXR

16、ETDIS ENDPPUTBUF PROC NEAR 保存键值子程序MOV SIDIMOV SIALDEC DICMP DI2FFFHJNZ GOBACKMOV DI3005H GOBACK: RET PUTBUF ENDP DALLY PROC NEAR 软件延时子程序 PUSH CX MOV CX00FFH D1: MOV AX00FFH D2: DEC AX JNZ D2 LOOP D1 POP CX RET DALLY ENDP CODE ENDS END START实验步骤1设计实验线路图,并将 PCI 总线扩展卡上的 ADD-ON 总 访真 ISA 总线进行连接,完成线路连接。 2编写实验程序, 检查无误后汇编,连接。3打开电源,运行程序。4按 动键盘, 观察数码块是否显示相应的数字。实验现象: 键盘上共有 16 个键,按从左至右在从上至下的顺序依次按这 16 个键,数码块 8 个从左到右依次分别显示 09,AF,且按完 8 个键一个循环。实验总结及心得:1、通过本次实验,进一步了解了可编程并行接口 8255 的基本知识点,了解了该芯片的应用。2、通过编程实现,熟悉了 8255 方式控制字,了解了三种工作方式和基本工作原理。3、本次实验?埃 约喝险娴刈隽嗽埃 笛楣 讨校 险嫠伎迹 剿鳎 笛楹螅樵淖柿希 崃蹲芙帷艿睦此担 就瓿闪耸笛橐 蠛腿挝瘛?

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 调研文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报