实验七 8255 并行IO扩展实验

合集下载

单片机可编程并行接口芯片8255的应用实验

单片机可编程并行接口芯片8255的应用实验

单片机可编程并行接口芯片8255的应用实验一:实验目的和要求1、掌握中断系统外部中断源的使用方法。

2、掌握延时程序的编程及使用方法。

3、掌握Proteus软件与Keil软件的使用方法。

4、掌握单片机系统的硬件和软件设计方法。

二:设计要求1、用Proteus软件画出电路原理图,在单片机的外部扩展片外三总线,并通过片外三总线与8255接口。

2、在8255PA口或PB口的某一口线上产生周期500μS的连续方波,接示波器观察波形。

3、在8255PC口的PC0-PC3上接4个按键作输入,PC4-PC7上接4个发光二极管作输出,编程实现发光二极管正确指示按键的状态三:电路原理四:流程框图五:实验结果六:实验总结通过本次试验,掌握了如何在单片机外部扩展I/O口,并且如何在程序中使用这些扩展出来的I/O口,为以后的学习和使用打下了一定的基础,存在的问题是在编写程序时不够熟练,需要多练习七:思考题1、在8255PC口上外接8个发光二极管,利用8255PC口的置位/复位控制字控制其按某种规律变化四:流程框图开始工作方式初始化开定时器定时器初始化查询计数标志位溢出否取反输出口A中内容送DPTR设置C口命令DPTR指向控制位是否开始DPTR指向C口C口内容送累加器DPTR指向控制位交换累加器内容高低位累加器中内容送C开始DPTR指向控制位A中内容送DPTR 定义查表执行次数查表数据送C口调用延时子程序查询次数完否否是修改变量值1秒延时程序子程序返回程序清单ORG 0000H MOV DPTR, #0003H MOV A, #80H MOVX @DPTR, AMOV DPTR, #0000H MOV A, #0FFH MOVX @DPTR, AMOV IE, #00H MOV TMOD, #20H SETB TR1MOV TL1, #06H MOV TH1, #06H LOOP0:JBC TF1, LOOP1 AJMP LOOP0 LOOP1:CPL ACC.0 MOVX @DPTR, A AJMP LOOP0 END#include<reg52.h>#include<absacc.h>#define uchar unsingned char #define uint unsingned int #define COM8255 XBYTE[0X0003] #define PA8255 XBYTE[0X0000] #define PB8255 XBYTE[0X0001] char A;void main(){TMOD=0X11;IE=0;TH1=0XFF;TL1=0X06;PA8255=0XFF;TR1=1;A=1;for( ; ;){do {} while(!TF1);A=!A;if(A==0){PA8255=0XFE;TL1=0X06;TH1=0XFF;TF1=0;}if(A==1){PA8255=0XFF;TL1=0X06;TH1=0XFF;TF1=0;}}}ORG 0000HMOV DPTR, #0003HMOV A, #81HMOVX @DPTR, AMOV DPTR, #0002H LOOP: MOVX A, @DPTRSWAP AMOVX @DPTR, ALJMP LOOPEND#include<reg52.h>#include<absacc.h>#define uchar unsingned char#define uint unsingned int#define COM8255 XBYTE[0X0003]#define PA8255 XBYTE[0X0000]#define PB8255 XBYTE[0X0001]#define PC8255 XBYTE[0X0002]void main(){COM8255=0X81;PC8255=0XFF;while(1){PC8255=PC8255/16+PC8255%16*16;}}ORG 0000HLOOP2: MOV DPTR, #0003HMOVX @DPTR, AMOV R0, #00HMOV R1, #10HLOOP:MOV DPTR, #TABLEMOV A, R0MOVC A, @A+DPTRMOVX @DPTR, ALCALL DELAY1SINC R0DJNZ R1, LOOPLJMP LOOP2TABLE:DB 00H,01H,02H,03H,04H,05H,06H,07H08H,09H,0AH,0BH,0CH,0DH,0EH,0FH DELAY1S:MOV R7, #0A7HDL1:MOV R6, #0ABHDL0:MOV R5, #10HDJNZ R5, $DJNZ R6, DL0DJNZ R7, DL1NOPRETEND#include <reg52.h>#include <absacc.h>#include <intrins.h>#define uchar unsigned char#define PROTECT XBYTE[0X0003]#define PA8255 XBYTE[0X0000]#define PB8255 XBYTE[0X0001] #define PC8255 XBYTE[0X0002] void delay1s();main(){uchar n=16;uchar h=0xfe;PROTECT=0x80;while(1){PC8255=h;delay1s();h=_crol_(h,1);}}void delay1s(void){unsigned char a,b,c;for(c=167;c>0;c--)for(b=171;b>0;b--)for(a=16;a>0;a--);_nop_(); }五:实验结果。

