实验六---8255并行输入输出

合集下载

Microsoft Word - 实验6_8255doc-实验六 8255 并行输入输出

Microsoft Word - 实验6_8255doc-实验六 8255 并行输入输出

实验六 8255并行输入输出一.实验目的(1)掌握8255方式0的工作原理及使用方法,利用直接输入输出进行控制显示。

(2) 掌握8段数码管的动态刷新显示控制;(3) 分析掌握8255工作方式1时的使用及编程,进一步掌握中断处理程序的编写;(4) 了解掌握8255用于矩阵式键盘扫描方法及软件实现。

二.实验环境1.硬件环境微型计算机(Intel x86系列CPU)一台,清华科教仪器厂TPC-2003A微机接口实验装置一台(外接4*6小键盘/6个数码管);数字记忆示波器一台.2.软件环境(1)Windows XP操作系统,编辑、汇编、链接和调试程序;(2)PC2003A集成开发环境软件一套及实验装置电子版资料三.基本实验1.基本实验内容和要求(1) 8255方式0:简单输入输出:实验电路如图20,8255C口接逻辑电平开关K0~K7,编程A口接LED显示电路L0~L7;C口输入数据,再从A口输出.;开 始设置8255C口输入A口输出从C口输入数据将此数据自A口输出N有键按下吗?Y结 束图6.1 8255简单输入输出图 6.2 8255简单输入输出流程图(2) 编程将A口 L0-L7控制成流水灯,流水间隔时间由软件产生; 流水方向由K0键在线控制,随时可切换;流水间隔时间也可由K4-K7键编码控制,如0000对应停止,0001对应1秒,1111对应15秒,大键盘输入ESC键退出。

(3) 8段共阴极数码管静态显示:按图6.3连接好电路,将8255的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中,左侧LED显示),S0、dp接地(关闭)。

编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。

(S0接+5右侧LED显示)。

图6.3 单管静态显示图6.4 双管动态显示(4) 8段数码管动态显示:按图6.4连接好电路,七段数码管段码连接不变,位码驱动输入端S1,S0接8255 C口的PC1,PC0(轮流输出高电平选中左、右LED,动态刷新速率超过30Hz,则又视觉停留效果使人感觉两个LED在同时显示)。

06实验六:8255并行口实验

06实验六:8255并行口实验

INC
JNZ
AL
INOUT ;若无,则继续自A口输入,B口输出

化。(当逻辑电平开关某位置于 L 时,对应的发光二极管点
亮;置于 H 时,对应的发光二极管熄灭。) 4、记录实验现象和相关数据。
设置8255为A口输入,
B口输出(90H)。
MOV
AH,0BH ;判断是否有按键
INT
INC JNZ
21H
AL INOUT ;若无,继续A口输入,B口输出
IOPORT EQU IO8255A EQU
START: MOV MOV OUT INOUT: MOV
DX,IO8255CON AL,90H DX,AL DX,IO8255A
;设置8255为A口输入,B口输出
;从A口输入一数据
IN
MOV OUT MOV INT
AL,DX
DX,IO8255B DX,AL AH,0BH 21H ;判断是否有按键 ;从B口输出刚才自A口所输入的数据
制用。本实验主要用到A 口输入和B 口输出,实验中,8255A 工作于基本
输入输出方式(方式 0)。
实验步骤:
1、实验接线: CS0 — 8255CS,PA0~PA7 — 平推开关的输出 K1~K8, PB0~PB7 — 发光二极管的 输入 LED1~LED8。 2、编写相应程序完成软件部分。 3、调试通过后,运行程序时拨动开关,观察发光二极管的变
实验六:8255并行口实验
实验目的要求:
1、了解并行接口芯片8255A的基本特点和使用。
2、掌握控制8255A并行口的基本编程方法。
实验内容:
8255A的A口作为输入口,与逻辑电平开关相连。8255A 的B口作为 输出口,与发光二极管相连。编写程序,使得逻辑电平开关的变化在发 光二极管上显示出来。 8255A 是比较常用的一种并行接口芯片,有三组 8 位的输入输出端 口,通常将 A 端口作为输入用,B 端口作为输出用,C 端口作为辅助控

实验二 8255并行输入输出实验

实验二 8255并行输入输出实验

实验二8255并行输入输出实验一、实验目的与要求了解8255A的内部结构、工作原理;掌握对8255A的初始化编程方法。

二、实验设备STAR系列实验仪一套、PC机一台三、实验内容1、选通输入实验:B口有8个发光二极管PBi(i=0~7),要求K3K2K1=000时LED1亮~K3K2K1=111时LED8亮,预置开关K为一组状态后按下BUTTON产生一负脉冲信号输入到PC4上,用LEDi(i=1~8)亮来显示K的状态。

2、选通输出实验:A口有8个发光二极管PAi(i=0~7),显示LED0亮,然后每按一次BUTTON使LED循环下移一位亮。

四、实验原理图1、2、五、实验步骤1区:单脉冲(2)运行程序(3)预置开关K为一组状态后上下拨动单脉冲开关,拨动两次,产生一个“”,观察B 口灯是否对应开关的状态相应亮,拨动开关K设置下一组开关状态,上下拨动单脉冲开关,拨动两次,产生一个“”,继续检查B口灯是否对应开关的状态相应亮。

2区:单脉冲(3)此时发现LED0亮,每上下拨动单脉冲开关,拨动两次,产生一个“”,观察LED是否循环下移一位亮。

六、流程图1、2、七、程序代码1、DATA SEGMENTTAB DB 11111110B,11111101B,11111011B,11110111B DB 11101111B,11011111B,10111111B,01111111B DATA ENDSSTCK SEGMENT STACKSTA DB 50 DUP(?)STCK ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STCKSTART: MOV AX,DATAMOV DS,AXCALL Init8255 ;8255初始化子程序SCAN: MOV DX,0F002H;C口IN AL,DXAND AL,00100000BJZ SCAN ;判断IBFA是否为1 MOV DX,0F000H ;A口IN AL,DXAND AL,7 ;保留K1,K2,K3的数字 LEA BX,TABXLATMOV DX,0F001H ;B口OUT DX,ALJMP SCANInit8255 PROCMOV DX,0F003HMOV AL,0B0HOUT DX,ALRETInit8255 ENDPCODE ENDSEND START2、STCK SEGMENT STACKSTA DB 50 DUP(?)STCK ENDSCODE SEGMENTASSUME CS:CODE,SS:STCKSTART: MOV DX,0F003HMOV AL,0A0HOUT DX,ALMOV DX,0F000HMOV AL,0FEH ;使LED0亮OUT DX,ALLOP: MOV BL,AL ;保护AL中内容LOP1: MOV DX,0F002HIN AL,DXAND AL,80HJZ LOP1 ;/OBFA是否为1CALL DELAY ;延时MOV AL,BLROL AL,1MOV DX,0F000HOUT DX,ALJMP LOPDELAY PROCPUSH AXPUSH CXMOV CX,0FFFFHLOOP $MOV CX,0FFFFHLOOP $POP CXPOP AXRETDELAY ENDPCODE ENDSEND START八、遇到问题1、一开始编的程序没有查询IBFA的状态,用的是无条件传送,预置K的状态,不拨单脉冲开关,灯也能对应显示。

