文档介绍:深圳大学实验报告课程名称:实验项目名称:学院:专业:指导教师:微机原理及应用实验可编程并行接口8255实验应用物理报告人:实验时间:实验报告提交时间:学号:教务处制-1-班级:一、实验名称:可编程并行接口8255实验二、实验目的了解可编程并行接口芯片8255的内部结构、工作方式、初始化编程及应用。四、实验电路及连线(硬件实验)(1)实验连线该模块的WR、RD分别连到MCU主模块的WR、RD。该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到MCU主模块的数据(AD0~AD7)、地址线(A0~A7)。8255模块选通线CS连到MCU主模块的地址A15。8255的PA0~PA7连到发光二极管的L0~L7。三、实验内容流水灯实验:利用8255的A口循环点亮发光二极管。I/O输入输出实验:利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示。图1实验原理图-2-图2流水灯实验(2)运行程序,观察发光二极管。2、I/O输入输出实验:(1)实验连线该模块的WR、RD分别连到MCU主模块的WR、RD。该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到MCU主模块的数据(AD0~AD7)、地址线(A0~A7)。8255模块选通线CE连到MCU主模块的地址A15。8255的PA0~PA7接开关K0~K7,8255的PB0~PB7接发光二极管L0~L7。图3I/O输入输出实验(2)运行程序,拨动开关,观察发光二极管。-3-开始设置控制字对A口赋值,保存在将AL左移,直至循环次数为0将AL右移,直至循环次数为0调用延时程序中断返回RET驱动LED五、程序说明(预****功能:①利用8255的A口循环点亮LED。②利用8255的A口开关控制B口的发光二极管,只要开关拨动,发光二极管的显示就发生相应改变。程序框图:AL算法说明:①A口接受到的数据进行左移和右移,并调用延时程序,循环点亮发光二极管。②使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。用一组开关信号接入端口A,端口B输出线接至一组数据灯上。六、源程序清单(预****1)流水灯实验MY8255_AEQU00H;8255的A口地址MY8255_MODEEQU03H;8255的控制寄存器地址DATASEGMENTLADB1DUP(?)LBDB1DUP(?)AXXDW1DUP(?)CXXDW1DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;定义数据段;定义代码段-4-MOVDX,MY8255_MODE;定义8255工作方式MOVAL,80H;工作方式0,A口为输出OUTDX,ALBEGIN:MOVDX,MY8255_A;写A口发出的起始数据MOVAL,01HOUTDX,ALMOVLA,ALMOVCX,7LOOP1:CALLDELAYMOVAL,LA;将A口起始数据左移再写入A口ROLAL,1MOVLA,ALMOVDX,MY8255_AOUTDX,ALLOOPLOOP1MOVCX,7LOOP2:CALLDELAYMOVAL,LA;将A口起始数据右移再写入A口RORAL,1MOVLA,ALMOVDX,MY8255_AOUTDX,ALLOOPLOOP2JMPBEGIN;流水灯重新开始DELAYPROC;软件延时子程序MOVCXX,CXMOVAXX,AX;这里本应该用堆栈,我用CXX,AXX变量代替了。MOVCX,0FHD1:MOVAX,0FFFHD2:DECAXJNZD21,AXXMOVCX,CXXRETDELAYENDPCODEENDSENDSTARTRET-5-