微机原理与汇编语言_实验7_8255并行接口实验

微机原理与汇编语言_实验7_8255并行接口实验

微机原理与汇编语言实验报告姓名x x x学号xxxxxx专业班级计科x班课程名称微机原理与汇编语言实验日期实验名称8255并行接口实验成绩一、实验目的掌握8255A的编程原理。

二、实验内容1、实验原理本实验用到两部分电路:开关量输入输出电路和8255可编程并口电路。

8255A是比较常用的一种并行接口芯片,其特点在许多教科书中均有介绍。

8255A有三个8位的输入输出端口,通常将A端口作为输入用,B端口作为输出用,C端口作为辅助控制用,本实验也是如此。

实验中,8255A工作于基本输入输出方式(方式0)。

2、实验步骤1)实验接线CS0CS8255;PA0~PA7平推开关的输出K1~K8;PB0~PB7发光二极管的输入LED1~LED8。

2)编程并全速或单步运行。

3)全速运行时拨动开关,观察发光二极管的变化。

当开关某位置于L时,对应的发光二极管点亮,置于H时熄灭。

3、实验结果程序全速运行后,逻辑电平开关的状态改变应能在LED上显示出来。

例如:K2置于L位置,则对应的LED2应该点亮。

三、实验源码及框图assume cs:codecode segment publicorg 100hstart: mov dx,04a6h ;控制寄存器地址mov ax,90h ;设置为A口输入,B口输出out dx,axstart1: mov dx,04a0h ;A口地址in ax,dx ;输入mov dx,04a2h ;B口地址out dx,ax ;输出jmp start1code endsend start四、练习键盘接口实验。

请阅读实验指导手册,根据实验台键盘电路结构,设计实验,编制程序实现键盘的按键识别,并将其代码通过Led指示灯显示。

