《并口控制器应用实验(共8页).doc》由会员分享,可在线阅读,更多相关《并口控制器应用实验(共8页).doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上8255并口控制器应用实验一、实验目的1. 掌握 8255 的工作方式及应用编程。2. 掌握 8255 典型应用电路的接法。二、实验内容1. 基本输入输出实验。编写程序,使 8255 的 A 口为输出, B 口为输入,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就改变。 2流水灯显示实验。编写程序,使 8255 的 A 口和 B 口均为输出,数据灯D7D0 由左向右,每次仅亮一个灯,循环显示,D15D8 与D7D0 正相反,由右向左,每次仅点亮一个灯,循环显示。四、实验原理与步骤实验步骤(1)基本输入输出实验实验说明:本实验使 8255的端口A作为输
2、出口工作在方式0,端口 B 作为输入口工作在方式0。用一组开关信号接入端口B,端口A 输出线接至一组数据灯上,然后通过对8255 芯片编程来实现输入输出功能。图3-2 8255基本输入输出实验参考接线图实验步骤如下:实验接线图如图3-2所示,按图连接实验线路图。运行Tdpit 集成操作软件,根据实验内容,调用程序代码(T8255-1.ASM),填写程序代码中的空缺处,编译、链接。运行程序,改变拨动开关,同时观察LED 显示,验证程序功能。实验代码如下:IOY0 EQU 9860H ;片选IOY0对应的端口始地址MY8255_A EQU 9860H ;8255的A口地址MY8255_B EQU
3、9861H ;8255的B口地址MY8255_C EQU 9862H ;8255的C口地址MY8255_MODE EQU 9863H ;8255的控制寄存器地址STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSCODE SEGMENT ASSUME CS:CODESTART: MOV DX,MY8255_MODE ;初始化8255工作方式 MOV AL, 82H ;工作方式0,A口输出,B口输入 OUT DX,ALLOOP1: MOV DX,MY8255_B ;读B口 IN AL,DX MOV DX,MY8255_A ;写A口 OUT DX,AL MOV
4、 AH,1 ;判断是否有按键按下 INT 16H JZ LOOP1 ;无按键则跳回继续循环,有则退出QUIT: MOV AX,4C00H ;结束程序退出 INT 21HCODE ENDS END START(代码结束)(2)流水灯显示实验实验说明:使8255 的A 口和B 口均为输出,数据灯D7D0 由左向右,每次仅亮一个灯,循环显示,D15D8 与D7D0 正相反,由右向左,每次仅点亮一个灯,循环显示。参考实验程序流程如图3-3所示。 图3-3流水灯显示参考程序流程图实验步骤如下:实验接线图如图3-4所示,按图连接实验线路图。运行Tdpit 集成操作软件,根据实验内容,调用程序代码(T825
5、5-2.ASM),填写程序代码中的空缺处,编译、链接。运行程序,观察LED 灯的显示,验证程序功能。自己设计流水灯的流动模式,编写程序并实现。图3-4 8255流水灯显示参考接线图实验代码如下:IOY0 EQU 9860H ;片选IOY0对应的端口始地址MY8255_A EQU IOY0+00H ;8255的A口地址MY8255_B EQU IOY0+01H ;8255的B口地址MY8255_C EQU IOY0+02H ;8255的C口地址MY8255_MODE EQU IOY0+03H ;8255的控制寄存器地址STACK1 SEGMENT STACK DW 256 DUP(?)STACK
6、1 ENDSDATA SEGMENT LA DB ? ;定义数据变量LB DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,MY8255_MODE ;定义8255工作方式 MOV AL, 80H ;工作方式0,A口和B口为输出 OUT DX,AL MOV DX,MY8255_A ;写A口发出的起始数据 MOV AL, 80H OUT DX,AL MOV LA,AL MOV DX,MY8255_B ;写B口发出的起始数据 MOV AL, 01H OUT DX,AL MOV LB,
7、ALLOOP1: CALL DALLY MOV AL,LA ;将A口起始数据右移再写入A口 ROR AL,1 MOV LA,AL MOV DX,MY8255_A OUT DX,AL MOV AL,LB ;将B口起始数据左移再写入B口 ROL AL,1 MOV LB,AL MOV DX,MY8255_B OUT DX,AL MOV AH,1 ;判断是否有按键按下 INT 16H JZ LOOP1 ;无按键则跳回继续循环,有则退出QUIT: MOV AX,4C00H ;结束程序退出 INT 21HDALLY PROC NEAR ;软件延时子程序 PUSH CX PUSH AX MOV CX,0FF
8、FHD1: MOV AX,0FFFFHD2: DEC AX JNZ D2 LOOP D1 POP AX POP CX RETDALLY ENDPCODE ENDS END START(代码结束)8254定时/计数器应用实验内容计数应用实验。编写程序,应用8254的计数功能,用开关模拟计数,使每当按动KKI+五次后,产生一次计数中断,并在屏幕上显示一个字符5。实验步骤计数应用实验实验说明:编写程序,将8254的计数器0设置为方式0,计数值为5,用微动开关KKl+作为CLK0时钟,OUT0连接INTR,每当KKl+按动5次后产生中断请求,在屏幕上显示字符“5”。实验步骤如下:实验接线如图4-1所示
9、,按图接线。运行Tdpit 集成操作软件,根据实验内容,调用程序代码(T8254-1.ASM),填写程序代码中的空缺处,编译、链接。运行程序,按动KK1产生单次脉冲,观察实验现象。改变计数值,验证8254的计数功能。实验代码如下:INTR_IVADD EQU 01C8H ;INTR对应的中断矢量地址INTR_OCW1 EQU 0A1H ;INTR对应PC机内部8259的OCW1地址INTR_OCW2 EQU 0A0H ;INTR对应PC机内部8259的OCW2地址INTR_IM EQU 0FBH ;INTR对应的中断屏蔽字IOY0 EQU 3000H ;片选IOY0对应的端口始地址MY8254
10、_COUNT0 EQU IOY0+00H*4 ;8254计数器0端口地址MY8254_COUNT1 EQU IOY0+01H*4 ;8254计数器1端口地址MY8254_COUNT2 EQU IOY0+02H*4 ;8254计数器2端口地址MY8254_MODE EQU IOY0+03H*4 ;8254控制寄存器端口地址 STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATA SEGMENT CS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量IM_BAK DB ?
11、 ;保存INTR原中断屏蔽字的变量STR1 DB COUNT: $ ;显示的字符串DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX CLI MOV AX,0000H ;替换INTR的中断矢量 MOV ES,AX MOV DI,INTR_IVADD MOV AX,ES:DI MOV IP_BAK,AX ;保存INTR原中断处理程序入口偏移地址 MOV AX,OFFSET MYISR MOV ES:DI,AX ;设置当前中断处理程序入口偏移地址 ADD DI,2 MOV AX,ES:DI MOV CS_
12、BAK,AX ;保存INTR原中断处理程序入口段地址 MOV AX,SEG MYISR MOV ES:DI,AX ;设置当前中断处理程序入口段地址 MOV DX,INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR屏蔽位 IN AL,DX MOV IM_BAK,AL ;保存INTR原中断屏蔽字 AND AL,INTR_IM OUT DX,AL STI MOV DX,OFFSET STR1 ;显示字符串 MOV AH,9 INT 21H MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,10H ;计数器0,方式0 OUT DX,AL MOV DX,MY8254_CO
13、UNT0 ;装入计数初值 MOV AL,4 OUT DX,ALWAIT1: MOV AH,1 ;判断是否有按键按下 INT 16H JZ WAIT1 ;无按键则跳回继续等待,有则退出QUIT: CLI MOV AX,0000H ;恢复INTR原中断矢量 MOV ES,AX MOV DI,INTR_IVADD MOV AX,IP_BAK ;恢复INTR原中断处理程序入口偏移地址 MOV ES:DI,AX ADD DI,2 MOV AX,CS_BAK ;恢复INTR原中断处理程序入口段地址 MOV ES:DI,AX MOV DX,INTR_OCW1 ;恢复INTR原中断屏蔽寄存器的屏蔽字 MOV
14、AL,IM_BAK OUT DX,AL STI MOV AX,4C00H ;返回到DOS INT 21HMYISR PROC NEAR ;中断处理程序MYISR PUSH AX MOV AL,35H MOV AH,0EH INT 10H MOV AL,20H INT 10H MOV DX,MY8254_COUNT0 ;重装计数初值 MOV AL,4 OUT DX,ALOVER: MOV DX,INTR_OCW2 ;向PC机内部8259发送中断结束命令 MOV AL,20H OUT DX,AL MOV AL,20H OUT 20H,AL POP AX IRET MYISR ENDP CODE ENDS END START(代码结束)专心-专注-专业