可编程并行IO接口8255实验

可编程并行IO接口8255实验

实验六可编程并行I/O接口8255实验【知识点训练】8255有 1 个控制口和3个8 位数据口(PA口、PB口和PC口),控制口用于写入控制命令,控制各数据口的工作方式和数据传送方向;数据口用于外设与CPU 进行数据通信,三个I/O口通过控制口设置为输入口或输出口。

PA口和PB 口的8位不可独立使用,PC口可分为两个独立的4位接口。

8255有 2 种工作方式,其中方式0 为基本输入/输出方式,在这种工作方式下,三个端口作为输出口时均具有锁存功能,适用于无条件传送数据的场合。

8255的地址线A0和A1通过锁存器与单片机的A0 、A1 相连,用于决定4个I/O端口地址,当A1A0分别取值00、01、10、11时,对应选择PA 口、PB 口、PC 口和控制口。

8255的使能信号经地址译码器与单片机高位地址线相连,用于选中8255接口。

使用可编程型I/O芯片时要先写控制字,且要写入控制口,数据输入输出使用PA,PB 口。

【实验内容】8255的PA口接有8个拨动开关,PB口接有8个发光二极管,PA口方式0输入,PB 口方式0输出。

编程实现:当开关全为“1”或全为“0”时,8个发光二极管左循环依次点亮或右循环依次点亮;当开关非全“1”或非全“0”时,则将开关状态显示在发光二极管上。

【实验连线】将8255的PA口(PA0 ~ PA7)接至8个开关,PB口(PB0-PB7)接至8个发光二极管。

【实验程序】#include <reg51.h>#include <absacc.h>#define PA8255 XBYTE[0X2000]#define PB8255 XBYTE[0X2001]#define CON8255 XBYTE[0X2003]#define uchar unsigned char#define uint unsigned intvoid delay(uint xms){uint i,j;for ( i=xms; i>0; i-- )for ( j=110; j>0; j-- );}void main(){uchar Switch, i; // Switch为开关变量,i为循环变量CON8255=0X90; //写8255控制字do{Switch=PA8255;if(Switch==0xff) //读入开关状态//如果开关为全“1”{for( i=0; i<8; i++){PB8255=~(0x01<<i); //8个发光二极管左循环依次点亮delay(500);}}else if(Switch==0x00) //如果开关为全“0”{for( i=0; i<8; i++){PB8255=~(0x80>>i); //8个发光二极管右循环依次点亮delay(500);}}elsePB8255=Switch; //发光二极管显示对应开关状态}while(1);}。

实验六---8255并行输入输出

实验六---8255并行输入输出

实验六---8255并行输入输出一、实验目的1.了解并熟悉8255并行输入输出控制器的功能和工作原理;二、实验原理1.8255芯片介绍8255是一种常用的并行输入/输出接口芯片,可用于微处理机系统中的输入/输出控制输出,根据中文名可以看出,8255有三种工作方式即口A、口B和控制口。

8255所有的输入/输出都是双向的,它可以通过输入输出口的命令字来在不同的模式下工作。

在输出模式下,82555可以通过端口A、B控制外围设备的输出操作,在输入模式下,8255可以通过端口A、B实现对外围设备的输入操作。

控制口是用来控制8255写作模式或读作状态字,并对端口进行初始化操作。

8255在不同的模式下有不同的编程方法和操作方法,因此需要在实际应用中选择不同的工作模式。

8255有三个I/O端口A、B、C,每个端口都有8位。

这里解释一下控制端口的意义,地址为0B4H的控制端口是连续读或写8255内部状态寄存器的地址,而后面的一个读或写就表示读或写操作的类型,如果该端口被写入了“控制字”则8255按照控制字工作,否则会在该端口读出输入状态字。

在读或写操作的时候向控制端口写入的二进制数在图3-8中给出了。

表3-2:8255访问口定义地址口分类名称端口A0B0H输出Port A输入ControlCout端口Cin端口2.8255的编程方式方式0:即I/O挂接方式,这种方式下A、B、C三个端口为并行I/O口时,其与MCU的接线和编程方式与单片机内部I/O端口的连接和编程方式相同。

方式1:即输入输出口不一样。

在这种片内Ram中的地址空间0~7地址单元内写入相应的端口或方式的控制字后,该8255工作在相应的方式。

即:方式0:读出的是8位端口A的状态,写操作为将数据送到端口A;方式2:是把C口分配为两部分——高4位为输入,低4位为输出,它与方式1类似。

端口C的所有状态和很多控制功能都由C口寄存器存储。

方式2:“端口C字符型输入输出方式”,在这种方式下,端口C的8个位分成两部分,4个位作为输入的,4个位作为输出的。

微机原理实验报告(8255并口实验)

微机原理实验报告(8255并口实验)

深圳大学实验报告课程名称:微型计算机技术实验项目名称:8255并行接口实验学院:信息工程学院专业:电子信息工程指导教师:报告人:学号:班级:实验时间:实验报告提交时间:教务处制一,实验目的1,学习并掌握8255 的工作方式及其应用。

2,掌握8255 典型应用电路的接法。

3,掌握程序固化及脱机运行程序的方法。

二,实验设备PC机器一台,TD-PITE实验装置一套,导线若干,另外PC与TD-PITE实验装置连接线。

三,实验内容1,基本输入输出实验。

编写程序,使8255 的A 口为输入,B 口为输出,完成拨动开关到数据灯的数据传输。

要求只要开关拨动,数据灯的显示就发生相应改变。

2,流水灯显示实验。

编写程序,使8255 的A 口和B 口均为输出,数据灯D7~D0 由左向右,每次仅亮一个灯,循环显示,D15~D8 与D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。

四实验内容及步骤1. 基本输入输出实验本实验使8255 端口A 工作在方式0 并作为输入口,端口 B 工作在方式0并作为输出口。

实验接线图如图6 所示,按图连接实验线路图。

用一组开关信号接入端口A,端口 B 输出线接至一组数据灯上,然后通过对8255 芯片编程来实现输入输出功能。

2. 流水灯显示实验:使8255 的A 口和B 口均为输出,数据灯D7~D0 由左向右,每次仅亮一个灯,循环显示,D15~D8 与D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。