练习键盘框图:实验源码:assume cs:codecode segment publicorg 100hTimer = 10;延时常量;设置行线接输出端口,列线接输入端口start:mov dx,04a6h;控制端写控制字,设置为A口输入,B口输出mov al,90hout dx,alWait:mov al,00hmov dx,04a2hout dx,al ; 往所有行线上输出低电平movin al,dx ; 读取列值cmp al,0ffh ;是否有列线为低电平jz wait ;否,则循环等待done: call delay ;是,则延迟去抖动mov cx,8 ;行数送CXkey2:mov al,0mov dx,04a2h ;B口作为输出out dx,al ;设置行线全为低mov dx,04a0h ;A口作为输入in al,dx ;读取列值cmp al,0ffhjz key2 ;无闭合键,循环等待push ax ;有闭合键,保存列值push ax;设置行线接输入端口,列线接输出端,A口输出,B口输入mov dx,04a6hmov al,82hout dx,almov dx,04a0h ;A口输出pop axout dx,al;输出列值mov dx,04a2h ;B口输入in al,dx ;读取行值pop bx ;组合行列值mov ah,bl ;此时,al=行值,ah=列值mov si,offset table ;table保存键盘行列值mov di,offset char ;char保存键代码值mov cx,24 ;cx=键的个数key3:cmp ax,[si];与键值比较jz key4 ;相同,说明查到inc si ;不相同,继续比较inc siinc diloop key3jmp start ;全部比较完无相同则再进行扫描一遍jmp wait ;全部比较完,仍无相同,说明是重键key4:mov al,[di];获取键代码送ALpush ax;判断按键是否释放,没有则等待call delay ;按键释放,延时消除抖动;后续处理;将代码值输给小灯mov dx,04a6h;控制寄存器地址mov ax,0080h ;设置C口输出out dx,axmov dx,04a4h ;将键代码从C口输出送给小灯pop axout dx,aldelay procpush bxpush cxmov bx,timer;外循环次数由timer确定delay1: xor cx,cxdelay2: loop delay2 ;内循环dec bxjnz delay1pop cxpop bxretdelay endp;键盘的行列值表table dw 0fefeh ;键1的行列值(键值)dw 0fefdh ;键2的行列值dw 0fefbh ;键3的行列值dw 0fe07h ;键4的行列值dw 0fedfh ;键6的行列值dw 0febfh ;键7的行列值dw 0fe7fh ;键8的行列值dw 0fdfeh ;键9的行列值dw 0fdfdh ;键10的行列值dw 0fdfbh ;键11的行列值dw 0fd07h ;键12的行列值dw 0fdefh ;键13的行列值dw 0fddfh ;键14的行列值dw 0fdbfh ;键15的行列值dw 0fd7fh ;键16的行列值dw 0fbfeh ;键17的行列值dw 0fbfdh ;键18的行列值dw 0fbfbh ;键19的行列值dw 0fb07h ;键20的行列值dw 0fbefh ;键21的行列值dw 0fbdfh ;键22的行列值dw 0fbbfh ;键23的行列值dw 0fb7fh ;键24的行列值……;S25、S26其他键的行列值;键盘的键代码表char db 30h ;键1的代码值db 31h ;键2的代码值db 32h ;键2的代码值db 33h ;键3的代码值db 35h ;键5的代码值db 36h ;键6的代码值db 37h ;键7的代码值db 38h ;键8的代码值db 39h ;键9的代码值db 41h ;键A的代码值db 42h ;键B的代码值db 43h ;键C的代码值db 44h ;键D的代码值db 45h ;键E的代码值db 46h ;键F的代码值db 61h ;键a的代码值db 62h ;键b的代码值db 63h ;键c的代码值db 64h ;键d的代码值db 65h ;键e的代码值db 66h ;键f的代码值db 67h ;键g的代码值db 68h ;键h的代码值……;S25、S26其他键的代码值code endsend start实验现象:按相应的键,LED灯会显示相应的代码。

综合实验七 8255并口扩展实验

综合实验七 8255并口扩展实验

实验七 8255并口扩展实验一、实验目的1.理解单片机并口编程方法; 2.掌握8255编程方法; 二、实验原理及内容1.实验原理8255资料读者可以参考微机原理相关内容或者参考光盘中的器件资料中的相关文档。

下图是8255在该实验系统的应用。

如图8-9所示,读写信号与单片机的接口如图所示。

A11通过跳线J408作为8255A 的片选信号。

实验系统工作原理:任意按下PA 口的键,对应的PB 发光二极管会亮,直到放下按键,PC 口在该实验系统中没有使用。

