实验十三可编程并行接口8255A芯片实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验十三可编程并行接口8255芯片实验一、实验目的1、了解8255芯片的结构和功能。2、掌握8255初始化程序的设计方法。3、学会8255和CPU信号的连接方法。二、电路逻辑图三、实验内容第一题:由8255A的A接口输出数据,驱动4个LED,使其顺序显示0--F的二进制状态,每个状态保持1秒钟。源程序:CODESEGMENTASSUMECS:CODESTART:MOVDX,283H;向8255送控制字MOVAL,80HOUTDX,ALMOVCX,16;设置计数次数MOVAL,00H;设置初始显示值L1:MOVDX,280H;A口输出OUTDX,ALCALLDELAY;延时1秒INCAL;显示状态加1LOOPL1;16次循环MOVAH,4CHINT21HDELAYPROCNEAR;1秒延时子程序PUSHCXMOVBX,299HFOR1:MOVCX,0FFFFHFOR2:LOOPFOR2DECBXJNZFOR1POPCXRETDELAYENDPCODEENDSENDSTART第二题:用8255方式1将4位开关量设置的二进制数由B口选通输入CPU,3秒钟后由A口选通输出送LED显示。要求通过对状态字IBFB和OBFA的测试来控制程序运行。STBB和ACKA由消抖电路产生。源程序:CODESEGMENTASSUMECS:CODESTART:MOVDX,283H;向8255送控制字MOVAL,0A6HOUTDX,ALMOVDX,282H;读C口状态字,检测IBFL1:INAL,DXANDAL,02H;和02H相与JZL1;为高时数据已锁存,向下继续MOVDX,281H;读B口数据AGAIN:INAL,DXCALLDELAY;延时3秒MOVDX,280H;通过A口输出OUTDX,ALMOVDX,282H;读C口状态L2:INAL,DXANDAL,80H;检测OBF,为高说明ACK信号已有,可返回主程序JZL2MOVAH,4CHINT21HDELAYPROCNEAR;延时3秒程序PUSHCXMOVBX,399HFOR1:MOVCX,0FFFFHFOR2:LOOPFOR2DECBXJNZFOR1POPCXRETDELAYENDPCODEENDSENDSTART选做题一:用8255A芯片设计一个输出接口,从键盘输入0~F的任意一个字符后,LED显示相应的值。源程序:CODESEGMENTASSUMECS:CODESTART:MOVCX,16;设置循环次数L1:MOVAH,01H;调用1号功能INT21HCMPAL,39H;输入的数和39H比较JBENEXT;不大于则跳转SUBAL,07H;大于要减去7HNEXT:SUBAL,30H;减去30H得到对应的数MOVBL,AL;存到BL中MOVDX,283H;向8255送控制字MOVAL,80HOUTDX,ALMOVAL,BLMOVDX,280H;A口输出OUTDX,ALCALLDELAY;延时1秒LOOPL1;16次循环MOVAH,4CHINT21HDELAYPROCNEAR;1秒延时子程序PUSHCXMOVBX,299HFOR1:MOVCX,0FFFFHFOR2:LOOPFOR2DECBXJNZFOR1POPCXRETDELAYENDPCODEENDSENDSTART选做题二:用8255A芯片设计一个输入接口,将四位开关量的值显示在屏幕上。源程序;DATASEGMENTTABLEDB'0','1','2','3','4','5','6','7'DB'8','9','A','B','C','D','E','F'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,5;设置循环次数NEXT:MOVDX,283H;向8255送控制字MOVAL,0A6HOUTDX,ALMOVDX,282H;读C口状态字,检测IBFL1:INAL,DXANDAL,02H;和02H相与JZL1;为高时数据已锁存,向下继续MOVDX,281H;读B口数据INAL,DXCALLDELAY;延时3秒MOVAH,0;屏蔽高四位MOVSI,AX;送入SI中MOVDL,[SI];把对应数值存入DLMOVAH,02H;调用2号功能INT21HLOOPNEXTMOVAH,4CHINT21HDELAYPROCNEAR;延时3秒程序PUSHCXMOVBX,199HFOR1:MOVCX,0FFFFHFOR2:LOOPFOR2DECBXJNZFOR1POPCXRETDELAYENDPCODEENDSENDSTART选做题三:用8255A芯片设计一个输入接口,当开关来回扳动一次后在屏幕上显示“1”,下一次来回扳动后在屏幕上显示“2”,……。源程序:CODESEGMENTASSUMECS:CODESTART:MOVCX,5;设置循环次数MOVBL,31HNEXT:MOVDX,283H;向8255送控制字MOVAL,0A6HOUTDX,ALMOVDX,282H;读C口状态字,检测IBFL1:INAL,DXANDAL,02H;和02H相与JZL1;为高时数据已锁存,向下继续MOVDX,281H;读B口数据INAL,DXCALLDELAY;延时3秒MOVDL,BL;把对应数值存入DLMOVAH,02H;调用2号功能INT21HINCBL;BL加1LOOPNEXTMOVAH,4CHINT21HDELAYPROCNEAR;延时3秒程序PUSHCXPUSHBXMOVBX,199HFOR1:MOVCX,0FFFFHFOR2:LOOPFOR2DECBXJNZFOR1POPBXPOPCXRETDELAYENDPCODEENDSENDSTART四、实验总结本次实验我们主要学习了8255A芯片的相关知识,,首先要弄清楚它的内部构造,各个端口的作用,以及8255A的几种方式选择控制字的功能,接下来是实验电路的连接。在编写程序时积极动脑,根据题目要求,适当利用前面所学内容,如调用DOS功能等,编写起来还是挺简单的,关键是出现问题要细心耐心调试,有时候一个小小的分号就能导致整个程序不能成功运行。

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功