实验接线图如下图所示。

8255输入输出实验报告

8255输入输出实验报告

8255输入输出实验报告
实验目的
本次实验旨在掌握8255芯片的输入输出原理和使用方法,通过实验了解并掌握8255芯片的原理和控制方法,提高实际操作能力。

实验器材
1. 8255芯片
2. 8086单片机
3. 电源
4. 万用表
5. LED灯
6. 按钮开关
实验步骤
1. 连接电路
根据实验原理和电路图,连接相应的电路,包括8255芯片、8086单片机、电源、万用表、LED灯和按钮开关等。

2. 编写程序
根据实验要求,编写相应的程序,包括8255芯片的输入输出控制
程序,以及相关的控制指令。

3. 运行程序
将编写好的程序烧录到8086单片机中,启动程序,进行相应的输入输出操作。

4. 测试结果
通过测试程序的运行结果,验证输入输出是否正确,并进行相应的调试和修改。

实验结果
经过实验,我们成功地掌握了8255芯片的输入输出原理和使用方法,熟悉了8255芯片的控制指令和编写程序的方法,成功地实现了输入输出操作。

本次实验不仅提高了我们的实际操作能力,还增强了我们对硬件电路和控制程序的理解和应用能力。

实验体会
本次实验让我深刻地认识到了硬件电路和控制程序的重要性,同时也让我感受到了实验的乐趣和挑战。

通过实验,我不仅学会了控制8255芯片的方法,还深入了解了单片机和电路原理,提高了自己的实际操作能力和理论知识水平。

结论
通过本次实验,我们掌握了8255芯片的输入输出原理和使用方法,熟悉了8255芯片的控制指令和编写程序的方法,成功地实现了输入输出操作。

本次实验不仅提高了我们的实际操作能力,还增强了我们对硬件电路和控制程序的理解和应用能力。

8255并行接口实验报告

8255并行接口实验报告

实验一 8255并行接口实验
一、实验目的和要求
1.学习利用并行接口芯片8255构成并行接口电路的基本方法。

2.熟悉掌握并行接口芯片8255的基本性能及在实际应用中硬件连接、初始化
编程方法。

二、实验内容
编写程序,使8255的219口为输出口,218为输入口,从218口将K0~K7作为一个字读入,再从219口输出这一反码字节。

三、实验算法
先初始化8255,将219口设置为输出口,218为输入口;再通过输入指令从8255的218口读入数据;最后通过输出指令将数据从8255的219口输出,在灯上显示出来。

四、实验电路图
电路图如下所示:
五、程序清单
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX,21BH ;初始化8255
MOV AL,90H
OUT DX,AL
BG: MOV DX,218H ;从8255的218口(即A口)读入数据
IN AL,DX ;数据存放到AL里
MOV DX,219H ;从8255的219口(即B口)输出数据
OUT DX,AL
JMP BG ;无限循环输入输出
CODE ENDS
END START
六、实验现象、结果与分析
随意扳动K0~K7,218口接收输入的数据,219口输出相应的数据到L0~L7,使对应指示灯亮。

七、实验体会
通过本实验了解8255的工作特性,初步知道了怎么用8255进行编程控制。

八、主要仪器设备
计算机、接口实验箱平台。

8255并行接口实验(精)

8255并行接口实验(精)

六. 编程提示
(1) 通过8255控制发光二极管PB3 PB0 PA5 PA2 对应黄灯,PB1 PA6 PA3 PA0对应红灯,PB2 PA7 PA4 PA1对应绿灯,以模拟交通灯的管理. (2) 程序中设定好8255A的工作方式,三个端口 均工作在方式0处于输出状态。 (3) 各发光二极管共阳极,使其点亮应使对应的 端口输出低电平。
实验一
8255并行接口实验
--------控制交通灯一.验目的掌握通过8255A并行口传输数据的方法, 以控制发光二极管的亮与灭.
二.实验目的

用8255作为输出口,控制十二个发光二极 管熄灭,模拟交通灯管理.
三 .程序框图
四 .实验电路
五 .实验步骤
(1)电路连线如下: 8255A PA0-L12 PA1-L11 PA2-L10 PA3-L9 PA4-L8 PA5-L7 PA6-L6 PA7-L5 PB0-L4 PB1-L3 PB2-L2 PB3-L1 (2)运行实验程序 在系统“P.”状态时,输入32F0,按EXEC键, L1~L12发光二极管模拟交通灯显示。

微机接口 8255并行接口实验报告

微机接口 8255并行接口实验报告

浙江工业大学计算机学院实验报告实验名称 8255并行接口实验姓名徐洁学号 ************班级计科1301班教师雷艳静日期 2015/12/31一、实验内容与要求1.1 实验内容8255方式0实验一:从8255端口C输入数据,再从端口A输出,即TPC-USB平台按逻辑电平开关K0~K7通过编程使端口C接收,然后再通过端口A输出到LED显示电路L0~L7,这样逻辑电平开关的值就可以通过8255芯片显示在LED显示电路上。

8255方式1输出实验:编程实现每按一次单脉冲按钮产生一个正脉冲,使8255产生一次中断,让CPU进行一次中断服务:依次输出01H、02H、04H、08H、10H、20H、40H、80H 使LED显示电路L0~L7依次发光,中断8次结束。

8255方式1输入实验:编程实现每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务,读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。

1.2 实验要求(1) 具有一定的汇编编程的基础,能编写一些基本语句来实现实验。

实验前根据实验流程图,写出对应代码;(2) 要了解8255A并行接口芯片内部结构和外部引脚,理解8255芯片的工作方式和程序设计方法;(3) 熟悉实验平台TPC-USB了解各个接口的名称与功能,进行实验时能快速并正确地连接好实验电路;(4) 8255方式0实验一:连接PC与TPC-USB平台,用微机实验软件运行程序,用TPC-USB平台上的逻辑电平开关与LED显示电路观察,LED显示的值与逻辑电平开关设的值对应;(5) 8255方式1输出实验:连接PC与TPC-USB平台,用微机实验软件运行程序,手按单脉冲按钮,观察LED显示电路能依次发光,按8次后,中断结束,程序结束;(6) 8255方式1输入实验:连接PC与TPC-USB平台,用微机实验软件运行程序,用TPC-USB平台的逻辑电平开关设置一个ASCII码,按一次单脉冲,屏幕就能显示该ASCII码对应的字符,变更逻辑电平的开关,按一次单脉冲,屏幕就会显示变更的ASCII码对应的字符。

微机原理实验报告(8255并口实验)

微机原理实验报告(8255并口实验)

WORD格式深圳大学实验报告课程名称:微型计算机技术实验项目名称:8255并行接口实验学院:信息工程学院专业:电子信息工程指导教师:报告人:学号:班级:实验时间:实验报告提交时间:教务处制一,实验目的1,学习并掌握8255的工作方式及其应用。