RESTRD WR A0A1D0D1D2D3D4D5D6D7A11PB0PB1PB2PB3PB4PB5PB6PB7PA0PA1PA2PA3PA4PA5PA6PA7PC0PC1PC2PC3PC4PC5PC6PC711223344556677Vss 899101011111212131314141515Vdd 16s w 8K401SW8AD0AD1AD2AD3AD4AD5AD6AD7D0D1D2D3D4D5D6D7D03D14D27D38D413D514D617D718OE 1CP 11Q02Q15Q26Q39Q412Q515Q616Q719VCC 20GND 10U40874LS373R4081K R4091K R4101K R4111K R4121K R4131K R4141K R4151KR4161K R4171K R4181K R4191K R4201K R4211K R4221K R4231KVCCPA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7D0D1A0A1GND ALE V401LED V402LED V403LED V404LED V405LED V406LED V407LED V408LED VCCC404104C405104+C40610u R42410KVCCGND D034D133D232D331D430D529D628D727PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC710RD 5WR 36A09A18RESET 35CS6GND 7VCC26U4078255AS405SW-PB S406SW-PB S407SW-PB S408SW-PB S409SW-PB S410SW-PB S411SW-PB S412SW-PB GNDGND VCCVCCGNDGND612J408CON2R4274.7KVCC图8-9 8255应用原理图2.实验内容1)将扩展板的电源J501与主板的电源接口J2或J14连接起来;将扩展板的信号接口J500与主板的信号接口J15或J13连接起来。

实验七 8255并行IO接口

实验七  8255并行IO接口

实验七8255并行I/O口一、实验目的8255可编程并行I/O接口有三个通道和三种工作方式.其中A,B通道和外设交换数据,C 通道和外设交换状态信息。

8255并行I/O接口与外设交换的方式由软件预先设置,该过程称为初始化.1.学会正确使用8255和CPU及外设的接口方法,2.掌握8255的编程原理,3.熟悉外设的信息通过8255和CPU的交换过程二、实验内容1.用8255的A端口控制8个LED发光二极管的循环亮灭.其硬件线路连接如图4.2所示2.编程:要求通过软件延时程序控制8个指示灯周而复始的循环点亮.3.编程提示8255的控制字如下:Array三、程序框图略四、程序清单;FILENAME:8255.ASM;THIS PROGRAM IS USED FOR TEST OUTPUT OF 8255'S A PORT;NOTICE:;CHIP:8255;CS--Y2(74LS138):210H--217H;PA0--PA7==LEDPORT_8255_A EQU 210HPORT_8255_B EQU 211HPORT_8255_C EQU 212HCONTROL_PORT_8255 EQU 213HDA TA SEGMENT PARA 'DATA'BUFFER DB 100 DUP(?)DA TA ENDSSTACK SEGMENT PARA STACK 'STACK'STA DB 1024 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENT PARA 'CODE'ASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DATA MAIN PROC FARBEGIN:MOV AX,DA TAMOV DS,AXMOV AX,STACKMOV SS,AXMOV SP,TOPMOV DX,CONTROL_PORT_8255MOV AL,10000000B ;A PORT:MODE 0,OUTPUTOUT DX,ALMOV DX,PORT_8255_AMOV AL,0FFHOUT DX,ALMOV AL,0FEHMOV CX,0A0HAGAIN3:OUT DX,ALMOV BX,0A0H ;DELAY TIMEAGAIN2:MOV SI,2FFFHAGAIN1:NOPNOPDEC SIJNZ AGAIN1DEC BXJNZ AGAIN2 ;DELAY TIME ENDSROL AL,1DEC CXJNZ AGAIN3MOV DX,PORT_8255_AMOV AL,0FFH ;CLOSE LEDOUT DX,ALMOV AX,4C00H ;RETURNINT 21H MAIN ENDP CODE ENDSEND BEGIN。

实验七 8255A 并行口实验

实验七  8255A 并行口实验

实验七8255A 并行口实验(二)一、实验目的掌握通过8255A 并行口传输数据的方法,以控制发光二极管的亮与灭。

二、实验内容用8255 做输出口,控制十二个发光管亮灭,模拟交通灯管理。

