微机原理实验 可编程并行接口 8255 实验
微机实验_8255并行输入输出

实验六8255并行输入输出一、实验目的1)掌握8255方式0的工作原理及使用方法,利用直接输入输出进行控制显示。
2)掌握8段数码管的动态刷新显示控制。
3)分析掌握8255工作方式1时的使用及编程,进一步掌握中断处理程序的编写。
二、实验内容(1)8255方式0:简单的输入输出按图连接好电路,8255C口输入接逻辑电平开关K0~K7,编程A口输出接LED 显示电路L0~L7;用指令从C口输入数据,再从A口输出。
程序为:ioport equ 0b800h-0280hio8255a equ ioport+288hio8255b equ ioport+28bhio8255c equ ioport+28ahstacks segment stackdb 100 dup(?)stacks endscode segmentassume cs:code,ss:stacks main proc farstart: mov ax,stacksmov ss,axmov dx,io8255bmov al,8bh out dx,al inout: mov dx,io8255c in al,dxmov dx,io8255a out dx,almov dl,0ffhmov ah,06hint 21hjz inoutmov ah,4chint 21hmain endpcode endsend start运行结果为:用逻辑电平开关可以控制LED灯的亮灭。
(2)电路图如(1)图,编程将A口L0~L7控制成流水灯,流水间隔由软件产生,流水方向由K0键产生,流水间隔时间也可由K4~K7键编码控制。
程序为:data segmentioport equ 0b800h-0280h io8255a equ ioport+288h io8255b equ ioport+28bh io8255c equ ioport+28ah data endsstacks segment stackdb 100 dup (?)stacks endscode segmentassumecs:code,ds:data,ss:stacks start: mov ax,stacksmov ss,axmov dx,io8255bmov al,8bhout dx,alinout: mov cl,01hmov dx,io8255cin al,dxtest al,01jne rightjmp leftright: mov dx,io8255cin al,dxand al,11110000b cmp al,00h je rightmov al,clcall delay1 rol cl,1 mov dx,io8255c in al,dx test al,01 jne right jmp left left: mov dx,io8255c in al,dx and al,11110000b cmp al,00h je left mov al,cl call delay1 ror cl,1 mov dx,io8255c in al,dx test al,01 jne right jmp left delay1 proc near mov dx,io8255aout dx,alcall delaymov al,0out dx,alcall delayretdelay1 endpdelay proc near push cxpush bxmov bx,0fffhcc: mov cx,0ffffhccc: loop cccdec bxjnz ccpop bxpop cxretdelay endpcode endsend start运行结果为:K0控制流水方向,K4~K7为0000时停止,0001时为1秒。
实验三、8255A并行接口实验

实验结论
通过本次实验,我们验证了8255A并行接口芯片的基本功能和工作原理。
实验结果证明了8255A芯片可以实现并行数据传输,并且可以通过设置不 同的端口模式来实现不同的输入输出功能。
在实际应用中,8255A芯片可以作为并行数据传输的重要接口之一,广泛 应用于各种数字电路和微机控制系统中。
05
实验总结与展望
等。
学习如何设置8255a并行接口芯 片的控制字,掌握其工作模式和
特点。
理解8255a并行接口芯片在计算 机中的重要性和作用,以及与其
他接口芯片的区别和联系。
掌握8255a并行接口芯片的工作原理
了解8255a并行接口芯片的基本 结构和工作原理,包括输入/输 出端口、控制寄存器和数据总线
等。
学习如何设置8255a并行接口芯 片的控制字,掌握其工作模式和
缺乏实验指导
实验过程中,我们遇到了一些难 以解决的问题,如果能有更多的 实验指导资料或教师指导,将有 助于我们更好地有限,我们未能充 分探索8255a并行接口的更多功 能和应用场景,建议增加实验时 间,以便我们有更多的机会深入 了解该芯片。
实验不足与改进建议
实验难度不够
学习如何使用8255a并行接口芯片进行硬件控制
学习如何使用8255a并行接口 芯片进行输入/输出操作,包括 读取和写入数据。
掌握如何通过8255a并行接口 芯片控制外部硬件设备,如 LED灯、继电器等。
了解如何将8255a并行接口芯 片与其他芯片连接,实现硬件 的扩展和控制。
了解并行接口在计算机中的作用和重要性
实验三
将端口B和端口C设置为输入,端口A设置为输出。 当在端口B和端口C上施加不同的电平时,端口A 的输出与端口C的输入相同。
实验四 8255并行接口实验

实验四 8255控制实验一、实验目的与要求1、了解8255芯片的工作原理,熟悉其初始化编程方法以及输入、输出程序设计技巧。
学会使用8255并行接口芯片实现各种控制功能。
2、熟悉8255内部结构和与8088的接口逻辑,熟悉8255芯片的3种工作方式以及控制字格式。
3、认真预习本节实验内容,尝试自行编写程序,填写实验报告。
二、实验设备STAR系列实验仪一套、PC机一台三、实验内容1、将8255的PA口与G6区的8个开关相连,PB口连接G6区的8个LED灯,要求实现:从A口读入开头的状态,并根据此状态控制B口的LED灯的亮灭。
(1)连线说明:B4区:PB口——G6区:开关B4区:PB口——G6区:LED指示灯B4区:CS、A0、A1 ——A3区:CS1、A0、A1(2)8255控制字说明:(3)编写程序,并描述运行结果。
1121e 1d 2dp3c 4g 56b 789a b c g d dpf 10a b f cg dedpa 11GND3ab fc g dedp12GND4a b f c g dedpGND1GND2LG4041AHDS293141516171811222324252627282e 1d 2dp3c 4g 56b 789a b c g d dpf 10a b f cg dedpa 11GND3ab fc g dedp12GND4a b f c g d edpGND1GND2LG4041AHDS3012345678JP4112345678JP4712345678JP42SEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGHSEGA SEGB SEGC SEGD SEGE SEGG SEGF SEGHACB12345678JP92D。
试验八8255可编程并行接口试验二