2,掌握8255典型应用电路的接法。

3,掌握程序固化及脱机运行程序的方法。

二,实验设备PC机器一台,TD-PITE实验装置一套,导线若干,另外PC与TD-PITE实验装置连接线。

三,实验内容1,基本输入输出实验。

编写程序,使8255的A口为输入,B口为输出,完成拨动开关到数据灯的数据传输。

要求只要开关拨动,数据灯的显示就发生相应改变。

2,流水灯显示实验。

编写程序,使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。

四实验内容及步骤1.基本输入输出实验本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。

实验接线图如图6所示,按图连接实验线路图。

用一组开关信号接入端口A,端口B输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。

图68255基本输入输出失误接线图3.编写实验程序如下面(1)汇编源程序SSTACKSEGMENTSTACKDW32DUP(?)SSTACKENDSCODESEGMENTASSUMECS:CODESTART:MOVDX,0646H;控制端口地址0646H送DX,因为8255的cs端口接的是I0Y1,而I0Y1对应的编址空间是0640H—067FH,所以这里是0646H。

MOVAL,90H;方式选择控制字送ALOUTDX,AL;方式选择控制字输给8255A的控制端口,完成端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。

AA1:MOVDX,0640H;控制端口A地址0640H送DXINAL,DX;将端口A连接的开关的对应状态送给ALCALLDELAYMOVDX,0642H;控制端口A地址0642H送DXOUTDX,AL;将AL的数据送到8255的端口B,从而使其连接的LED的灯发光JMPAA1DELAY:PUSHCXMOVCX,0F00HAA2:PUSHAXPOPAXLOOPAA2POPCXRETCODEENDSENDSTARTii具体实验步骤如下述:(1)编写实验程序,经编译、连接无误后装入系统(2)运行程序,改变拨动开关,同时观察LED显示,验证程序功能。

实验6 8255并行IO口实验

实验6 8255并行IO口实验

四、实验内容
1. 将实验的线路连接好后,编程,将 8255的A口作为输入,输入信号由 8个逻辑电平开关提供,B口作为 输出,其内容由发光二极管来显示。
五 、实验程序(ZY1LJ . ASM) 与流程图
开始
延时 置8255工作方式
读8255PA口
置8255PB口
L8255_CMD EQU 2A3H L8255_PA EQU 2A0H L8255_PB EQU 2A1H L8255_PC EQU 2A2H CODE SEGMENT ASSUME CS:CODE,DS:CODE BEGIN: MOV CX,0FFH AA: LOOP AA MOV DX,L8255_CMD MOV AL,9CH ;10011000 OUT DX,AL NOP NOP NOP NOP NOP BB: MOV DX,L8255_PA IN AL,DX MOV DX,L8255_PB OUT DX,AL JMP BB
movdxl8255paaldxmovdxl8255pboutdxaljmpbbcodeendsendbegin1熟悉断点的设置2熟悉寄存器和内存内容的查看与修改3熟悉单步运行和全速的区别及其操作根据程序列出实验中8255的各个端口的地址如果8255的cs改接译码信号280h其它信号不变那么对应的端口地址又是多
CODE ENDS END BEGIN
六、调试
1、熟悉断点的设置 2、熟悉寄存器和内存内容的查看与修改 3、熟悉单步运行和全速的区别及其操作
思考题
根据程序列出实验中8255的各个端口的 地址,如果8255的/CS改接译码信号280H, 其它信号不变,那么对应的端口地址又是多 少?
1. 方式选择控制字
2. 端口C置1/置0控制字 ( A1、A0 =11 )

8255并口实验详解

8255并口实验详解

xxxx大学计算机学院实验报告一、实验内容与要求1.1 实验内容(1)8255方式0实验从8255端口C输入数据,再从端口A输出(2)8255方式1输出实验编程实现每按一次单脉冲按钮产生一个正脉冲,使8255产生一次中断服务:依次输出01H,02H,04H,08H,10H,20H,40H,80H使L0~L7依次发光,中断8次结束。

(3)8255方式1输入实验编程实现:每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。

1.2 实验要求(1)8255方式0实验实验预期效果:拨动逻辑开关,启动程序,开关打开的对应灯可以亮起。

改变开关的状态,灯的亮暗也随之改变。

(2)8255方式1输出实验实验预期效果:按一次单脉冲按钮,L0亮起;以后每按一次,后面的灯依次会亮起。

中断8次结束。

(3)8255方式1输入实验实验预期效果:每按一次单脉冲按钮读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。

二、实验原理与硬件连线2.1 实验原理CPU通过指令将控制字写入8255A的控制端口设置它的工作方式。

8255A有两个控制字:方式选择控制字和端口C置位/复位控制字,这两个控制字均写入同一个控制端口地址(端口选择先A1A0=11)8255A有3种工作方式:方式0——基本输入/输出方式;方式1——选通输入/输出方式;方式2——双向传输方式。

方向选择控制字用于设置各端口的工作方式。

方式0称为基本输入/输出方式。

该方式下,端口A、端口B、端口C的高4位和端口C的低4位均可独立地设为输入或输出数据端口。

在方式0时,8255A与CPU时间没有应答联络信号,可用于无条件传送或查询方式数据传送场合。

采用查询方式传送时,可以将端口A、端口B 作为数据端口,用端口C存放外部设备状态信息,用于CPU查询。

方式1称为选通输入/输出方式。

汇编语言8255并行接口实验

汇编语言8255并行接口实验

汇编语言8255并行接口实验的C 口作为输出口,控制4个双色LED灯(可发红,绿,黄光),模拟字路口交通灯管理。

2、编写程序,以8255的C 口作为输出口,用开关控制控制一排发光二极管的亮灭。

实验内容1及实验原理双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。

红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。

使用8255的端口C控制双色灯。

8255的CS由CPLD输出,决定了8255的起始地址为4011。

8255的AO, A1地址线分别接了32位总线A2, A3,决定了A、B、C和状态口地址分别为40H、44H、48H和4CH。

假设一个字路口为东西南北走向。

初始状态0为东西红灯,南北红灯。

然后转状态1南北绿灯通车,东西红灯。

过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。

再转状态3, 东西绿灯通车,南北红灯。

过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。

最后循环至状态1。

注意:LED灯亮灭的间隔时间是由延时程序来控制的,如果计算机的速度过快,LED灯亮灭的间隔时间就比较短,实验现象就不明显。

可通过调整延时程序使实验现象更明显。

实验步骤1・接线:用8位数据线将8255模块的JD3D连接到32位LED显示模块的JD4B。