三、实验程序CODE SEGMENTASSUME CS:CODEIOCONPT EQU 0FF2BH;8255控制口IOAPT EQU 0FF28H;PA口IOBPT EQU 0FF29H;PB口IOCPT EQU 0FF2AH;PC口ORG 11E0HSTART: MOV AL,82H;PB输入,PA,PC输出MOV DX,IOCONPTOUT DX,AL;写命令字MOV DX,IOBPT;读PB口IN AL,DXMOV BYTE PTR DS:[0601H],AL;保存PBMOV DX,IOCONPT;8255控制口MOV AL,80HOUT DX,AL;写命令字,PA,PB,PC输出MOV DX,IOBPTMOV AL,DS:[0601H]OR AL,0F0HOUT DX,AL;将读入的PB状态重新置到PB上MOV DX,IOCPTMOV AL,0F0HOUT DX,AL;四路口红灯全亮CALL DELAY1;延时IOLED0:MOV AL,10100101BMOV DX,IOCPTOUT DX,AL;南北绿灯亮,东西红灯亮;-----------------------------------------------CALL DELAY1;延时CALL DELAY1;延时CALL DELAY1;延时CALL DELAY1;延时CALL DELAY1;延时CALL DELAY1;延时;------------------------此处为南北绿灯亮的时间-------------OR AL,0F0HOUT DX,AL;南北绿灯灭,东西红灯亮MOV CX,8IOLED1:MOV DX,IOBPTMOV AL,DS:[0601H]AND AL,10101111BOUT DX,AL;南北黄灯亮,东西黄灯亮CALL DELAY2;延时 --------------南北黄灯闪烁时间OR AL,01010000BOUT DX,AL;南北黄灯灭,东西黄灯灭CALL DELAY2;延时LOOP IOLED1;南北黄灯闪烁8次MOV DX,IOCPTMOV AL,0F0HOUT DX,AL;四路口红灯全亮;----------------------------------------------------------CALL DELAY2;延时;----------------------此处为四路口红灯全亮时间---------------- MOV AL,01011010BOUT DX,AL;东西绿灯亮,南北红灯亮;---------------------------------------------------------CALL DELAY1;延时CALL DELAY1;延时CALL DELAY1;延时CALL DELAY1;延时CALL DELAY2;延时CALL DELAY2;延时CALL DELAY2;延时CALL DELAY2;延时CALL DELAY2;延时CALL DELAY2;延时CALL DELAY2;延时CALL DELAY2;延时;----------------------此处为东西绿灯亮的时间-----------------------------------OR AL,0F0HOUT DX,AL;东西绿灯灭MOV CX,8IOLED2:MOV DX,IOBPTMOV AL,DS:[0601H]AND AL,01011111BOUT DX,AL;东西黄灯亮,CALL DELAY2;延时 --------------东西黄灯闪烁时间OR AL,10100000BOUT DX,AL;东西黄灯灭,CALL DELAY2;延时LOOP IOLED2;东西黄灯闪烁8次,南北黄灯亦然MOV DX,IOCPTMOV AL,0F0HOUT DX,AL;四路口红灯全亮;---------------------------------------------------------- CALL DELAY2;延时;----------------------此处为四路口红灯全亮时间------------ JMP IOLED0;循环继续DELAY1:PUSH AXPUSH CXMOV CX,0030HDELY2:CALL DELAY2;延时,DELAY1延时是DELAY2的48倍LOOP DELY2POP CXPOP AXRETDELAY2:PUSH CXMOV CX,8000HDELA1:LOOP DELA1POP CXRETCODE ENDSEND START四、实验结果本实验实现了双路口的,交通灯循环。

微机实验 可编程并行接口8255

微机实验  可编程并行接口8255

微机原理实验报告实验题目:可编程并行接口8255一、实验目的1、掌握8255的基本输入输出和PC端口位控的工作方式及应用编程。

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

二、实验知识回顾8255控制字1、控制方式2、C端口置位复位控制字三、实验内容1、 8255流水灯显示,首先用逻辑电平开关预置一个数字,从A口读入,写入01H到C端口上,左移一次在进行输出,A口读入数据作为左移次数,这样循环下去,从而实现流水灯的显示。