计算机与电子信息工程系二〇一二年三月目录实验一 P1口实验一1实验二 P1口实验二3实验三简单I/O扩展实验〔交通灯控制〕5实验四简单I/O扩展实验二8实验五定时器实验〔循环彩灯〕10实验六 8255A可编程并行接口实验112实验七 8255可编程并行接口实验213实验八数码显示实验17实验九 D/A转换实验21实验十 8253定时器实验25实验一 P1口实验一[实验目的]⒈学习P1口的使用方法.⒉学习延时子程序的编写和使用.[实验设备]EL-8051-III型单片机实验箱[实验内容]⒈P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮.⒉P1口做输入口,接八个按纽开关,以实验箱上74LS273做输出口,编写程序读取开关状态,在发光二极管上显示出来.[实验原理]P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位.作为输入位时,必须向锁存器相应位写入"1〞,该位才能作为输入.8031中所有口锁存器在复位时均置为"1〞,如果后来在口锁存器写过"0〞,在需要时应写入一个"1〞,使它成为一个输入.可以用第二个实验做一下实验.先按要求编好程序并调试成功后,可将P1口锁存器中置"0〞,此时将P1做输入口,会有什么结果.再来看一下延时程序的实现.现常用的有两种方法,一是用定时器中断来实现,一是用指令循环来实现.在系统时间允许的情况下可以采用后一种方法.本实验系统晶振为6.144MHZ,则一个机器周期为12÷6.144us即1÷0.512us.现要写一个延时0.1s的程序,可大致写出如下:MOV R7,#X 〔1〕DEL1:MOV R6,#200 〔2〕DEL2:DJNZ R6,DEL2 〔3〕DJNZ R7,DEL1 〔4〕上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需要1÷0.256us,现求值:1÷0.256+X〔1÷0.256+200×1÷0.256+1÷0.256〕=0.1×10?指令〔1〕指令〔2〕指令〔3〕指令〔4〕所需时间所需时间所需时间所需时间=<0.1××10?-1÷0.256>/〔1÷0.256+200×1÷0.256+1÷0.256〕=127D=7FH 经计算得X=127.代入上式可知实际延时时间约为0.100215s,已经很精确了.[实验原理图][实验步骤]执行程序1<T1_1.ASM>时:P1.0~P1.7接发光二极管L1~L8.执行程序2<T1_1.ASM>时:P1.0~P1.7接平推开关K1~K8;74LS273的O0~O7接发光二极管L1~L8;74LS273的片选端CS273接CS0.[程序框图][参考程序]⒈循环点亮发光二极管NAME T1_1CSEG AT 0000HLJMP STARTCSEG AT 4100HSTART: MOV A,#0FEHLOOP: RR AMOV P1,ALCALL DELAYJMP LOOPDELAY: MOV R1,#127DEL1: MOV R2,#200DEL2: DJNZ R2,DEL2DJNZ R1,DEL1RETEND⒉通过发光二极管将P1口的状态显示NAME T1_2 ;P1口输入实验OUT_PORT EQU 0CFA0HCSEG AT 0000HLJMP STARTCSEG AT 4100HSTART: MOV P1,#0FFH ;复位P1口为输入状态MOV A,P1 ;读P1口的状态值入累加器AMOV DPTR,#OUT_PORT ;将输出口地址赋给地址指针DPTRMOVX DPTR,A ;将累加器A的值赋给DPTR指向的地址JMP START ;继续循环监测端口P1的状态END实验二 P1口实验二[实验目的]⒈学习P1口既做输入又做为输出的使用方法.⒉学习数据输入、输出程序的设计方法.[实验设备]EL-8051-III型单片机实验箱[实验原理]P1口的使用方法这里不讲了.有兴趣者不妨将实验例程中的"SETB P1.0, SETB P1.1〞中的"SETB〞改为"CLR〞看看会有什么结果.另外,例程中给出了一种N路转移的常用设计方法,该方法利用JMPA+DPTR 的计算功能,实现转移.该方法的优点是设计简单,转移表短,但转移表大小加上各个程序长度必须小于256字节.[实验原理图][实验步骤]平推开关的输出K1接P1.0;K2接P1.1;发光二极管的输入L1接P1.2;L2接P1.3;L5接P1.4;L6接P1.5.运行实验程序,K1做为左转弯开关,K2做为右转弯开关.L5、L6做为右转弯灯,L1、L2做为左转弯灯.结果显示:⒈1接高电平K2接低电平时,右转弯灯〔L5、L6〕灭,左转弯灯〔L1、L2〕以一定频率闪烁;⒉K2接高电平K1接低电平时,左转弯灯〔L1、L2〕灭,右转弯灯〔L5、L6〕以一定频率闪烁;⒊K1、K2同时接低电平时,发光二极管全灭;⒋K1、K2同时接高电平时,发光二极管全亮.[程序框图][参考程序]NAME T2 ;P1口输实验CSEG AT 0000HLJMP STARTCSEG AT 4100HSTART: SETB P1.0SETB P1.1 ;用于输入时先置位口内锁存器MOV A,P1ANL A,#03H ;从P1口读入开关状态,取低两位MOV DPTR,#TAB ;转移表首地址送DPTRMOVC A,A+DPTRJMP A+DPTRTAB: DB PRG0-TABDB PRG1-TABDB PRG2-TABDB PRG3-TABPRG0: MOV P1,#0FFH ;向P1口输出0,发光二极管全灭;此时K1=0,K2=0 JMP STARTPRG1: MOV P1,#0F3H ;只点亮L1、L2,表示左转弯ACALL DELAY ;此时K1=1,K2=0MOV P1,#0FFH ;再熄灭0.5秒ACALL DELAY ;延时0.5秒JMP STARTPRG2: MOV P1,#03FH ;只点亮L5、L6,表示右转弯ACALL DELAY ;此时K1=0,K2=1MOV P1,#0FFHAALL DELAYJMP STARTPRG3: MOV P1,#00H ;发光二极管全亮,此时K1=1,K2=1JMP STARTDELAY: MOV R1,#5 ;延时0.5秒DEL1: MOV R2,#200DEL2: MOV R3,#126DEL3: DJNZ R3,DEL3DJNZ R2,DEL2DJNZ R1,DEL1RETEND实验三简单I/O扩展实验〔交通灯控制〕[实验题目]扩展实验箱上的74LS273做为输出口,控制八个发光二极管燃灭,模拟交通灯.[实验目的]⒈学习在单片机系统中扩展简单I/O接口的方法.⒉学习数据输出程序的设计方法.⒊学习模拟交通灯控制的实现方法.[实验原理].要完成本实验,首先必须了解交通路灯的燃灭规律.本实验需要用到实验箱上八个发光二极管中的六个,即红、黄、绿各两个.不妨将L1、L3、L5做为东西方向的指示灯,将L2、L4、L6做为南北方向的指示灯.而交通灯的燃灭规律为:初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁.闪烁若干次后,东西路口的红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁,闪烁若干次后,再切换到东西路口方向,重复上述过程.各发光二极管共阳极,阴极接有与非门,因此使其点亮使相应输入端为高电平.[实验原理图][实验步骤]74LS273的输出O0~O7接发光二极管L1~L8,74LS273的片选CS273接片选信号CSO,此时74LS273的片选地址为CFA0H~CFA7H之间任选.运行实验程序,观察LED显示情况是否与实验内容相符.[程序框图][参考程序]NAME T3 ;I/O口扩展实验一PORT EQU 0CFA0H ;片选地址CS0CSEG AT 0000HLJMP STARTCSEG AT 4100HSTART: MOV A,#11H ;两个红灯亮,黄灯、绿灯灭ACALL DISP ;调用273显示单元〔以下雷同〕ACALL DE3S ;延时3秒LLL: MOV A,#12H ;东西路口绿灯亮;南北路口红灯亮ACALL DISPACALL DE10S ;延时10秒MOV A,#10H ;东西路口绿灯灭;南北路口红灯亮ACALL DISPMOV R2,#05H ;R2中的值为黄灯闪烁次数TTT: MOV A,#14H ;东西路口黄灯亮;南北路口红灯亮ACALL DISPACALL DE02S ;延时0.2秒MOV A,#10H ;东西路口黄灯灭;南北路口红灯亮ACALL DISPACALL DE02S ;延时0.2秒DJNZ R2,TTT ;返回TTT,使东西路口;黄灯闪烁五次MOV A,#11H ;两个红灯亮,黄灯、绿灯灭ACALL DISPACALL DE02S ;延时0.2秒MOV A,#21H ;东西路口红灯亮;南北路口绿灯亮ACALL DISPACALL DE10S ;延时10秒MOV A,#01H ;东西路口红灯亮;南北路口绿灯灭ACALL DISPMOV R2,#05H ;黄灯闪烁五次GGG: MOV A,#41H ;东西路口红灯亮;南北路口黄灯亮ACALL DISPACALL DE02S ;延时0.2秒MOV A,#01H ;东西路口红灯亮;南北路口黄灯灭ACALL DISPACALL DE02S ;延时0.2秒DJNZ R2,GGG ;返回GGG,使南北路口;黄灯闪烁五次MOV A,#03H ;两个红灯亮,黄灯、绿灯灭ACALL DISPACALL DE02S ;延时0.2秒JMP LLL ;转LLL循环DE10S: MOV R5,#100 ;延时10秒JMP DE1DE3S: MOV R5,#30 ;延时3秒JMP DE1DE02S: MOV R5,#02 ;延时0.2秒DE1: MOV R6,#200DE2: MOV R7,#126DE3: DJNZ R7,DE3DJNZ R6,DE2DJNZ R5,DE1RETDISP: MOV DPTR,#PORT ;273显示单元CPL AMOVX DPTR,A RETEND实验四简单I/O扩展实验二[实验题目]利用74LS244做为输入口,读取开关状态,并将此状态通过发光二极管显示出来.[实验目的]⒈学习在单片机系统中扩展简单I/O口的方法.⒉学习数据输入,输出程序的编制方法.[实验原理]MCS-51外部扩展空间很大,但数据总线口和控制信号线的负载能力是有限的.若需要扩展的芯片较多,则MCS-51总线口的负载过重,74LS244是一个扩展输入口,同时也是一个单向驱动器,以减轻总线口的负担.程序中加了一段延时程序,以减少总线口读写的频繁程度.延时时间约为0.01秒,不会影响显示的稳定.[实验原理图][实验步骤]⒈74LS244的IN0~IN7接开关的K1~K8,片选信号CS244接CS1.⒉74LS273的O0~O7接发光二极管的L1~L8,片选信号CS273接CS2.⒊编程、全速执行.⒋拨动开关K1~K8,观察发光二极管状态的变化.[程序框图][参考程序]NAME T4 ;I/O口扩展实验CSEG AT 0000HLJMP STARTCSEG AT 4100HINPORT EQU 0CFA8H ;74LS244端口地址OUTPORT EQU 0CFB0H ;74LS273端口地址START: MOV DPTR,#INPORTLOOP: MOVX A,DPTR ;读开关状态MOV DPTR,#OUTPORTMOVX DPTR,A ;显示开关状态MOV R7,#10H ;延时DEL0: MOV R6,#0FFHDEL1: DJNZ R6,DEL1DJNZ R7,DEL0JMP STARTEND实验五定时器实验〔循环彩灯〕[实验题目]由8031内部定时器1按方式1工作,即作为16位定时器使用,每0.1秒钟T1溢出中断一次.P1口的P1.0~P1.7分别接发光二极管的L1~L8.要求编写程序模拟一循环彩灯.[实验目的]⒈学习8031内部计数器的使用和编程方法.⒉进一步掌握中断处理程序的编写方法.[有关说明]P彩灯变化花样可自行设计.例程给出的变化花样为:①L1、L2、…L8依次点亮;②L1、L2、…L8依次熄灭;③L1、L2、…L8全亮、全灭.各时序间隔为0.5秒.让发光二极管按以上规律循环显示下去.[连线方法]P1.0~P1.7分别接发光二极管L1~L8.[实验电路][程序框图]〔中断程序框图〕<主程序框图>[参考程序]NAME T6 ;定时器实验OUTPORT EQU 0CFB0HCSEG AT 0000HLJMP STARTCSEG AT 401BH ;定时器/计数器1中断程序入口地址LJMP INTCSEG AT 4100HSTART: MOV A,#01H ;首显示码MOV R1,#03H ;03是偏移量,即从基址寄存器到表首的距离MOV R0,#5H ;05是计数值MOV TMOD,#10H ;计数器置为方式1MOV TL1,#0AFH ;装入时间常数MOV TH1,#03CHORL IE,#88H ;CPU中断开放标志位和定时器;1溢出中断允许位均置位SETB TR1 ;开始计数LOOP1: CJNE R0,#00,DISPMOV R0,#5H ;R0计数计完一个周期,重置初值INC R1 ;表地址偏移量加1CJNE R1,#31H,LOOP2MOV R1,#03H ;如到表尾,则重置偏移量初值LOOP2: MOV A,R1 ;从表中取显示码入累加器MOVC A,A+PCJMP DISPDB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0FEH,0FCHDB 0F8H,0F0H,0E0H,0C0H,80H,00H,0FFH,00H,0FEHDB 0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH DB 0EFH,0F7H,0FBH,0FDH,0FEH,00H,0FFH,00HDISP: ;MOV DPTR,#OUTPORTMOVX DPTR,AMOV P1,A ;将取得的显示码从P1口输出显示JMP LOOP1INT: CLR TR1 ;停止计数DEC R0 ;计数值减一MOV TL1,#0AFH ;重置时间常数初值MOV TH1,#03CHSETB TR1 ;开始计数RETI ;中断返回END实验六 8255A可编程并行接口实验1[实验题目]利用8255A可编程并行接口芯片,重复实验四的内容.实验可用B通道作为开关量输入口,A通道作为显示输出口.[实验目的]⒈了解8255A芯片的结构与编程方法.⒉掌握通过8255A并行口读取开关数据的方法.[有关说明]设置好8255A各端口的工作模式.实验中应当使三个端口都工作于方式0,并使A口为输出口,B口为输入口.[连线方法]8255A的PA0~PA7接发光二极管L1~L8;PB0~PB7接开关K1~K8;片选信号8255CS接CS0.[实验电路][程序框图][参考程序]NAME T7 ;8255A实验一CSEG AT 0000HLJMP STARTCSEG AT 4100HPA EQU 0CFA0HPB EQU 0CFA1HPCTL EQU 0CFA3HSTART: MOV DPTR,#PCTL ;置8255A控制字,A、B、C口均工作;方式0,A、C口为输出,B口为输入MOV A,#082HMOVX DPTR,ALOOP: MOV DPTR,#PB ;从B口读入开关状态值MOVX A,DPTRMOV DPTR,#PA ;从A口将状态值输出显示MOVX DPTR,AMOV R7,#10H ;延时DEL0: MOV R6,#0FFHDEL1: DJNZ R6,DEL1DJNZ R7,DEL0JMP LOOPEND实验七 8255可编程并行接口实验2[实验目的]⒈掌握8255A编程原理.⒉了解键盘电路的工作原理.⒊掌握键盘接口电路的编程方法.[实验设备]EL-8051-III型单片机实验箱[实验原理]⒈识别键的闭合,通常采用行扫描法和行反转法.行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如所读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行. 本实验例程采用的是行反转法.行反转法识别键闭合时,要将行线接一并行口,先让它工作于输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口往各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0.然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上的输入值,那么,在闭合键所在的行线上的值必定为0.这样,当一个键被按下时,必定可以读得一对唯一的行线值和列线值.⒉程序设计时,要学会灵活地对8255A的各端口进行方式设置.⒊程序设计时,可将各键对应的键值〔行线值、列线值〕放在一个表中,将要显示的0~F字符放在另一个表中,通过查表来确定按下的是哪一个键并正确显示出来.[实验题目]利用实验箱上的8255A可编程并行接口芯片和矩阵键盘,编写程序,做到在键盘上每按一个数字键〔0~F〕,用发光二极管将该代码显示出来.[实验步骤]将键盘RL10~RL17接8255A的PB0~PB7;KA10~KA12接8255A的PA0~PA2;PC0~PC7接发光二极管的L1~L8;8255A芯片的片选信号8255CS接CS0.[实验电路][程序框图][参考程序]NAME t8 ;8255键盘实验PA EQU 0CFA0HPB EQU PA+1PC0 EQU PB+1PCTL EQU PC0+1CSEG AT 4000HLJMP STARTNAME t8 ;8255键盘实验PA EQU 0CFA0HPB EQU PA+1PC0 EQU PB+1PCTL EQU PC0+1CSEG AT 4000HLJMP STARTCSEG AT 4100HSTART: MOV 42H,#0FFH ;42H中放显示的字符码,初值为0FFH STA1: MOV DPTR,#PCTL ;设置控制字,ABC口工作于方式0;AC口输出而B口用于输入MOV A,#82HMOVX DPTR,ALINE: MOV DPTR,#PC0 ;将字符码从C口输出显示MOV A,42HCPL AMOVX DPTR,AMOV DPTR,#PA ;从A口输出全零到键盘的列线MOVX DPTR,AMOV DPTR,#PB ;从B口读入键盘行线值MOVX A,DPTRMOV 40H,A ;行线值存于40H中CPL A ;取反后如为全零;表示没有键闭合,继续扫描JZ LINEMOV R7,#10H ;有键按下,延时10MS去抖动DL0: MOV R6,#0FFHDL1: DJNZ R6,DL1DJNZ R7,DL0MOV DPTR,#PCTL ;重置控制字,让A为输入,BC为输出MOV A,#90HMOVX DPTR,AMOV A,40HMOV DPTR,#PB ;刚才读入的行线值取出从B口送出MOVX DPTR,AMOV DPTR,#PA ;从A口读入列线值MOVX A,DPTRMOV 41H,A ;列线值存于41H中CPL A ;取反后如为全零JZ STA1 ;表示没有键按下MOV DPTR,#TABLE ;TABLE表首地址送DPTRMOV R7,#18H ;R7中置计数值16MOV R6,#00H ;R6中放偏移量初值TT: MOVX A,DPTR ;从表中取键码前半段字节,行线值与实CJNE A,40H,NN1 ;际输入的行线值相等吗?不等转NN1INC DPTR ;相等,指针指向后半字节,即列线值MOVX A,DPTR ;列线值与实际输入的列线值CJNE A,41H,NN2 ;相等吗?不等转NN2MOV DPTR,#CHAR ;相等,CHAR表基址和R6中的偏移量MOV A,R6 ;取出相应的字符码MOVC A,A+DPTRMOV 42H,A ;字符码存于42HBBB: MOV DPTR,#PCTL ;重置控制字,让AC为输出,B为输入MOV A,#82HMOVX DPTR,AAAA: MOV A,42H ;将字符码从C口送到二极管显示MOV DPTR,#PC0CPL AMOVX DPTR,AMOV DPTR,#PA ;判断按下的键是否释放CLR AMOVX DPTR,AMOV DPTR,#PBMOVX A,DPTRCPL AJNZ AAA ;没释放转AAAMOV R5,#2 ;已释放则延时0.2秒,减少总线负担DEL1: MOV R4,#200DEL2: MOV R3,#126DEL3: DJNZ R3,DEL3DJNZ R4,DEL2DJNZ R5,DEL1JMP START ;转STARTNN1: INC DPTR ;指针指向后半字节即列线值NN2: INC DPTR ;指针指向下一键码前半字节即行线值INC R6 ;CHAR表偏移量加一DJNZ R7,TT ;计数值减一,不为零则转TT继续查找JMP BBBTABLE:DW 0FE06H,0FD06H,0FB06H,0F706H;TABLE为键值表,每个键位占DW 0BF06H,07F06H,0FE05H,0FD05H; 两个字节,第一个字节为行DW 0EF05H,0DF05H,0BF05H,07F05H ;线值,第二个为列线值DW 0FB03H,0F703H,0EF03H,0DF03H;CHAR: DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H ;字符码表DB 0AH,0BH,0CH,0DH,0EH,0FH,10H,11H,12H,13HDB 14H,15H,16H,17HEND实验八数码显示实验[实验目的]⒈进一步掌握定时器的使用和编程方法.⒉了解七段数码显示数字的原理.⒊掌握用一个段锁存器,一个位锁存器同时显示多位数字的技术.[实验设备]EL-8051-III型单片机实验箱[实验原理]本试验采用动态显示.动态显示就是一位一位地轮流点亮显示器的各个位〔扫描〕.将8031CPU的P1口当作一个锁存器使用,74LS273作为段锁存器.[实验题目]利用定时器1定时中断,控制电子钟走时,利用实验箱上的六个数码管显示分、秒,做成一个电子钟.显示格式为:分秒定时时间常数计算方法为:定时器1工作于方式1,晶振频率为6MHZ,故预置值Tx为:〔2e+16-Tx〕x12x1/〔6x10e+6〕=0.1s Tx=15535D=3CAFH,故TH1=3CH,TL1=AFH[实验电路].[实验接线]将P1口的P1.0~P1.5与数码管的输入LED6~LED1相连,74LS273的O0~O7与LEDA~LEDDp相连,片选信号CS273与CS0相连.去掉短路子连接.[程序框图].[实验接线]将P1口的P1.0~P1.5与数码管的输入LED6~LED1相连,74LS273的O0~O7与LEDA~LEDDp相连,片选信号CS273与CS0相连.去掉短路子连接.[参考程序]NAME T9 ;数码显示实验PORT EQU 0CFA0HBUF EQU 23H ;存放计数值SBF EQU 22H ;存放秒值CSEG AT 0000HLJMP STARTCSEG AT 401BHLJMP CLOCKCSEG AT 4100HSTART: MOV R0,#40H ;40H-45H是显示缓冲区,依次存放MOV A,#00H ;分高位、分低位,0A,0A〔横线〕MOV R0,A ;以与秒高位、秒底位INC R0MOV R0,AINC R0MOV A,#0AHMOV R0,AINC R0MOV R0,AINC R0MOV A,#00HMOV R0,AINC R0MOV R0,AMOV TMOD,#10H ;定时器1初始化为方式1MOV TH1,#38H ;置时间常数,延时0.1秒MOV TL1,#00HMOV BUF,#00H ;置0MOV SBF,#00HMOV MBF,#00HSETB ET1SETB EASETB TR1DS1: MOV R0,#40H ;置显示缓冲区首址MOV R2,#20H ;置扫描初值,点亮最左边的LED6DS2: MOV DPTR,#PORTMOV A,R0 ;得到的段显码输出到段数据口ACALL TABLEMOVX DPTR,AMOV A,R2 ;向位数据口P1输出位显码CPL AMOV P1,AMOV R3,#0FFH ;延时一小段时间DEL: NOPDJNZ R3,DELINC R0 ;显示缓冲字节加一CLR CMOV A,R2RRC A ;显码右移一位MOV R2,A ;最末一位是否显示完毕?,如无则JNZ DS2 ;继续往下显示MOV R0,#45HMOV A,SBF ;把秒值分别放于44H,45H中ACALL GETDEC R0 ;跳过负责显示"-"的两个字节DEC R0MOV A,MBF ;把分值分别放入40H,41H中ACALL GETSJMP DS1 ;转DS1从头显示起TABLE: INC A ;取与数字对应的段码MOVC A,A+PCRETDB 3FH,06H,5BH,4FH,66H,6DH,7DH, 07H, 7FH,6FH, 40H GET: MOV R1,A ;把从分或秒字节中取来的值的高ANL A,#0FH ;位屏蔽掉,并送入缓冲区MOV R0,ADEC R0MOV A,R1 ;把从分或秒字节中取来的值的低SWAP A ;位屏蔽掉,并送入缓冲区ANL A,#0FHMOV R0,ADEC R0 ;R0指针下移一位RETCLOCK: MOV TL1,#0AFH ;置时间常数MOV TH1,#3CHPUSH PSWPUSH ACCINC BUF ;计数加一MOV A,BUF ;计到10否?没有则转到QUIT退出中断CJNE A,#0AH,QUITMOV BUF,#00H ;置初值MOV A,SBFINC A ;秒值加一,经十进制调整后放入DA A ;秒字节MOV SBF,ACJNE A,#60H,QUIT ;计到60否?没有则转到QUIT退出中断MOV SBF,#00H ;是,秒字节清零MOV A,MBFINC A ;分值加一,经十进制调整后放入DA A ;分字节MOV MBF,ACJNE A,#60H,QUIT ;分值为60否?不是则退出中断MOV MBF,#00H ;是,清零QUIT: POP ACCPOP PSWRETI ;中断返回END实验九D/A转换实验[实验目的]⒈了解D/A转换的基本原理.⒉了解D/A转换芯片0832的性能与编程方法.⒊了解单片机系统中扩展D/A转换的基本方法.[实验设备]EL-8051-III型单片机实验箱[实验内容]利用DAC0832,编制程序产生锯齿波、三角波、正弦波.三种波形轮流显示. [实验原理]D/A转换是把数字量转换成模拟量的变换,从D/A输出的是模拟电压信号.产生锯齿波和三角波只需由A存放的数字量的增减来控制;要产生正弦波,较简单的手段是造一X正弦数字量表.取值X围为一个周期,采样点越多,精度就越高.本实验中,输入寄存器占偶地址端口,DAC寄存器占较高的奇地址端口.两个寄存器均对数据独立进行锁存.因而要把一个数据通过0832输出,要经两次锁存.典型程序段如下:MOV DPTR,#PORTMOV A,#DATAMOVX DPTR,AINC DPTRMOVX DPTR,A其中第二次I/O写是一个虚拟写过程,其目的只是产生一个WR信号.启动D/A.[实验电路][实验步骤]⒈DAC0832的片选CS0832接CS0,输出端OUT接示波器探头.⒉将短路端子DS的1、2短路.[程序框图][参考程序]实验接线:DAC0832的片选CS0832接CS0,输出端OUT接示波器探头.NAME T92 ;0832数模转换实验PORT EQU 0CFA0HCSEG AT 4000HLJMP STARTCSEG AT 4100HSTART: MOV R1,#02H ;置计数初值于R1ACALL PRG1 ;显示锯齿波MOV R1,#01H ;置计数初值于R1ACALL PRG2 ;显示三角波MOV R1,#01H ;置计数初值于R1ACALL PRG3 ;显示正弦波LJMP START ;转START循环显示PRG1: MOV DPTR,#PORT+1 ;DAC寄存器端口地址送DPTR MOV A,#00H ;初值送ACCLOOP: MOV B,#0FFHLOOP1: MOV DPTR,#PORT ;DAC输入寄存器端口地址MOVX DPTR,A ;送出数据INC DPTR ;加一,为DAC寄存器端口地址MOVX DPTR,A ;启动转换INC A ;数据加一CJNE A,#0FFH,LOOP1MOV A,#00HDJNZ B,LOOP1DJNZ R1,LOOP ;计数值减到40H了吗?没有则继续RET ;产生锯齿波PRG2: MOV DPTR,#PORT+1MOV A,#00HLP0: MOV B,#0FFHLP1: MOV DPTR,#PORT ;LP1循环产生三角波前半周期MOVX DPTR,AINC DPTRMOVX DPTR,AINC ACJNE A,#0FFH,LP1 ;数据为FFH吗?不等则转LP1MOV R2,#0FEHLP2: MOV DPTR,#PORT ;LP2循环产生三角波后半周期MOV A,R2MOVX DPTR,AINC DPTRMOVX DPTR,A、JNZ R2,LP2DJNZ B,LP1DJNZ R1,LP0 ;计数值到80H则退出执行下一步RETPRG3: MOV B,#00HLP3: MOV DPTR,#DATA0MOV R4,#0FFH ;FFH为DATA0表中的数据个数LP4: MOVX A,DPTR ;从表中取数据MOV R3,DPHMOV R5,DPLMOV DPTR,#PORTMOVX DPTR,AINC DPTRMOVX DPTR,AMOV DPH,R3MOV DPL,R5INC DPTR ;地址下移DJNZ R4,LP4DJNZ B,LP3DJNZ R1,PRG3RETDATA0: DB 80H,83H,86H,89H,8DH,90H,93H,96HDB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEHDB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H DB 0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H DB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H DB 0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H DB 0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH DB 0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH DB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H DB 0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH DB 0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH DB 0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H DB 0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H DB 0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99HDB 96H,93H,90H,8DH,89H,86H,83H,80HDB 80H,7CH,79H,76H,72H,6FH,6CH,69HDB 66H,63H,60H,5DH,5AH,57H,55H,51HDB 4EH,4CH,48H,45H,43H,40H,3DH,3AHDB 38H,35H,33H,30H,2EH,2BH,29H,27HDB 25H,22H,20H,1EH,1CH,1AH,18H,16HDB 15H,13H,11H,10H,0EH,0DH,0BH,0AHDB 09H,8H,7H,6H,5H,4H,3H,2HDB 02H,1H,0H,0H,0H,0H,0H,0HDB 00H,0H,0H,0H,0H,0H,1H,2HDB 02H,3H,4H,5H,6H,7H,8H,9HDB 0AH,0BH,0DH,0EH,10H,11H,13H,15HDB 16H,18H,1AH,1CH,1EH,20H,22H,25HDB 27H,29H,2BH,2EH,30H,33H,35H,38HDB 3AH,3DH,40H,43H,45H,48H,4CH,4EHDB 51H,51H,55H,57H,5AH,5DH,60H,63HDB 69H,6CH,6FH,72H,76H,79H,7CH,80HEND实验十8253定时器实验[实验目的]⒈习8253扩展定时器的工作原理.⒉习8253扩展定时器的使用方法.[实验设备]EL-8051-III型单片机实验箱[实验内容]向8253定时控制器写入控制命令字,通过示波器观察输出波形.[实验接线]⒈8253的片选CS8253与CS0相连;8253CLK0与CLK3相连;OUT0与8253CLK1相连⒉示波器的信号探头与OUT0相连;OUT1与发光二极管的输入L8相连[实验原理图][程序框图][实验提示]8253是自动控制系统中经常使用的可编程定时器/计数器,其内部有三个相互独立的计数器,分别称为T0,T1,T2.8253有多种工作方式,其中方式3为方波方式.当计数器设好初值后,计数器递减计数,在计数值的前一半输出高电平,后一半输出低电平.实验中,T0的时钟由CLK3提供,其频率为750KHz.程序中,T0的初值设为927CH〔37500十进制〕,则OUT0输出的方波周期为〔37500*4/3*10-6=0.05s〕.T1采用OUT0的输出为时钟,则在T2中设置初值为n 时,则OUT2输出方波周期为n*0.05s.n的最大值为FFFFH,所以OUT2输出方波最大周期为3276.75s<=54.6分钟>.可见,采用计数器叠加使用后,输出周期X围可以大幅度提高,这在实际控制中是非常有用的.[参考程序]NAME T17 ;8253实验CSEG AT 4000HAJMP STARTCSEG AT 4030HSTART: MOV DPTR,#0CFA3HMOV A,#36H ;计数器0为模式3MOVX DPTR,AMOV DPTR,#0CFA0HMOV A,#7CH ;计数值MOVX DPTR,AMOV A,#92HMOVX DPTR,AMOV DPTR,#0CFA3H ;计数器1为模式3 MOV A,#76HMOVX DPTR,AMOV DPTR,#0CFA1HMOV A,#5H ;计数值MOVX DPTR,AMOV A,#05HMOVX DPTR,ASTART1: NOPSJMP START1END。
实验04_1_可编程并行接口(8255方式0)