2.把D盘“程序”文件夹中Traffic, asm文件复制到BIN路径下。

3.重起计算机进入MAXDOS,然后进入纯DOS环境。

使用cd 命令到BIN路径下,输入下面命令后回车。

4.编译:tasin /zi Traffic. ASM5.连接:tlink /v/3 Traffic. 0BJ6.运行: Traffic. EXE运行结果如下图所示:按PC键盘(任意键),启动交通灯,再按PC键盘任意键,则程序退出。

7.把BIN文件夹下的“Traffic、ASM”源程序及生成的“、map”、“、obj”、“、exe”文件删除掉。

可编程并行接口8255输入输出实验

可编程并行接口8255输入输出实验

可编程并行接口8255输入输出实验一、实验目的了解可编程并行接口芯片8255的内部结构、工作方式、初始化编程及应用。

二、实验设备(1)PC机一台;(2)QTH-8086B 16位微机教学实验仪一套。

三、8255有关说明1. 8255A的引脚定义D7~D0:三态双向数据线。

/CS:片选信号线,低电平有效。

/RD:读命令信号,低电平有效。

/WR:写入信号线,低电平有效。

Vcc:+5V电源PA7~PA0:A口输入/输出线。

PB7~PB0:B口输入/输出线PC7~PC0:C口输入/输出线A1、A0:地址线,用来选择8255A内部的4个端口。

RESET:复位引脚,高电平有效2.8255A的工作方式方式0:基本输入输出方式方式1:选通输入输出方式方式2:双向选通输入输出方式。

3.8255A的命令字图1 8255的控制字格式图2 8255的C口按位置位复位命令四、线路连接1.实验原理图图3 可编程并行接口8255电路2.实验内容(1) 流水灯实验:利用8255的A口循环点亮发光二极管。

(2) 交通灯实验:利用8255的A口模拟交通信号灯。

(3) I/O输入输出实验:利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示。

3.实验项目1--流水灯实验(1)线路连接该模块的WR、RD分别连到MCU主模块的WR、RD。

该模块的数据(AD0--AD7)、地址线(A0--A7)分别连到MCU主模块的数据(AD0--AD7)、地址线(A0--A7)。

8255模块选通线CE连到MCU主模块的地址A15。

8255的PA0--PA7 连到发光二极管的 L0--L7。

(2)参考程序略4.实验项目2—交通灯实验(1)线路连接该模块的WR、RD分别连到MCU主模块的WR、RD。

该模块的数据(AD0--AD7)、地址线(A0--A7)分别连到MCU主模块的数据(AD0--AD7)、地址线(A0--A7)。

8255模块选通线CE连到MCU主模块的地址A15。

实验六 8255并行输入输出

实验六  8255并行输入输出

.东南大学《微机实验及课程设计》实验报告实验六 8255并行输入输出姓名:学号:专业:测控技术与仪器实验室: 516同组人员:评定成绩:..一、实验目的1)掌握8255方式0的工作原理及使用方法,利用直接输入输出进行控制显示;2)掌握8段数码管的动态刷新显示控制;二、 (1)实验内容(必做)6-1、8段数码管静态显示:编程从键盘输入一位十进制数字(0~9),在数码管上显示出来。

6-2、8段数码管动态显示:在两个数码管上同时显示不同的两位数字或字母,保持不变直至退出。

(如56或7f)(2)实验内容(必做一题,选做一题)6-3 静态显示:用逻辑电平开关预置某个数字(0~9)的ASCII码,将该数据用8255的C口读入,并用A口输出,并在数码管显示出来;如果预置的ASCII 码不是数字(0~9),数码管显示E字母。

6-4 动态显示:在两个数码管上滚动循环显示不同的0~f字符。