2、用PC端口位控制法控制LED灯,依次点亮LED灯。

四、实验器材微机原理实验箱1个电脑(带TPC-USB软件)1台插线若干五、实现过程1、8255流水灯显示(1)流程图(2)程序源代码io8255a equ 2a0h ;8255A口地址io8255b equ 2a1h ;8255B口地址io8255c equ 2a2h ;8255C口地址io8255mode equ 2a3h ;控制寄存器地址stack1 segment stackdw 256 dup(?)stack1 endsdata segmentla db ? ;定义数据变量lb db ?data endscode segmentassume cs:code,ds:datastart:mov ax,data ;程序由start处开始mov ds,axmov dx,io8255mode ;定义8255的工作方式mov al,90h ;方式0A口输入C口输出out dx,al ;mov dx,io8255a ;A口的地址存入dxin al,dx ;从dx也就是A口读入数据mov la,al ;读入的数据暂存在la变量mov dx,io8255c ;C口的地址存入dxmov al,01h ;将寄存器最低位置零out dx,al ;置位后的值输入给dx,也就是C口mov lb,al ;置位后的值暂存于变量lbloop1:call delaymov al,la ;将A口数据写入CX用以计数mov ch,00hmov cl,laloop2:call delaymov al,lbrol al,1 ;在寄存器内进行位移操作mov lb,al ;将操作后的结果重新写入变量al,为后面调用做准备mov dx,io8255c ;dx代表C口的地址out dx,al ;将al中存储的值写入dx,即C口mov ah,1 ;选择dos的模式为从键盘读取数据int 16h ;进入中断jnz quit ;ZF为0则跳到quitdec cx ;计数器减一jnz loop2 ;若cx!=0,跳到loop2quit:mov ax,4c00h ;结束程序并退出int 21hdelay proc near ;延时子程序push cxpush axmov cx,01fhd1: mov ax,0ffffhd2: dec axjnz d2loop d1pop axpop cxretdelay endpcode endsend start2、位控设置C口输出点亮LED(1)流程图(2)程序源代码io8255a equ 2a0h ;8255A口地址io8255b equ 2a1h ;8255B口地址io8255c equ 2a2h ;8255C口地址io8255mode equ 2a3h ;控制寄存器地址stack1 segment stackdw 256 dup(?)stack1 endsdata segmentla db ? ;定义数据变量lb db ?data endscode segmentassume cs:code,ds:datastart:mov ax,data ;程序由start处开始mov ds,axmov dx,io8255mode ;定义8255的工作方式mov al,00001111b ;位控设置C口最高位为1out dx,almov cx,7 ;剩余未点亮灯数为7 loop1:call delaydec aldec alout dx,aldec cxjnz loop1delay proc near ;延时子程序push cxpush axmov cx,01fhd1: mov ax,0ffffhd2: dec axjnz d2loop d1pop axpop cxretdelay endpcode endsend start(3)实验结果图六、小结通过本次试验,我进一步了解了8255的可编程性,以及如何正确的通过程序控制8255,也更加熟悉了8255 C 端口的位控输出。

微机原理与接口实验-4.1-IO端口扩展-8255-赖晓铮