实验四可编程并行接口(一)(8255方式0)
一、实验目的
掌握8255方式0的工作原理及使用方法。
二、实验内容
1、实验电路如图4-1,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
2、编程从8255C口输入数据,再从A口输出。
图4-1
三、编程提示
1、8255控制寄存器端口地址28BH
A口的地址288H
C口的地址28AH
;*******************************;
;* 8255方式的C口输入,A口输出 *;
;*******************************;
io8255a equ 288h
io8255b equ 28bh
io8255c equ 28ah
code segment
assume cs:code
start: mov dx,io8255b ;设为C口输入,A口输出 mov al,8bh
out dx,al
inout: mov dx,io8255c ;从C口输入一数据 in al,dx
mov dx,io8255a ;从A口输出刚才自C口 out dx,al ;所输入的数据
mov dl,0ffh ;判断是否有按键
mov ah,06h
int 21h
jz inout ;若无,则继续自C口输入,A口输出 mov ah,4ch ;否则返回
int 21h
code ends
end start。
实验五 8255并行接口实验

实验五 8255并行接口实验实验目的:1、学习并掌握8255的各种工作方式及其应用。
2、学习在系统接口实验单元上构造实验电路。
相关理论知识:一、8255可编程并行接口芯片介绍8255是Intel 公司生产的通用并行IO 接口芯片,它具有ABC 三个并行接口,能在以下三种方式下工作:方式0:基本输入/输出方式 方式1:选通输入/输出方式 方式2:双向选通工作方式8255工作方式控制字及C 口置位/复位控制字如下图所示:ABC 三60H~63H 。
8765432121222319208.50 8255A 工作方式控制字格式A 组控制B 口方式选择输出01010101X输入输出输入方式0方式1方式2B 组控制C 口(低4位)B 口方式选择输出010100输入输出输入方式0方式1C 口(高4位)D 7D 6D 5D 4D 3D 2D 1D 0A 组控制B 口方式选择输出010100101X 输入输出输入方式0方式1方式2B 组控制C 口(低4位)B 口方式选择输出010100输入输出输入方式0方式1C 口(高4位)实验内容及实验步骤:一、8255接口应用实验(1)按图所示实验线路编写程序,使8255端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。
用一组开关信号接入端口B,端口A输出线接至一组发光二极管上,然后通过对8255芯片编程来实现输入/输出功能。
STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACKSTART: MOV AL, 82HOUT 63H ,ALA1:IN AL,61HOUT 60H,ALJMP A1CODE ENDSEND START实验步骤:(1)按图接线,接通电源。
(2)输入程序并检查无误,经汇编、连接后装入系统。
(3)运行程序,拨动开关组,观察发光二极管与开关组状态的对应关系。
微机原理实验五-8255输入输出实验
微机原理实验五-8255输入输出实验一、实验要求:南昌大学实验报告利用8255可编程并行口芯片,实现输入/输出,实验中用8255PA口作输出,PB口作输入。
二、实验目的:(1)了解8255芯片结构及编程方法。
(2)了解8255输入/输出实验方法。
三、实验器材:(1)G2022实验平台1台(2)G6W仿真器1台(3)连线若干根(4)8255芯片1片(5)LAB8088CPU板1块四、实验电路:8255的/CS接译码器Y2(0A000H-0AFFFH),则命令字地址为0A003H,PA口地址为0A000H,PB口地址为0B001H,PC口地址为0B002H。
PA0-PA7(PA口)接L0-L7(LED发光二极管组),PB0-PB7(PB口)接K0-K7(K0-K7开关量发生器),再接上数据线和读/写信号,地址线只接A0,A1即可,还要接上RESET信号,以便8255A可靠复位。
特别强调:8255的第七脚应接GND(地),第二十六脚应接+5V。
五、实验说明:可编程通用接口芯片8255A有三个八位的并行I/O口,它有三种工作方式。
本实验采用的是方式0:PA,PC口输出,PB口输入。
方式字为82H。
六、实验步骤:(1)使用实验平台锁进插座,如图连线,因8255片选信号为0A000H,所以,A口为0A000H、口为0A001H、C口为0A002H、命令口为0A003H。
(2)硬件测试:把G2022+G6W连PC机,在WINDOWS调试环境下点击[窗口/数据窗口/MEMORY],以打开MEMORY数据窗口,在打开的MEMORY窗口中的0A003H地址(即8255的片选空间)上写入控制字82H,在0A000H (8255的A口)上打入55H,0AAH等数字,LED发光二极管组对应点亮。
若不是,则硬件有问题。
(3)编写程序、编译程序,用单步、断点、连续方式调试程序,排除软件错误。
运行程序,直至达到本实验的要求为止。
8255A可编程并行口实验
一、实验目的1、掌握并行接口芯片8255A和微机接口的连接方法。
2、掌握并行接口芯片8255A的工作方式及其编程方法。
二、预备知识1、8255A结构8255A是可编程并行接口芯片,双列直插式封装,用+5V单电源供电,如图5- 6 是8255A的逻辑框图,内部有3个8位I/O端口:A口、B口、C口;也可以分为各有12 位的两组:A和B组,A组包含A口8位和C口的高四位,B组包含B口8位和C口的低4位;A 组控制和B 组控制用于实现方式选择操作;读写控制逻辑用于控制芯片内寄存器的数据和控制字经数据总线缓冲器送入各组接口寄存器中。
由于8255A 数据总线缓冲器是双向三态8位驱动器,因此可以直接和8088系统数据总线相连。
2、8255A端口地址见表5-1图5-63、8255A工作方式8255A芯片有三种工作方式:方式0、方式1、方式2。
它通过对控制寄存器写入不同的控制字来决定其三种不同的工作方式。
方式0 :基本输入/输出图5-7(a) 方式0引脚功能如图5-7(a)所示。
该方式下的A口8位和B口8位可以由输入的控制字决定为输入或输出,C 口分成高4 位(PC7~PC4)和低4位(PC3~PC0)两组,也有控制字决定其输入或输出。
需注意的是:该方式下,只能将C口其中一组的四位全部置为输入或输出。
方式1 :选通输入/输出图5-7(b)方式1输入图5-7(c)方式1输出如图5-7(b)、(c)所示。
该方式又叫单向输入输出方式,它分为A、B两组,A组由数据口A和控制口C 的高4位组成,B组由数据口B和控制口C的低4位组成。
数据口的输入/输出都是锁存的,与方式0不同,由控制字来决定它作输入还是输出。
C口的相应位用于寄存数据传送中所需的状态信号和控制信息。
方式2 :双向输入输出图5-7(D)方式2双向输入输出如图5-7(d)所示。
本方式只有A组可以使用,此时A口为输入输出双向口,C口中的5位(PC3~PC7)作为A口的控制位。
北理工微机原理与接口技术之8255,8253实验报告
北理工微机原理与接口技术之8255,8253实验报告微机原理与接口技术实验报告———8253可编程定时器8255并行接口实验实验一8255并行接口实验一,实验内容8255的A口作为输入口,与逻辑电平开关相连。
8255的B口作为输出口,与发光二极管相连。
编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。
二,实验目的(1)掌握8255的工作原理。
(2)掌握编写8255并行接口初始化及编程实现的方法。
三,实验仪器微机实验教学系统实验箱、8086CPU模块四,实验步骤(1)连线8255的PA0—PA7分别与逻辑电平开关的K1—K8相连?PB0—PB7分别与发光二极管电路的LED1—LED8相连?CS0与8255的片选CS8255相连其它线路均已连好具体如图所示:(2)编辑程序,编译链接后,单步运行,调试程序。
(3)调试通过后,全速运行,观察实验结果。
(4)撰写实验报告。
五,实验源程序如下CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,04A6HMOV AX,90H ;写8255的控制字,A组工作在方式0,A口输入,C口高4位输出,B组工作在方式0,B口及C口的低4位均工作在输出OUT DX,AXSTART1:MOV DX,04A0HIN AX,DX ;读取A口数据MOV DX,04A2HOUT DX,AX ;将从A口读取的数据从B口输出,控制LED灯JMP START1CODE ENDSEND START六,实验现象LED灯低电平有效。
当某一开关拨到低电平时,对应的LED灯点亮。
当某一开关拨到高电平时,对应的LED灯熄灭七,思考题1.将片选线接到CS1—CS7;重新编写程序。
CS0对应地址是04A0---O4AF, CS1对应地址是04B0---O4BF.现将片选线接到CS1,重新编程:CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,04B6H ;CS1对应的地址MOV AX,90HOUT DX,AXSTART1:MOV DX,04B0HIN AX,DXMOV DX,04B2HOUT DX,AXJMP START1CODE ENDSEND START实验现象:如同片选线接到CS02.交换A B接线,A口输出、B口输入;重新编写程序。
实验四8255A并行口实验
实验四8255A并行口实验(一)一、实验目的⒈掌握8255A和微机接口方法。
⒉掌握8255A的工作方式和编程原理。
二、实验内容用8255PA口控制PB口。
三、实验接线图图6-3四、编程指南⒈8255A芯片简介: 8255A可编程外围接口芯片是INTEL公司生产的通用并行接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0:基本输入/ 输出方式方式l:选通输入/ 输出方式方式2:双向选通工作方式⒉使8255A端口A工作在方式0并作为输入口,读取Kl-K8个开关量,PB 口工作在方式0作为输出口。
五、实验程序框图六、实验步骤⒈在系统显示监控提示符“P.”时,按SCAL键,传送EPROM中的实验程序到内存中。
(注:必须先传送EPROM后,再往下操作)⒉ 8255A芯片A口的PA0-PA7依次和开关量输入Kl-K8相连。
⒊ 8255A芯片B口的PB0-PB7依次接Ll-L8。
⒋运行实验程序。
在系统显示监控提示符“P.”时,输入11B0,按EXEC键,系统显示执行提示符“┌”拨动K1-K8, LI-L8会跟着亮灭。
七、实验程序清单CODE SEGMENT ;H8255-1.ASMASSUME CS:CODEIOCONPT EQU 0FF2BH ;定义8255控制口IOBPT EQU 0FF29H ;定义8255 PB口IOAPT EQU 0FF28H ;定义8255 PA口ORG 11B0HSTART: MOV AL,90H ;定义PA输入,PB输出MOV DX,IOCONPT ;控制口OUT DX,AL ;写命令字NOP ;延时NOPNOPIOLED1: MOV DX,IOAPT ;PA口IN AL,DX ;读PA口MOV DX,IOBPT ;PB口OUT DX,AL ;写PB口MOV CX,0FFFFH ;延时DELAY: LOOP DELAYJMP IOLED1 ;循环CODE ENDSEND START实验五8255A并行口实验(二)一、实验目的掌握通过8255A并行口传输数据的方法,以控制发光二极管的亮与灭。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
-1-
深 圳 大 学 实 验 报 告
课程名称: 微机原理及应用实验
实验项目名称: 可编程并行接口 8255 实验
学院:
专业:
指导教师:
报告人: 学号: 班级:
实验时间:
实验报告提交时间:
教务处制
-2-
一、实验名称:可编程并行接口 8255 实验
二、实验目的
了解可编程并行接口芯片 8255 的内部结构、工作方式、初始化编程及应用
三、实验内容
(1) 流水灯实验:利用 8255 的 A 口循环点亮发光二极管。
(2) I/O 输入输出实验:利用 8255 的 A 口读取开关状态,8255 的 B 口把
状态送发光二极管显示
四、实验原理
1、8255A 的内部结构:
(1)数据总线缓冲器:这是一个双向三态的 8 位数据缓冲器,它是 8255A 与
微机系统数据总线的接口。输入输的数据、CPU 输出的控制字以及 CPU 输
入的状态信息都是通过这个缓冲器传送的。
(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 口下半部
(4)读写控制逻辑:用来控制把 CPU 输出的控制字或数据送至相应端口,
也由它来控制把状态信息或输入数据通过相应的端口送到 CPU。
2、8255A 的工作方式:
方式 0—基本输入输出方式;方式 1—选通输入输出方式;方式 2—双向选通
输入输出方式
3、8255A 的状态字:
-3-
图 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。
-4-
图 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。
-5-
六、
实验程序
(1)流水灯
CODE SEGMENT
ASSUME CS:CODE
ORG 100H
START:MOV AL,80H ;控制字:方式0,A输出
MOV DX,0003H ;控制端口地址
OUT DX,AL
MOV DX,0000H ;A端口地址
MOV AL,0FEH ;点亮一个灯
AA: OUT DX,AL
CALL DELAY ;延时
ROL AL,1 ;左移流水
JMP AA
DELAY PROC NEAR
MOV CX,0FFFFH
BB: WAIT
LOOP BB
RET
DELAY ENDP
CODE ENDS
END START
(2)
CODE SEGMENT
ASSUME CS:CODE
ORG 100H
START: MOV AL,90H ;控制字:A口输入,方式0,B口输出,方式0
MOV DX,0017H
OUT DX,AL
AA:MOV DX,0014H
IN AL,DX ;从A口读入开关状态
MOV DX,0015H
OUT DX,AL
JMP AA
CODE ENDS
END START
七、上机调试情况说明
实验首先从点亮一个LED灯开始做起,此步成功后简单的利用循环语句即
达到流水灯效果,但调试中出现的结果是全亮,查明原因为未加延时程序,因
为人的视觉有暂留效应,在延时程序上需调整合理的时间不然太慢也不好
-6-
八、实验结果
完成了(1)利用 8255 的 A 口循环点亮发光二极管的流水灯。(2)利用
8255 的 A 口读取开关状态,8255 的 B 口把状态送发光二极管显示。
九、实验总结
本次实验是我加深了理解控制口的地址,以及在延时程序上让我学会了
NOP和WAIT语句,以及程序嵌套的循环语句。
指导教师批阅意见:
成绩评定:
预习情况(20) 实验过程(35) 实验报告(45) 总分
指导教师签字:
年 月 日
备注:
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。