(即开始时两个数码管显示01,12,23,34 ··f0,一直循环直至退出)三、实验原理(1)实验预备知识数码管的符号和引脚LED 图八段式..(2) 6-1流程图:开设825控制字端口输出从键盘输入字N0~是否Y将对应段码输出8255端结6-1源代码:data segmentioport equ 0ec00h-0280hio8255a equ ioport+288h ;8255A口地址io8255b equ ioport+28bh ;8255控制寄存器端口地址led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码mesg1 db 0dh,0ah,'Input a num (0--9h):',0dh,0ah,'$';提示data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255b ;使8255的A口为输出方式mov ax,80hout dx,alsss: mov dx,offset mesg1 ;显示提示信息mov ah,09hint 21h..mov ah,01 ;从键盘接收字符int 21hcmp al,'0' ;是否小于0jl exit ;若是则退出cmp al,'9' ;是否大于9jg exit ;若是则退出sub al,30h ;将所得字符的ASCII码减30Hmov bx,offset led ;bx为数码表的起始地址xlat ;求出相应的段码mov dx,io8255a ;从8255的A口输出out dx,aljmp sss ;转SSSexit: mov ah,4ch ;返回DOSint 21hcode endsend start(3)6-2接线图:6-2源代码:data segmentequ 0ec00h-0280h ioportequ ioport+288h io8255aequ ioport+28ah io8255cequ ioport+28bhio8255kled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码存放要显示的个位和十位buffer1 db 5,6 ; bz dw ? ;位码data endsstacks segment stackdb 100 dup(?)..stacks endscode segmentassume cs:code,ds:data,ss:stacksstart: mov ax,datamov ds,axmov ax,stacksmov ss,axmov dx,io8255k ;将8255设为A口输出mov al,80hout dx,almov di,offset buffer1 ;设di为显示缓冲区loop2: mov bh,02送全灭断码 lll: mov al,0 ;自8255A口输出mov dx,io8255a ;out dx,almov byte ptr bz,bhpush didec diadd di, bz为要显示的数 mov bl,[di] ;bl pop di mov bh,0置led mov si,offset led ;数码表偏移地址为SI求出对应的led数码 add si,bx ;mov al,byte ptr [si]自8255A mov dx,io8255a ;的口输出out dx,al使相应的数码管亮 mov al,byte ptr bz ;mov dx,io8255aout dx,almov cx,3000延时delay: loop delay ;mov bh,byte ptr bzshr bh,1jnz lllmov dx,0ffhmov ah,06int 21h有键按下则退出 je loop2 ;mov dx,io8255a关掉数码管显示 mov al,0 ; out dx,al 返回mov ah,4ch ; int 21h..code endsend start(4)6-3流程图:开设825控制字口输入口输口输入一数YN是否属0~对应段码输将对应段码输N是否有键输入Y结6-3源代码:data segmentioport equ 0ec00h-0280h ;tpc卡中设备的io地址io8255a equ ioport+288h ;8255A口地址io8255k equ ioport+28bh ;8255控制寄存器端口地址io8255c equ ioport+28ah ;8255C口地址led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh data endsstacks segment stackdb 100 dup (?)stacks ends..code segmentassume cs:code,ss:stacks,ds:datamain proc farstart: mov ax,stacksmov ss,axmov ax,datamov ds,axmov dx,io8255k ;设8255为C口输入,A口输出 mov al,8bh ;1000 1011out dx,alinout: mov dx,io8255c ;从C口输入一数据call delayin al,dxcmp al,'0' ;是否小于0jl exit1 ;若是则显示Ecmp al,'9' ;是否大于9jg exit1 ;若是则显示Emov bx,offset led ;bx为数码表的起始地址 sub al,30hxlat ;求出相应的段码mov dx,io8255a ;从8255的A口输出out dx,almov ah,06 ;是否有键输入mov dl,0ffhint 21h ;是则退出jne exitjmp inout ;转inoutexit1: mov al,79hmov dx,io8255aout dx,almov ah,06 ;是否有键输入mov dl,0ffhint 21h ;是则退出jne exitjmp inout ;转inoutexit: mov ah,4ch ;返回DOSint 21hmain endpdelay proc near ;延时子程序mov bx,2000ZZZ: mov cx,0ZZ: loop ZZdec bx..jne ZZZretdelay endpcode endsend start6-3接线图:实验中遇到的问题及解决方案四、芯片8255在实验初始,发现七段数码管的a不亮,排除故障发现是由于(1)不能输出高电平;的PA0只有在每次运后来发现,在各个实验中,连线后发现数码管都没有反应,(2)行前运行一下演示实验,再运行自己的程序才出正确结果;即若开关初始时,数码管显示的数字是开关预置的数字,在实验6-3中,)(3Ⅱ码;,但是实验要求为预置的为ASC0000,0001,则数码管显示1置为达到实验要求则就是数值,发现若直接用从检查代码,C口输入的数据,的操作;C口输入的数据进行减30h还需对从操作指令前未加延时程序)在这次的课时in 上次实验总未完成部分(在(4)则屏幕一直显示提示信息;1,上实现,上次的实验结果是,若开关预置全,则开始会显示提示信息,片刻后不再提示,说明若不1若开关预置非全开关预置的数据会输入,,0ffh但片刻后,用加延时,in指令输入的会是没有用到的延时程序是借用之前实验中的,遗憾部分是,程序不再提示; CX改变数据以观察需加延时的最短时间; 5().。

实验六 8255A可编程并行口实验

实验六 8255A可编程并行口实验

实验六8255A可编程并行口实验一、实验目的1.掌握并行接口芯片8255A和微机接口的连接方法。

2.掌握并行接口芯片8255A的工作方式及其编程方法。

三、实验内容1.实验原理如实验原理图6-4所示,PA口8位接8个开关K1~ K8,PB口8位接8个发光二极管,从PA口读入8位开关量送PB口显示。

拨动K1~ K8,PB口上接的8个发光二极管L1~ L8对应显示K1~ K8的状态。

图6-42.实验线路连接(1)8255A芯片PA0~ PA7插孔依次接K1~ K8。

(2)8255A芯片PB0~PB7插孔依次接L1 ~ L8。

系统已定义的I/O地址如下:接口芯片口地址用途8255A口FFD8H EP总线8255B口FFD9H EP地址8255C口FFDAH EP控制8255控制口FFDBH 控制字四、实验软件框图五、实验软件清单PA EQU 0FFD8HPB EQU 0FFD9HPC EQU 0FFDAHPCTL EQU 0FFDBHCODE SEGMENTASSUME CS:CODE,DS:CODE,ES:CODEORG 32E0HH2: MOV DX,PCTLMOV AL,90HOUT DX,ALP2: MOV DX,PAIN AL,DXINC DXOUT DX,ALJMP P2CODE ENDSEND H2六、实验步骤1.按图6-4连好线路。

2.运行实验程序,拨动K1~K8,L1~L8会跟着亮灭。

实验六8255并行口实验(二)A.B.C口输出方波一、实验目的掌握可编程I/O接口芯片8255的接口原理使用,熟悉对8255初始化编程和输入、输出软件设计方法。

二、实验内容在8255 A.B.C口用示波器测出波形。

三、程序流程四、实验步骤编译、装载,连续运行程序,用示波器测量8255 A.B.C口并观察其波形。

关键点:ch0、ch1分接PA口的D1、D0;ch0、ch1分接PB口的D1、D0;ch0、ch1分接PC口的D1、D0五、实验程序PA EQU 0FFD8HPB EQU 0FFD9HPC EQU 0FFDAHPCTL EQU 0FFDBHCODE SEGMENTASSUME CS:CODE,DS:CODE,ES:CODEORG 32C0HH1: MOV DX,PCTLMOV AL,80HOUT DX,ALMOV AL,55HP11: MOV DX,PAOUT DX,ALINC DXOUT DX,ALINC DXOUT DX,ALMOV CX,0800HLOOP $NOT ALJMP P11CODE ENDSEND H1实验六8255A可编程并行口实验(三)交通灯一、实验目的进一步掌握8255A可编程并行口使用方法。

微机原理与接口技术--实验六 并行接口8255应用实验

微机原理与接口技术--实验六 并行接口8255应用实验

实验六并行接口8255应用实验一、任务与目的1. 实验任务:(1) 熟悉并行接口8255的结构和编程方法;(2) 掌握并行8255接口连接外设的基本方法。

2. 实验目的:(1). 掌握并行8255可编程接口的设置方法;(2) 熟悉8255连接外设完成并行输入输出的基本方法。

二、原理(条件)1.相关知识:(1) 8255接口地址与状态字的表示与设置方法;(2) 8255连接发光二极管与拨键开关的基本用法;2.实验条件:伟福Lab8000系统。

三、内容步骤1.实验方法:(1)连接实验装置;(2)连接硬件;(3)打开实验装置电源开关;(3)打开VW软件,进行仿真器设置;(3)在VM软件中输入程序、编译并执行。

2.发光二极管显示程序:(1)线路连接:实验装置上8255_CS连接到实验装置的CS0上,8255上PA0-PA7分别连接到8个发光二极管L0-L7上。

图2 8255控制发光二极管显示硬件连接图(2) 输入程序、编译并执行,观察发光二极管变化并分析结果。

MODE EQU 80HPORTA EQU 8000HPORTB EQU 8001HPORTC EQU 8002HCONTROL EQU 8003HCODE SEGMENTASSUME CS:CODESTART: MOV AL,80hMOV DX,8003hOUT DX,ALMOV AL,80HOUTA:MOV DX,PORTAOUT DX,ALCALL DELAYROR AL,1JMP OUTADELAY PROC NEAR ;振荡频率取5MHZ,计算延时要求1S。

PUSH CX ;15tMOV BX, 5000 ;4t ,第五组2.5秒延时DELAY1:MOV CX,40 ;4tDELAY2:LOOP DELAY2 ;17t(转移)/5t(不转移)DEC BX ;2tJNZ DELAY1 ;16t(转移)/4t(不转移)POP CX ;12tRET ;19tDELAY ENDPCODE ENDSEND START3.拨键开关控制发光二极管亮灭程序:(1)线路连接:实验装置上8255_CS连接到实验装置的CS0上,PB0-PB7接8个开关S0-S7、PA0-PA7连接8个发光二极管L0-L7。

最新微机原理实验8255并行口实验PA输入、PB输出

最新微机原理实验8255并行口实验PA输入、PB输出

微机原理实验8255并行口实验P A输入、P B输出8255A并行口实验PA输入、PB输出利用LED等显示程序LCD EQU 07FE0HLCDWI EQU LCD+0 ;写命令LCDWD EQU LCD+1 ;写数据LCDRS EQU LCD+2 ;读状态LCDRD EQU LCD+3 ;读数据PA EQU 0FFD8HPB EQU 0FFD9HPC EQU 0FFDAHPCTL EQU 0FFDBHcode segmentassume cs:codelin db 0col db 0num db 0dis_num db 0temp0 db 0temp1 db 0count db 0org 1000hstart: MOV DX,PCTLMOV AL,90HOUT DX,ALcall init_lcdmov al,3call delay2mov count,0mov bx,offset tab0mov lin,0mov col,0mov num,16call dis_englishGOON: MOV DX,PAIN AL,DXTEST AL,01HJE GOON1TEST AL,02HJE GOON2TEST AL,04HJZ GOON3TEST AL,08HJE GOON4TEST AL,10HJE GOON5TEST AL,20HJE GOON6TEST AL,40HJE GOON7TEST AL,80HJZ GOON8JMP GOON9GOON1: JMP KEY1GOON2: JMP KEY2GOON3: JMP KEY3GOON4: JMP KEY4GOON5: JMP KEY5GOON6: JMP KEY6GOON7: JMP KEY7GOON8: JMP KEY8GOON9: mov bx,offset tab9 mov lin,1mov col,0mov num,16call dis_englishMOV DX,PBMOV AL,0FFHOUT DX,ALJMP GOONKEY1: MOV DX,PBMOV AL,0FEHOUT DX,ALmov bx,offset tab1mov lin,1mov col,0mov num,16call dis_englishJMP GOONKEY2: MOV DX,PBMOV AL,0FDHOUT DX,ALmov bx,offset tab2 mov lin,1mov col,0mov num,16call dis_englishJMP GOONKEY3: MOV DX,PBMOV AL,0FBHOUT DX,ALmov bx,offset tab3 mov lin,1mov col,0mov num,16call dis_englishJMP GOONKEY4: MOV DX,PBMOV AL,0F7HOUT DX,ALmov bx,offset tab4 mov lin,1mov col,0mov num,16call dis_englishJMP GOONKEY5: MOV DX,PBMOV AL,0EFHOUT DX,ALmov bx,offset tab5 mov lin,1mov col,0mov num,16call dis_englishJMP GOONKEY6: MOV DX,PBMOV AL,0DFHOUT DX,ALmov bx,offset tab6 mov lin,1mov col,0mov num,16call dis_englishJMP GOONKEY7: MOV DX,PBMOV AL,0BFHOUT DX,ALmov bx,offset tab7mov lin,1mov col,0mov num,16call dis_englishJMP GOONKEY8: MOV DX,PBMOV AL,07FHOUT DX,ALmov bx,offset tab8mov lin,1mov col,0mov num,16call dis_englishJMP GOONdis_number procpush axmov al,lin ;以下18条为根据行、列值定位显示英文起始坐标 cmp al,0jnz nu0mov al,80hjmp nu1nu0: cmp al,1jnz nuretmov al,0C0hnu1: add al,colcall send_commov ah,0 ;以下10条为把3位十进制数的个位、十位、百位分离 mov al,dis_nummov bl,10div blmov temp0,ahmov ah,0mov bl,10div blmov temp1,ahadd al,30h ;转为ASC码call send_data ;百位送LCD显示mov al,temp1add al,30h ;转为ASC码call send_data ;十位送LCD显示mov al,temp0add al,30h ;转为ASC码call send_data ;个位送LCD显示pop axnuret: retdis_number endp;--------------------------;在指定的行、列显示英文。

微机实验报告 8255并行IO口实验

微机实验报告 8255并行IO口实验

微机实验报告 8255并行IO口实验一、实验目的1.掌握8255芯片的基本结构和功能;2.了解键盘、LED灯的工作原理;3.能够进行8255芯片的编程和应用。

二、实验原理8255是由Intel公司设计的一种具有高度集成度的、通用的、并行的I/O设备。

它可以作为与CPU对外的接口芯片,实现与CPU的数据传输和控制。

在8255中,数据端口和控制端口都是I/O端口,通过这些端口来对外部装置进行输入和输出。

8255一共包含三个可编程I/O口,即端口A、端口B和端口C,每个IO口都有自己的方向、输入输出控制和数据寄存器,同时拥有中断控制、双向数据传输以及串行数据传输等多种操作模式。

其中,端口A和端口B是8位的,可以单独使用或组合成16位的端口C进行数据传输。

端口A和端口B的功能可通过I/O控制字中的一些位来编程实现,可分为输出、输入和双向传输三种模式。

端口C是一个5位I/O口,其中4位可以编程为输入或输出,第5位为只读输入输出类型,称为模式控制寄存器(control mode register,CMR)。

模式控制寄存器有4个不同的配置方式,它们在数据传输时可以实现BCD码的转换、万分之一秒的时钟计数、键盘扫描以及LED灯控制等功能。

本次8255并行IO口实验主要是通过端口A、端口B和端口C来控制LED灯和键盘扫描,实现输入输出的控制。

三、实验内容1.针对8255的IO口进行连接:将P0、P1、P2、P3、wr、rd等引脚重新定义为要控制的LED灯、键盘的控制信号引脚,将8255的各接口接在实验板上。

2.编写相应程序,控制8255芯片的各个闪烁。

四、实验步骤2.在电脑上打开keil 软件,编写控制程序,将程序下载到单片机中。

3.通过控制程序,控制LED灯以及键盘扫描进行输出输入的操作。

五、实验结果实现输出LED灯的闪烁、键盘扫描通过这次实验,我对8255并行IO口的基本结构和功能有了更深入的了解。

8255芯片是一种高度集成度的、通用的、并行的I/O设备,通过这个芯片的接口,我们可以方便地实现单片机与外界键盘等设备的数据输入输出控制。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六---8255并行输入输出
东南大学
《微机实验及课程设计》
实验报告
实验六 8255并行输入输出
姓名:学号:
专业:测控技术与仪器实验室: 516
同组人员:评定成绩:
一、实验目的
1)掌握8255方式0的工作原理及使用方法,利用直接输入输出进行控制显示;
2)掌握8段数码管的动态刷新显示控制;
二、(1)实验内容(必做)
6-1、8段数码管静态显示:编程从键盘输入一位十进制数字(0~9),在数码管上显示出来。