微机原理与接口实验-4.1-IO端口扩展-8255-赖晓铮
控制字:PA输入/PB输出 /PC高四位输出低四位输入
选PB口:A1A0=01
初始化PB口,LED全灭
(M地址:机器指令) 00H:00110000 01H:10000110 02H:01010010 03H:00110000 04H:10010001 05H:01010000 06H:00110000 07H:10000010 08H:01010010 09H:00110000 0AH:11111111 0BH:01010000
keyboard
汇编助记符
注释
(M地址:机器指令)
HLT XOR R0, R1
JZ 33H
按键要保持到此断点后才能松开! 无键按下,R0是,R0=R1
有键按下,R0低四位1110/1101/1011/0111
行输出1001无键按下,跳转 L2:
23H:00000001 24H:10110001 25H:00011000 26H:00110011
重启过程(跳出“断点”)
1) 时钟信号CLK接开关MANUAL,手 动令复位信号端#RESET的状态 “101”变化,即重启完成, 跳出“断点”继续执行 。
注:跳出“断点”后,CPU进入HLT指令的 后续下一条指令的取指周期。
8255应用电路图
可编程并行IO接口芯片8255A结构图
#CS #RD #WR A1 A0 0 0 1 00 0 0 1 01 0 0 1 10 0 1 0 00 0 1 0 01 0 1 0 10 0 1 0 11 1 X X XX
微程序版“CPU+8255”电路图
初始化过程
1) 时钟信号CLK接手动开关MANUAL,启动仿真,使能复位信号 #RESET=0;
2) 手动按钮MANUAL开关“010”,然后令信号#RESET=1.

微机原理实验 可编程并行接口 8255 实验

微机原理实验 可编程并行接口 8255 实验
(4)读写控制逻辑:用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。
2、8255A的工作方式:
方式0—基本输入输出方式;方式1—选通输入输出方式;方式2—双向选通输入输出方式
3、8255A的状态字:
图1可编程并行接口8255电路
五、实验电路及连线
1、流水灯实验:
(1)实验连线
该模块的WR、RD分别连到MCU主模块的WR、RD。
该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到MCU主模块的数据(AD0~AD7)、地址线(A0~A7)。
8255模块选通线CS连到MCU主模块的地址A15。
8255的PA0~PA7连到发光二极管的L0~L7。
(2)三个端口A,B和C:A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。C端口包含一个8位数据输出锁存器及缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。
(3)A组和B组控制电路:这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。方式控制字的高5位决定A组工作方式,低3位决定B组的工作方式。对C口按位复位命令字可对C口的每一位实现置位或复位。A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部
(2) I/O输入输出实验:利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示
四、实验原理
1、8255A的内部结构:
(1)数据总线缓冲器:这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。输入输的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验七8255 并行I/O扩展实验
一、实验要求
利用8255 可编程并行口芯片,实现输入、输出实验,实验中用8255PA 口作读取开关状态输入,8255PB 口作控制发光二极管输出。

二、实验目的
1、了解8255 芯片结构及编程方法。

2、了解8255 输入、输出实验方法。

三、实验电路及连线
1、Proteus 实验电路
2、硬件验证实验
硬件连接表
四、实验说明
1、8255A 芯片简介:8255A 可编程外围接口芯片是INTEL 公司生产的通用并行接口芯片,它具有A、B、C 三个并行接口,用+5V 单电源供电,能在以下三种方式下工作:
方式0:基本输入/ 输出方式
方式l:选通输入/ 输出方式
方式2:双向选通工作方式
2、使8255A 端口A 工作在方式0 并作为输入口,读取Kl-K8 个开关量,PB 口工作在方式0作为输出口。

五、实验程序流程图
六、实验步骤
1、Proteus 仿真
a.在Proteus 中打开设计文档8255_STM.DSN;
b.建立实验程序并编译,仿真;
c.如不能正常工作,打开调试窗口进行调试。

参考程序:
CODE SEGMENT
ASSUME CS:CODE
IOCON EQU 8006H
IOA EQU 8000H
IOB EQU 8002H
IOC EQU 8004H START:
MOV AL,90H
MOV DX,IOCON
OUT DX,AL
NOP
START1:
NOP
NOP
MOV AL,0
MOV DX,IOA
IN AL,DX
NOP
NOP
MOV DX,IOB
OUT DX,AL
JMP START1 CODE ENDS
END START
2、实验板验证
a.通过USB 线连接实验箱
b.按连接表连接电路
c.运行PROTEUS 仿真,检查验证结果。

相关文档
最新文档