文档详情

8255 方式1输出实验 实验报告_孔令宇 10284032.doc

发布:2017-06-17约1.97千字共6页下载文档
文本预览下载声明
8255 方式1输出实验 学生:孔令宇 班级:计科10级1006班 任课教师:吴为民 实验目的 掌握查询方式实现8255选通型输入(方式1)的编程控制方法。 实验内容 将8255端口A的PA7-PA0与8个发光二极管L7-L0连接,PB2-PB0与拨动开关的K2-K0连接,8255的CS与地质译码区的0-F端子连接,PC2(/ACK)与单脉冲端连接。先预知开关K2-K0为一组输入状态,然后按下单脉冲按键产生一个负脉冲,输入到PC2。用发光二极管LEDi亮和LED 7段数码管最右端一位上显示K2-K0的状态 实验原理图 实验流程 实验代码 .model small .386 data segment io8255_a equ 200h ;8255基址值 io8255_b equ 201h io8255_c equ 202h io8255kz equ 203h tab db 01h,02h,04h,08h,10h,20h,40h,80h led_code db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h, 7fh,67h,77h,7ch,39h,5eh,79h,71h ;七段数码管段码 led_cs equ 210h ;led七段数码管片选 data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov dx,io8255kz mov al,0aeh ;设置工作方式为方式1,A口输出、B口输入 out dx, al mov al,04h ;设置(pc2)/ACKA=0 out dx, al l1: mov dx, io8255_c ss1: in al, dx test al ;判断/IBFB(PC1)=1? jz ss1 mov dx,io8255_b in al,dx ;读入dx的内容 and al, 07h push ax ;保存ax中的内容,ax进栈 mov bx,offset tab ;获取tab的地址 xlat tab ;查表 mov dx,io8255_a out dx,al pop ax ;ax出栈,还原ax内容 call display jmp l1 display proc near mov si,offset led_code ;获取数码管段码初地址 mov ah,0 add si,ax ;键码加上段码初地址得到对应的段码地址 mov al,[si] ;获取段码 mov dx,led_cs out dx,al ;将段码输出至数码管片选 mov al,01h ;选择显示位码 inc dx out dx,al ret display endp code ends end start 实验现象 在全速运行代码后,波动开关K2-K0初始状态均为低电平,在产生一个负脉冲后,二极管PA0亮,7断数码管最右端一位显示数字“0”。将拨动K2-K0,置为011,再次产生一个负脉冲,二极管PA3亮,7断数码管最右端一位显示数字“3”。 七、实验体会 通过本次实验,我自学了8255的1方式的设置和运用。在完成原有实验要求的基础上增加了在7段数码管上显示K2-K0状态所对应数字的功能。本次实验要求使用8255 A口方式1输入、B口方式0输出,所以需要把初始化命令设置为0aeh。在本次实验中,如何判断一个拨动开关K2-K0的状态是本次实验的关键点。通过读取C口的状态以及判断IBFA(PC1)是否等于1来完成在发光二级管和7段数码管显示的控制。 7段LED显示模块 210h 200h
显示全部
相似文档