6-2、8段数码管动态显示:在两个数码管上同时显示不同的两位数字或字母,保持不变直至退出。

(如56或7f)
(2)实验内容(必做一题,选做一题)
6-3 静态显示:用逻辑电平开关预置某个数字(0~9)的ASCII码,将该数据用8255的C口读入,并用A口输出,并在数码管显示出来;如果预置的ASCII 码不是数字(0~9),数码管显示E字母。

6-4 动态显示:在两个数码管上滚动循环显示不同的0~f字符。

(即开始时两个数码管显示01,12,23,34 ··f0,一直循环直至退出)
三、实验原理
(1)实验预备知识
图 八段式LED 数码管的符号和引脚
(2) 6-1流程图:
N
Y
将对应段码输

6-1源代码:
data segment
ioport equ 0ec00h-0280h
io8255a equ ioport+288h ;8255A口地址
io8255b equ ioport+28bh ;8255控制寄存器端口地址
led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码mesg1 db 0dh,0ah,'Input a num (0--9h):',0dh,0ah,'$';提示data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov dx,io8255b ;使8255的A口为输出方式
mov ax,80h
out dx,al
sss: mov dx,offset mesg1 ;显示提示信息
mov ah,09h
int 21h
mov ah,01 ;从键盘接收字符
int 21h
cmp al,'0' ;是否小于0
jl exit ;若是则退出
cmp al,'9' ;是否大于9
jg exit ;若是则退出
sub al,30h ;将所得字符的ASCII码减30H mov bx,offset led ;bx为数码表的起始地址
xlat ;求出相应的段码
mov dx,io8255a ;从8255的A口输出
out dx,al
jmp sss ;转SSS
exit: mov ah,4ch ;返回DOS
int 21h
code ends
end start
(3)6-2接线图:
6-2源代码:
data segment
ioport equ 0ec00h-0280h
io8255a equ ioport+288h
io8255c equ ioport+28ah
io8255k equ ioport+28bh
led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码buffer1 db 5,6 ;存放要显示的个位和十位
bz dw ? ;位码
data ends
stacks segment stack
db 100 dup(?)
stacks ends
code segment
assume cs:code,ds:data,ss:stacks
start: mov ax,data
mov ds,ax
mov ax,stacks
mov ss,ax
mov dx,io8255k ;将8255设为A口输出
mov al,80h
out dx,al
mov di,offset buffer1 ;设di为显示缓冲区
loop2: mov bh,02
lll: mov al,0 ;送全灭断码
mov dx,io8255a ;自8255A口输出
out dx,al
mov byte ptr bz,bh
push di
dec di
add di, bz
mov bl,[di] ;bl为要显示的数
pop di
mov bh,0
mov si,offset led ;置led数码表偏移地址为SI add si,bx ;求出对应的led数码
mov al,byte ptr [si]
mov dx,io8255a ;自8255A的口输出
out dx,al
mov al,byte ptr bz ;使相应的数码管亮
mov dx,io8255a
out dx,al
mov cx,3000
delay: loop delay ;延时
mov bh,byte ptr bz
shr bh,1
jnz lll
mov dx,0ffh
mov ah,06
int 21h
je loop2 ;有键按下则退出
mov dx,io8255a
mov al,0 ;关掉数码管显示
out dx,al
mov ah,4ch ;返回
int 21h code ends end start
(4)6-3流程图: Y N N Y
6-3源代码: data segment
ioport equ 0ec00h-0280h ;tpc 卡中设备的io 地址 io8255a equ ioport+288h ;8255A 口地址
io8255k equ ioport+28bh ;8255控制寄存器端口地址 io8255c equ ioport+28ah ;8255C 口地址
led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh

设置8255控制字,C
从C 口输
是否属
将对应段码
将E 对应段
是否有

data ends
stacks segment stack
db 100 dup (?)
stacks ends
code segment
assume cs:code,ss:stacks,ds:data
main proc far
start: mov ax,stacks
mov ss,ax
mov ax,data
mov ds,ax
mov dx,io8255k ;设8255为C口输入,A口输出 mov al,8bh ;1000 1011
out dx,al
inout: mov dx,io8255c ;从C口输入一数据
call delay
in al,dx
cmp al,'0' ;是否小于0
jl exit1 ;若是则显示E
cmp al,'9' ;是否大于9
jg exit1 ;若是则显示E
mov bx,offset led ;bx为数码表的起始地址 sub al,30h
xlat ;求出相应的段码
mov dx,io8255a ;从8255的A口输出
out dx,al
mov ah,06 ;是否有键输入
mov dl,0ffh
int 21h ;是则退出
jne exit
jmp inout ;转inout
exit1: mov al,79h
mov dx,io8255a
out dx,al
mov ah,06 ;是否有键输入
mov dl,0ffh
int 21h ;是则退出
jne exit
jmp inout ;转inout
exit: mov ah,4ch ;返回DOS
int 21h
main endp
delay proc near ;延时子程序
mov bx,2000
ZZZ: mov cx,0
ZZ: loop ZZ
dec bx
jne ZZZ
ret
delay endp
code ends
end start
6-3接线图:
四、实验中遇到的问题及解决方案
(1)在实验初始,发现七段数码管的a不亮,排除故障发现是由于8255芯片的PA0不能输出高电平;
(2)在各个实验中,连线后发现数码管都没有反应,后来发现,只有在每次运行前运行一下演示实验,再运行自己的程序才出正确结果;
(3)在实验6-3中,初始时,数码管显示的数字是开关预置的数字,即若开关置为0000,0001,则数码管显示1,但是实验要求为预置的为ASCⅡ码;
检查代码,发现若直接用从C口输入的数据,则就是数值,达到实验要求还需对从C口输入的数据进行减30h的操作;
(4)上次实验总未完成部分(在in操作指令前未加延时程序)在这次的课时上实现,上次的实验结果是,若开关预置全1,则屏幕一直显示提示信息;
若开关预置非全1,则开始会显示提示信息,片刻后不再提示,说明若不加延时,用in指令输入的会是0ffh,但片刻后,开关预置的数据会输入,程序不再提示;遗憾部分是,用到的延时程序是借用之前实验中的,没
有改变CX数据以观察需加延时的最短时间;。

相关文档
最新文档