可编程并行接口实验
- 格式:doc
- 大小:81.50 KB
- 文档页数:6
可编程并行接口实验(8255A方式1)实验目的掌握8255A工作方式1的使用方法;进一步掌握编写中断服务程序的方法。
实验内容1.8255A选通行输出实验,具体要求:(1)设置8255A的A 口工作在方式1输出;(2)每按一次单脉冲按钮产生一个正脉冲使8255A产生一次中断;(3)设计中断服务程序:依次输出01H,02H,04H,08H,10H,20H,40H,80H。
使L0—L7依次发光。
2.8255A选通行输入实验,具体要求:(1)设置8255A的A 口工作在方式1输入;(2)每按一次单脉冲按钮产生一个正脉冲使8255A产生一次中断;(3)设计中断服务程序:读取开关表示的ASCII码,在屏幕上显示其对应的字符。
实验连线1实验内容1连线(1)8255A芯片的A口PA7~PA0连发光二极管L7~L0;(2)PC3连接IRQ;(3)PC6连接单脉冲发生器。
2实验内容2连线(1)8255A芯片的A口PA7~PA0连逻辑开关K7~K0;(2)PC3连接IRQ;(3)PC4连接单脉冲发生。
流程图这是试验2的流程图,实验1相似实验代码试验2的代码是在试验1的代码基础上稍作改动,这里只列出试验2的代码:ASSUME CS:CODE,DS:DATADATA SEGMENT ;数据段定义IOPORT EQU 5400H-280HIOPORT_CENT EQU 5000H ;9054芯片的I/O起始地址MASKZ EQU 0FBH ;8259A主片屏蔽码MASKC EQU 0F7H ;8259A从片屏蔽码INTNUM DW 0 ;保存ES的定义量INTNUMSE DW 0 ;保存BX的定义量DA TA ENDSSTACK1 SEGMENT STACK ‘STACK1’DB 50 DUP(?)STACK1 ENDSCODE SEGMENT ;代码段定义START:MOV DX,IOPORT+28BH ;根据实验连线,此次实验控制口为540BH MOV AL,0B0H ; 设置8255A的控制关键字(设置成方式1,端口A输入) OUT DX,ALCLI ;关中断MOV DX,IOPORT_CENT+68H ;设置9054芯片使能寄存器IN AX,DXOR AX,0900HOUT DX,AX;得到原中断向量并保存MOV AH,35H ;取中段向量MOV AL,73H ;针对本台计算机查表得出中断类型号为73HINT 21HMOV INTNUMSE,BX ;保存BXMOV AX, ES ;保存ESMOV INTNUM, AX;设置新中断向量MOV AX,CSMOV DS,AXMOV DX,OFFSET INTPROC ;设置新的中断向量MOV AL,073HMOV AH,25HINT 21H;设置中断屏蔽寄存器IN AL,21H ;8259A主片的中断屏蔽寄存器端口地址为21HAND AL,MASKZ ;中断屏蔽寄存器中主片相应位置1,本实验中第三位置1 OUT 21H,ALIN AL,0A1H ;8259A从片的中断屏蔽寄存器端口地址为0A1HAND AL,MASKCOUT 0A1H,AL ;中断屏蔽寄存器中从片相应位置1,本实验中第四位置1 STI ;开中断MOV AL,00001001B ;设置PC4为1MOV DX,IOPORT+28BHOUT DX,ALOUTER:MOV AH,01H ;判断是否有任意键按下INT 16HJZ OUTER ;没有键按下程序重复MOV AX, INTNUM ;恢复原中断向量MOV DS,AXMOV DX, INTNUMSEMOV AL,073HMOV AH,25HINT 21H;恢复中断屏蔽寄存器IN AL,21HOR AL,04HOUT 21H,ALIN AL,0A1HOR AL,08HOUT 0A1H,ALMOV DX,IOPORT_CENT+68H ;关闭9054IN AX,DXOR AX,0F6FFHOUT DX,AXMOV AH,4CH ;有键按下,程序结束,返回DOS界面INT 21H;中断服务子程序INTPROC:PUSH AX ;寄存器入栈保护PUSH BXPUSH CXPUSH DXPUSH DSSTI ;开中断MOV CX,0FFFFHH: LOOP HMOV DX,IOPORT+288H ;A口输入IN AL,DXMOV DL,AL ;输出开关所对应的字符MOV AH,02HINT 21HMOV AL,20H ;发出EOI结束中断OUT 20H,ALOUT 0A0H,ALCLI ;关中断POP DS ;寄存器出栈POP DXPOP CXPOP BXPOP AXIRET ;中断返回CODE ENDSEND START结果描述试验1:每按一次单脉冲,L0~L7依次发光。
计算机与电子信息工程系二〇一二年三月目录实验一 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。
实验八、8155可编程并行I/O扩展接口实验一、实验目的1.熟悉8155并行接口芯片的基本工作原理及应用2.掌握单片机与8155的接口电路设计和编程二、实验设备1.仿真器2.8155可编程并行I/O扩展接口模块3.单片机最小系统模块4.数码管动态扫描显示模块5.矩阵式键盘模块三、实验要求连接单片机最小系统、8155扩展接口实验模块、数码管动态扫描显示模块、矩阵式键盘模块,要求在键盘按下时,8位LED动态显示器上最低位显示相应的字符,以前的各位字符向高位推进1位。
四、实验原理8155芯片内包含有256字节RAM,2个8位、1个6位的可编程并行I/O口,和1个14位定时器/计数器。
由于8155既具有RAM又具有I/O口,因而是单片机系统中最常用的外围接口芯片之一。
4.1引脚说明8155共40个引脚,采用了双列直插的封装,主要引脚功能如下:◆AD7—AD0:地址数据总线;单片机和8155之间的地址、数据、命令、状态信息都是通过它来传送的。
◆CE:片选信号线,低电平有效。
◆RD:存储器读信号线,低电平有效。
◆WR:存储器写信号线,低电平有效。
◆ALE:地址及片选信号锁存信号线,高电平有效。
在下降沿时将地址及片选信号锁存到器件中。
◆IO/M:IO接口与存储器选择信号线,高电平选择I/O,低电平选择存储器。
◆PA7—PA0:A口输出/输入线。
◆PB7—PB0:B口输出/输入线。
◆PC5—PC0:C口输出/输入或控制信号线,用作控制信号时其功能如下:◆PC0:A INTR(A口中断信号线)◆PC1:A BF(A口缓冲器满信号线)◆PC2:ASTB(A 口选通线)◆PC3:B INTR(B口中断信号线)图8-1 8155引脚与逻辑图◆PC4:B BF(B口缓冲器满信号线)◆PC5:BSTB(B 口选通线)表8-1 地址与寄存器映射◆TIMER OUT:定时器/计数器输出端;◆RESET:复位信号线。
◆8155引脚与逻辑如图8-1所示。
实验一可编程并行接口一、实验目的1、掌握8255方式0的工作原理及使用方法二、实验内容1、实验电路如下图,8255C口接逻辑电平开关K0—K7,A口接LED显示电路L0—L7。
2、编程从8255C口输入数据,再从A口输出。
三、编程提示1、8255控制寄存器端口地址28BHA口的地址288HC口的地址28AH2、参考流程图(如流程图)四、程序清单CSEG S EGMENTASSUME CS:CSEGSTART: MOV DX,28BHMOV AX,10001001BOUT DX,AXNEXT: M OV DX,28AHIN AL,DXMOV DX,288HOUT DX,AL;CMP AL,00H;JNZ NEXTjmp NEXTCSEG ENDSEND START五、实验步骤1.把A口,C口的电路与PA,PC,连接好,在运行程序六、实验结果改变逻辑电平开关K0—K7的值,LED显示对应的结果,从而实现数据从C口输入,从A 口输出。
七、实验分析与总结1.微机计算机接口电路普遍采用大规模集成电路芯片,知道了使用灵活,通用性强是8255的最大的特性。
2.知道如何在DOS下运行程序,认识了8255的工作方式。
实验二串行通讯一、实验目的1、了解界串行通讯的基本原理2、掌握串行接口芯片8251的工作原理和编程方法二、实验内容1、按图接好电路,(8251插通用插座),其中8253计数器用于产生8251的发送和接收时钟,TXT和RXD连在一起。
2、编程:从键盘输入一个字符,将其ASCII码加一后发送出来,在接收回来,在屏幕上显示,实现自发自收。
三、实验提示1、图示电路8251的控制口地址为2B9H,数据口地址为2B8H。
2、8253 计数器的计数初值=时钟频率/(波特率*波特率因子),这里的时钟频率接1MHZ,波特率若选1200,波特率因子若选1200,波特率因子16,则计数器初值52。
3、收发采用查询方式。
4、参考流程图四、程序清单DSEG SEGMENTDATA DB 13,10,"HOW ARE YOU ?",13,10,"$"DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGBEGIN: MOV DX,283HMOV AL,00011111BOUT DX,ALMOV DX,280HMOV AL,52HOUT DX,ALMOV DX,2B9HMOV AL,00HOUT DX,ALOUT DX,ALOUT DX,ALMOV AL,40HOUT DX,ALMOV AL,01111010BOUT DX,ALMOV AL,00010101BOUT DX,ALMOV AX,DSEGMOV DS,AXMOV DX,OFFSET DATAMOV AH,09HINT 21HSEND: MOV DX,2B9HIN AL,DXTEST AL,01HJZ SENDMOV AH,07HINT 21HCMP AL,1BHJE EXITMOV AH,0EHINT 10HADD AL,1MOV DX,28BHOUT DX,ALRECEIVE:MOV DX,2B9HIN AL,DXTEST AL,02HJZ RECEIVEMOV DX,2B8HIN AL,DXMOV AH,0EHINT 10HJMP SENDEXIT: MOV AH,4CHINT 21HCSEG ENDSEND BEGIN五、实验步骤1、打开实验箱,按实验电路图连接好电路,打开电源2、输入汇编源程序,并编译执行3、从键盘中输入字符,观察显示结果4、验证结果,进行总结5、实验结束,整理实验仪器六、实验结果从键盘输入一个字符,其ASCII码加一后发送出来,接收回来,在屏幕上显示,实现自发自收。
实验五可编程并行接口(8255A)一.实验目的1.掌握8255A方式0的工作原理及使用方法二.实验内容1.按下面图4-1可编程并行口接口8255A电路连接线路,如下图所示:图4-1可编程并行口接口8255A2.编写程序,实现从PC口读入开关状态,然后在PA口输出开关状态。
编程可参考如下流程图:其中288H是8255A芯片的PA口地址。
三.编程提示1.PA口地址=(DC00H-280H)+288H=0DC08H,其余端口地址可依此类推。
下面是整个接口程序的参考源程序,请补充完整8255A并行口输出实验,8255A工作于方式0。
stack segment para stackX db 100 dup(?)stack endsdata segmentY db 100 dup(?)data endscode segment 'code'assume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,ax____________ ;8255A初始化next: ___________ ;从PC口输入数据;从PA口输出数据__________以下语句是用于判断是否按下ESC键,如果按下则退出。
mov dl , 0ffHmov ah , 06Hint 21hjz next ;无键按下则继续从PC口读入数据mov ah , 4chint 21hcode endsend start2. 编译及运行将上述程序对应的工程建立在E:\wjyl\bxk目录下,编译、连接、构建后生成exe文件。
运行不能直接在WINXP系统下,必须在纯DOS系统下。
四.思考题1. 8255A的工作方式0的特点是什么?2.这个程序里有查询环节吗?如果有,作用是什么?。
《微机原理及应用技术》课程实验报告实验五可编程并行I/O接口8255【预习内容】1.怎样选中可编程I/O接口?怎样实现I/O端口的寻址?8255的CS/接地址译码/CS0,则命令字地址为8003H,PA口地址为8000H,PB口地址为8001H,PC口地址为8002H。
通过地址/数据总线,按照指定地址进行读写操作直接选中8255。
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片。
CPU与外设交换的数据是以字节为单位进行的。
因此一个外设的数据端口含有8位。
而状态口和命令口可以只包含一位或几位信息,所以不同外设的状态口允许共用一个端口,命令口也可共用。
数据信息、状态信息和控制信息的含义各不相同,按理这些信息应分别传送。
但在微型计算机系统中,CPU通过接口和外设交换数据时,只有输入(IN)和输出(OUT)两种指令,所以只能把状态信息和命令信息也都当作数据信息来传送,且将状态信息作为输入数据,控制信息作为输出数据,于是三种信息都可以通过数据总线传送了。
但要注意,这三种信息被送入三种不同端口的寄存器,因而能实施不同的功能。
CPU对外设的访问实质上是对I/O接口电路中相应的端口进行访问,也需要由译码电路来形成I/O端口地址。
I/O端口的编址方式有两种·存储器映象寻址方式·I/O指令寻址方式2.8255A接口芯片内含几个I/O端口?它们的名称分别是?这些I/O口地址有何特点?三个数据端口,三种工作方式A口可工作于方式0、方式1和方式2中的任一种B口可工作于方式0和方式1,但不能工作于方式2C口只能工作于方式08位数据端口:A口、B口、C口A口:PA7~PA0B口:PB7~PB0C口:PC7~PC0连接外部设备A口与B口为一个8位的输入口或输出口C口单独作为一个8位的输入口或输出口配合A口和B口使用,作为控制信号和状态信号3.8255A有几个控制字?怎样设置?它有两个控制字,一个是方式选择控制字,一个是对C口进行置位或复位控制字。
微机原理实验报告实验名称8255可编程并行接口实验一、实验目的1、掌握8255芯片结构及工作方式,2、熟悉8255并行口扩展的编程。
二、实验设备1、Lab6000p实验教学系统;2、IBM-PC机三、系统中的8255模块Lab6000p实验箱中的8255模块连线如下图所示:图1 8255模块的连线AD0~AD7、A0、A1、RESET、/WR、/RD已分别连至系统总线DB0~DB7、AB0、AB1、RESET、/IOW、/IOR;8255_CS、PA口、PB口、PC口引出留给用户连接。
三、实验内容和实验步骤1、8255基本输入输出方式――开关控制LED显示1)实验要求开关拨上LED亮,开关拨下LED灭。
2)电路连接图2 电路连接图8255_CS连至地址译码/CS0,PA口连至LED电平显示模块,PB口连至开关电路。
3)程序框图图4 程序框图4)程序代码见附录程序2.15)实验步骤1、在Lab6000p实验箱上完成连接电路;2、开启计算机电源,开启Lab6000p实验箱电源;3、启动WAVE6000软件;4、确认WAVE6000与Lab6000p连接;5、输入源代码;6、编译源代码(F9);7、单步运行源代码(F8),观察每条指令执行结果;8、连续运行程序,上下拨动开关观察LED显示情况。
2、8255选通输入方式――开关控制LED显示1)实验要求开关上的逻辑信号在选通信号有效时读入微处理器,并送到LED显示。
2)电路连接将选通信号(单脉冲)接到PC2,其余连线和实验1中的相同。
3)程序框图图5 程序框图4)程序代码见附录程序2.25)实验步骤1、在Lab6000p实验箱上完成连接电路;2、开启计算机电源,开启Lab6000p实验箱电源;3、启动WAVE6000软件;4、确认WAVE6000与Lab6000p连接;5、输入源代码;6、编译源代码(F9);7、单步运行源代码(F8),观察每条指令执行结果;8、连续运行程序,上下拨动开关观察LED显示情况。
实验五-1 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: 。
CODE ENDSEND H2六、实验思考1.通过实验你是如何理解8255的PA口和PB口的工作过程?2.用程序验证若8255的PA口为方式1或方式2,是否可以实现PA口控制PB口?七、实验步骤1.按图6-4连好线路。
2.运行实验程序,拨动K1~K8,L1~L8会跟着亮灭。
实验五-28255并行口实验(二)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:JMP P11CODE ENDSEND H1六、实验思考1.说明8255 A.B.C口输出方波,与8253输出方波有什么区别?2.说明8255 A.B.C口输出方波的原理是什么?实验五-3 8255A可编程并行口实验(三)交通灯一、实验目的进一步掌握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并行口传输数据的方法,以控制发光二极管的亮与灭。
实验五、可编程并行接口实验(8255方式0)一、实验目的1、掌握微机原理硬件实验系统的运行方法;2、掌握8255A 工作方式、与和微机接口方法、编程原理;3、掌握微机硬件系统的设计步骤。
二、实验原理1、8255A 芯片简介: 8255A 可编程外围接口芯片是INTEL 公司生产的通用并行接口芯片,它具有A 、B 、C 三个并行接口,用+5V 单电源供电,能在以下三种方式下工作:方式0:基本输入/ 输出方式方式l :选通输入/ 输出方式方式2:双向选通工作方式图5-1三、实验内容1、8255基本输入/出程序分析与调试;(1)编程指南使8255A端口A工作在方式0并作为输入口,读取K8~K1个开关量,PB口工作在方式0作为输出口,接发光二极管L8-L1。
(2)参考源码;SY5_1.ASMPORT_A EQU 0FF28H ;8255 PA口地址PORT_B EQU 0FF29H ;8255 PB口地址PORT_C EQU 0FF2AH ;8255 PC口地址PORT_CTL EQU 0FF2AH ;8255 控制字地址CODE SEGMENTASSUME CS:CODEORG 11B0H ;代码起始地址START: MOV AL,90H ;定义端口工作方式与输入、输出MOV DX,PORT_CTLOUT DX,ALIOLED1: MOV DX,PORT_A ;读PA口状态IN AL,DXMOV DX,PORT_B ;写PB口OUT DX,ALJMP IOLED1CODE ENDSEND START(3)操作步骤a、根据图5-1连线;b、在dice8088应用程序(见桌面快捷图标)下完成以上代码的编辑、编译与连接(执行菜单项:“调试”-“编译程序”);c、译连接通过的程序通过RS232串口装载置实验硬件系统中(执行菜单项:“调试”-“编译程序”)。
此操作必须在PC机与实验箱通信正常连接的前提下进行(在dice8088应用程序中状态栏中有联机信息);造成联机失败的主要原因有:串口线未连接(重新连接串口线);通信数据出错(关闭实验箱电源和dice8088应用程序,然后先打开实验箱电源,再执行dice8088应用程序);硬件系统处于非接收状态(只有在实验箱上的第一位数码管显示P. 时方可装载程序,可通过按实验箱上的复位按钮使其恢复到P. 状态);d、运行程序:方法一、通过dice8088应用程序控制实验箱中的程序运行(执行菜单项:“调试”-“连续运行”);方法二、通过实验箱的小键盘运行程序,先在P. 状态下输入代码起始地址(本程序的起始地址为:11B0),后按小键盘上的执行按钮(EX),此时数码管的最高位显示程序运行提示符“┌”。
微机原理与接口技术——实验题目: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中的实验程序到内存中。
⒉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 0FF2BHIOBPT EQU 0FF29HIOAPT EQU 0FF28HORG 11B0HSTART: MOV AL,90HMOV DX,IOCONPTOUT DX,ALNOPNOPNOPIOLED1: MOV DX,IOAPTIN AL,DXMOV DX,IOBPTOUT DX,ALMOV CX,0FFFFHDELAY: LOOP DELAYJMP IOLED1CODE ENDSEND START八、实验结果九、实验总结本次实验有一定的难度,在实验的过程中出现了许多的问题,原因是对实验的原理不够理解。
完成一个硬件实验不仅需要动手操作能力强,还需要有一定的理论知识。
实验二8255并行接口应用实验一.实验目的1. 掌握8255工作方式的编程设计。
2. 8255与外部设备进行连接的应用。
二.实验设备与材料:TDN86/88教学实验系统一台,扁平插线若干。
三.实验原理:INTEL8255是一种通用的可编程并行I/O接口芯片,是专为INTEL公司的微处理器设计的,也可用于其它系列的微型机系统中。
利用8086汇编指令系统,编制初始化程序,可以变更8255 的工作方式,通用性强,使用灵活。
8255具有3个带锁存或缓冲的数据端口,它的并行数据宽度为8位。
可与外设并行进行数据交换。
A口和B口内具有中断控制逻辑,在外设与CPU之间可用中断方式进行信息交换。
8255能与许多外部设备连接,例如:键盘、显示器、打印机等。
(a)工作方式控制字 (b)C口按位置位/复位控制字四.实验内容及步骤1.8255的一般输入输、出方式本系统中的8255芯片8255的数据线、地址线、读写控制线等分别与系统总线相连,其A、B、C三个端口以排针形式引出,供8255实验使用,其线路如图1所示。
图1 8255接口实验中端口地址如表1所示表1按图所示实验线路,8255端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。
用一组开关信号接入端口B, 端口A输出线接至一组发光二极管上,通过对8255编程来实现输入输出功能。
实验步骤●图2 8255输入输出方式实验接线图注:圆圈处是要求接的连线。
(1)按图2接线。
用扁平线(8头)分别插在8255的A口和发光二极管的插针上。
用扁平线分别插在8255的B口和拨动开关的插针上。
(2)输入源程序,汇编、连接后装入系统。
●参考程序1STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV AL,82H ;设8255方式字10000010 A位输出,B口位输入。
OUT 63H,AL A1: IN AL,61HOUT 60H,AL JMP A1CODE ENDS END START(3)执行程序后,拨动开关组K0-K7,观察发光二极管LED0-LED7变化,它应是与开关组K0-K7的值是一一对应的变化。
实验一可编程并行接口实验目的1、掌握8255方式0的工作原理及使用方法实验内容1、实验电路如下图,8255C 口接逻辑电平开关 K0 — K7, A 口接LED 显示电路L0 —L7。
2、编程从8255C 口输入数据,再从 A 口输出。
、 编程提示 1、 8255控制寄存器端口地址28BH A 口的地址 288H C 口的地址28AH2、 参考流程图(如流程图)PC0r.w4 K1 K24PCIPM310rcaPC3PC 斗 ^C5ZK3* -17FA3i« -•—•■---< --------------- 13TMIS 1239KB11P 阳38KT■- -_ - ■#------------ 1037■<PCT26BH-•・€cs --0255四、程序清单CSEG SEGMENTASSUME CS:CSEGSTART: MOV DX,28BHMOV AX,10001001BOUT DX,AXNEXT:MOV DX,28AHIN AL,DX\ MOV DX,288H\ OUT DX,AL;CMP AL,00H;JNZ NEXTjmp NEXTCSEG ENDSEND START五、实验步骤1. 把A 口,C 口的电路与PA, PC,连接好,在运行程序六、实验结果改变逻辑电平开关K0 —K7的值,LED显示对应的结果,从而实现数据从 C 口输入, 从A 口输出。
七、实验分析与总结1. 微机计算机接口电路普遍采用大规模集成电路芯片,知道了使用灵活,通用性强是8255的最大的特性。
2. 知道如何在DOS下运行程序,认识了8255的工作方式。
实验二串行通讯■ 实验目的1、 了解界串行通讯的基本原理2、 掌握串行接口芯片 8251的工作原理和编程方法 ‘ 实验内容/'\1、按图接好电路,(8251插通用插座),其中8253计数器用于产生8251的发送和接收 时钟,TXT 和RXD 连在一起。
实验九、8255可编程并行I/O扩展接口实验一、实验目的1.熟悉8255并行接口芯片的基本工作原理及应用2.掌握单片机与8255的接口电路设计和编程二、实验设备1.仿真器2.8255可编程并行I/O扩展接口模块3.单片机最小系统模块4.发光二极管阵列模块三、实验要求连接单片机最小系统、8255扩展接口、数码管动态扫描显示模块、矩阵式键盘模块组成的电路,要求在键盘按下时,8位LED动态显示器上最低位显示相应的字符,以前的各位字符向高位推进1位。
请参看实验二的相关内容。
四、实验原理8255是一个具有3个8位的8位并行口,并且可编程为多种工作模式的接口芯片。
由于每个端口上具有输入/输出的缓冲和锁存功能,因此可用于扩展单片机有限的I/O口,作为单片机和外围器件的中间接口电路。
3.1引脚说明8255共40个引脚,采用了双列直插的封装,主要引脚功能如下:◆D7—D0:三态双向数据线,与单片机数据总线连接;◆CS:片选信号,低电平有效;◆RD:读出信号线,低电平有效;◆WR:写入信号线,低电平有效;◆PA7—PA0:A口输入/输出线;◆PB7—PB0:B口输入/输出线;◆PC7—PC0:C口输入/输出线;◆RESET:芯片复位信号线;◆A1—A0:地址线,用来指定8255内部端口。
3.2内部结构和工作方式(1)端口A、B、C端口A为8位数据传送,数据输入或输出时均受到锁存。
端口B为8位数据传送,数据输入时不受锁存,而数据输出时受到锁存。
端口C 为8位数据传送,数据输入时不受锁存,而数据输出时受到锁存。
(2)8255接口工作状态选择表9-1(3)8255的基本工作方式8255可编程并行I/O 扩展芯片是通过在控制端口中设置控制字来决定它的工作方式的。
8255有以下三种基本工作方式:⏹ 方式0——基本输入/输出方式。
⏹ 方式1——选通输入/输出方式。
⏹ 方式2——双向传送方式。
8255A 的端口A 可以工作在三种工作方式中的任何一种,端口B 只能工作在方式0或方式1,端口C 则常常配合端口A 和端口B 工作,为这两个端口的输入/输出传送提供控制信号和状态信号。
微机实验报告 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设备,通过这个芯片的接口,我们可以方便地实现单片机与外界键盘等设备的数据输入输出控制。
《接口技术》实验报告实验二8255并行口接口实验实验目的利用8255A实现并行接口实验。
实验内容1:掌握8255A的编程原理。
2:熟悉计算机并行接口的使用方法。
实验步骤1连线:8255A芯片A口的PA0-PA7依次和开关量输入Kl-K8相连。
B口的PB0-PB7依次接发光二极管Ll-L8。
从CS0-CS7中任选一个与8255A的片选信号相连,其他线路均已接好。
2:编写程序单步运行并调试程序。
3:调试通过后全速运行并观察实验结果。
实验原理图程序流程图源程序清单ASSUME CS:CODECODE SEGMENT PUBLICORG 100HSTART: MOV DX,04A6HMOV AX,90HOUT DX,AXSTART1: MOV DX,04A0HIN AX ,DXMOV DX,04A2HOUT DX,AXJMP START1CODE ENDSEND START运行结果及分析当读到某个开关处于高电平时,对应的发光二极管就会亮修改1A口和B口的工作方式互换。
B口输入,A口输出。
这样的话程序改成:START: MOV DX,04A6HMOV AX,82HOUT DX,AXSTART1: MOV DX,04A2HIN AX ,DXMOV DX,04A0HOUT DX,AXJMP START1CODE ENDSEND START运行结果:当读到某个开关处于高电平时,对应的发光二极管就会亮。
修改2B口输入,C口输出,这样的话程序改成:START: MOV DX,04A6HMOV AX,82HOUT DX,AXSTART1: MOV DX,04A2HIN AX ,DXMOV DX,04A4HOUT DX,AXJMP START1CODE ENDSEND START运行结果:当读到某个开关处于高电平时,对应的发光二极管就会亮。
实验一并行I/O口编程`实验目的1.了解编程环境,熟悉开发工具;2.学习汇编语言和C语言编程方法;3.学习KEIL工程设置方法和STC单片机程序下载方法。
实验内容1.(汇编程序)假设以60H为起始地址的内部RAM单元存放着8个数据,并给定一个数据在内部RAM单元50H,编程实现数据检索目的。
如果在8个数据中找到给定数据,则使用数码管指示数据位置;如果没有找到数据,则所有数码管全亮。
硬件连接如图1所示,J30与J1通过8根排线连接,JP2的PIN1(下侧靠近JP6)与J13 PIN1 VCC单根线连接,即使用P1口控制8个发光二极管。
其中地址60H~67H分别对应P1.0~P1.7,譬如检索到的数据在60H单元,则P1.0输出低电平点亮发光二极管。
图1 数据检索硬件连接图2.(C语言程序)已知数组dat[16]里存放着16个数据(数据自己编写),编程实现数据从小到大排序,并把最大值显示在P1口,要求发光二极管亮代表数字‘1’,灭代表数字‘0’。
此处的接线方法与题目1相同。
3.编制花样灯显示程序(至少3种模式),通过拨码开关控制花样灯显示效果;接线方法在题目2的基础上,连接排线J16与J24。
在连线时,可先将J24上的跳线帽取下,然后通过排线连接拨码开关与P2口,如图2所示。
图2 花样灯硬件连接图附录1.Keil C生成hex文件方法(1)选择工程选项图3 工程选项选择界面(2)选取标签图4 标签选取界面(3)选择输出HEX图5 输出HEX文件的选择界面(4)重新编译即可图6 重新编译界面2.STC单片机程序下载方法(1)运行程序图7 单片机的运行程序(2)配置方法图8 参数配置界面(3)给板子断电一下,然后重新给电即可下载程序(4)串口助手使用图9 串口调试助手的参数配置界面其他不懂的可以提前到网上查阅相关资料。
实验二一、实验题目:可编程并行接口(8255方式0)二、实验目的掌握8255方式0的工作原理及使用方法。
三、实验内容1、按下图连线。
2、编程从8255C口输入数据,再从A口输出.四、程序流程图五、源程序ioport equ 0d400h-0280hio8255a equ ioport+288hio8255b equ ioport+28bhio8255c equ ioport+28ahcode segmentassume cs:codestart: mov dx,io8255b ;设8255为C口输入,A口输出mov al,8bhout dx,alinout: mov dx,io8255c ;从C口输入一数据in al,dxmov dx,io8255a ;从A口输出刚才自C口out dx,al ;所输入的数据mov dl,0ffh ;判断是否有按键mov ah,06hint 21hjz inout ;若无,则继续自C口输入,A口输出mov ah,4ch ;否则返回DOSint 21hcode endsend start六、实验结果分析按上述的代码执行,观察LED灯的状态,可以发现实验结果和预期的相同:打开K0,关闭K1、K2、K3、K4、K5、K6、K7,L0亮;打开K1,关闭K0、K2、K3、K4、K5、K6、K7,L1亮;打开K2,关闭K0、K1、K3、K4、K5、K6、K7,L2亮;打开K3,关闭K0、K1、K2、K4、K5、K6、K7,L3亮;打开K4,关闭K0、K1、K2、K3、K5、K6、K7,L4亮;打开K5,关闭K0、K1、K2、K3、K4、K6、K7,L5亮;打开K6,关闭K0、K1、K2、K3、K4、K5、K7,L6亮;打开K7,关闭K0、K1、K2、K3、K4、K5、K6,L7亮;按任意键,退出该实验。
七、实验心得1、通过本次实验,了解了8255芯片的基本内部结构和它的管脚,掌握了8255方式0的工作原理及使用方法,2、本次实验前,自己认真地做了预习,实验过程中,认真思考,积极探索,实验后,查阅资料,提炼总结。
实验报告实验中学 电子信息技术实验教学中心专业年级 2011级测控技术与仪器 实验课程 微机原理及实验 姓 名 实验名称 实验10:并行接口实验 学 号 提交日期2013.11.28成 绩一、实验目的1.掌握8255的基本工作原理和编程方法;2.掌握8255与简单输入/输出设备的连接与控制方法。
二、实验内容利用一片8255实现以下功能:(编写成两个完整程序)1.将8255的A 口接8个LED ,L0∽L7,8255的B 口接8个开关K0∽K7,编程实现当Ki 闭合时,L0∽Li 的LED 亮。
若同时有多个开关闭合,以最高序号的开关为准,若无开关闭合,都不亮。
按任意键退出。
2.将8255的A 口接8个LED ,L0∽L7。
从键盘接收单字符,当接收字符为“0”∽“7”时,对应的L0∽L7亮,若为其它字符,LED 都灭。
按ESC 键退出。
三、实验步骤(1). 源程序:①.将8255的A 口接8个LED ,L0∽L7,8255的B 口接8个开关K0∽K7,编程实现当Ki 闭合时,L0∽Li 的LED 亮。
若同时有多个开关闭合,以最高序号的开关为准,若无开关PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA78255PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7LKCS闭合,都不亮。
按任意键退出。
data segmenttab db 1,3,7,15,31,63,127,255 ;对应开关0,1,2,3,4,5,6,7data endscode segmentassume cs:code,ds:data ;段说明go: mov ax,data ;数据段填装mov ds,axmov dx,0c003hmov al,10000010b ;设置8255A的A口工作在方式0,输出,B 口工作在方式0,输入out dx,all1: mov dx,0c001hin al,dx ;读取从PB端口输入的数据mov dx,0c000hmov cx,8 ;置循环次数l2: test al,128 ;测试al与128的大小jnz l3 ;不等时转l3shl al,1 ;左移一位loop l2 ;循环l2mov al,0;mov dx,0c000hout dx,al ;PA端口清0jmp l1l3: mov si,cxmov al,tab[si-1] ;将开关序号存放在al中mov dx,0c000hout dx,al ;PA端口输出开关序号mov ah,6 ;判断是否有按键mov dl,0ffh ;AH=06 直接控制台I/O DL=FF(输入)DL=字符(输出) AL=输入字符int 21hjz l1mov ah,4ch ;结束int 21hcode endsend go②.将8255的A口接8个LED,L0∽L7。
简单并行接口实验
一、实验目的
掌握简单并行接口的工作原理及使用方法。
二、实验内容
1、按下面图2-1简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台
上的“或门”)。
74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q 输出端接LED显示电路L0~L7。
2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光
二极管发光情况验证正确性。
3、按下面图2-2简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台
上的“或门”)。
74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。
4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏
幕上显示出来。
图2-1 图2-2
三、编程提示
1、上述并行输出接口的地址为2A8H,并行输入接口的地址为2A0H,通过上述并行接口电路输出数据需要3条指令:
MOV AL,数据
MOV DX,2A8H
OUT DX,AL
通过上述并行接口输入数据需要2条指令:
MOV DX,2ADH
IN AL,DX
2、参考流程图
图2-3 参考程序1 图2-4 参考程序2。
实验报告
课程名称微机原理与接口技术
实验项目实验三
可编程并行接口实验
实验仪器 TPC-USB通用微机接口实验系统
系别电子信息工程
专业电子信息工程
班级/学号
学生姓名
实验日期2011-5-19
成绩_______________________
指导教师___________
一、实验目的
1. 通过实验,掌握8255工作于方式0以及设置A、B、C口为输入或输出口的方法。
2. 掌握数码管数字显示和静态、动态驱动原理及编程设计实现。
二.实验设备
1.PC微机系统一套
2.TPC-USB通用微机接口实验系统一套
三.实验要求
1.实验前要作好充分准备,包括程序框图、源程序清单、调试步骤、测试方法、对运行结果的分析等。
2.熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)使用方法。
在程序调试过程中,有意识地了解并掌握TPC-USB通用微机接口实验系统的软硬件环境及使用,掌握程序的调试及运行的方法技巧。
3.实验前仔细阅读理解教材相关章节的相关内容,实验时必须携带教材及实验讲义。
四.实验内容及步骤
(一)8255初始化设置和简单输入/输出实验
1.实验电路如图1,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
2. 按上述要求对8255进行初始化设置,并编程从8255C口输入数据,再从A口输出。
图1 实验连接参考电路图和流程图之一
(二)数码管动态显示驱动设计
1. 按图2连接好电路,将8255的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1,S0接8255 C口的PC1,PC0。
2. 编程从键盘连续输入两个十进制数,分别在两个数码管上显示;编程实现数码管的动态显示驱动。
3.(选作)从键盘连续输入两个任意数:若是ESC键输入,则程序退出运行;若是十六进制数键输入,则在数码管上显示十六进制数;若是上述键之外的输入,则不对数码管显示更新。
【参考提示:请仔细分析、理解“七段数码管”实验之LED1.ASM和LED3.ASM】
图2 实验连接参考电路图之二
编程提示:
1. 8255控制寄存器端口地址为:28BH、A口的地址288H、B口的地址289H、C口的地址28AH
2. 实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
3. 七段数码管的字型代码表如下表:
五、实验程序设计和调试运行
1. 实验(一)程序设计如下:
;*******************************;
;* 8255方式0的C口输入,A口输出 *;
;*******************************;
io8255a equ 288h
io8255k equ 28bh
io8255c equ 28ah
code segment
assume cs:code
start: mov dx,io8255k ;设8255为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
2.实验过程和实验结果说明【下面*用实际文件名替换】
(1)按图1连接实验电路;
(2)在TPC-IDE操作环境下,用文本编辑器编辑实验源程序(*.asm);
(3)在IDE操作环境下,对源程序(*.asm)进行编译和连接,生成生成链接文件(*.obj)和可执行文件(*.exe);
(4)运行IDE操作环境下的调式命令,调试可执行文件(*.exe);
(5)运行IDE操作环境下的执行命令,运行可执行文件(*.exe),结果显示:当开关输入K0到K7拨向1(或0)时,对应的LED输出L0到L7相应变亮(或灭)。
实验结果符合实
验程序设计要求。
3. 实验(二)程序设计如下:
;**************************************
;* LED数码管实验 *
;* 动态显示键盘输入“00-99” *
;**************************************
data segment
io8255a equ 288h
io8255c equ 28ah
io8255k equ 28bh
led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码
buffer db 0,0 ;存放要显示的个位和十位
bz dw ? ;位码
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov dx,io8255k ;将8255设为A、C口输出
mov al,80h
out dx,al
mov di,offset buffer ;设di为显示缓冲区
loop1: mov cx,030h ;循环次数
loop2: mov bh,02
lll: 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的A口输出
out dx,al
mov al,byte ptr bz ;使相应的数码管亮
mov dx,io8255c
out dx,al
push cx
mov cx,100
delay: loop delay ;延时
pop cx
mov al,00h ;灭LED
out dx,al
mov bh,byte ptr bz ;显示下一位
shr bh,1
jnz lll
loop loop2 ;循环延时
keyin: mov ah,01
int 16h
je loop1
mov ah,01 ;从键盘接收字符
int 21h
cmp al,1BH ;是否ESC
jz exit ;若是则退出
cmp al,'0' ;是否小于0
jl loop1 ;若是则返回
cmp al,'9' ;是否大于9
jg loop1 ;若是则返回
sub al,30h ;将所得字符的ASCII码减30H mov di,offset buffer ;di为buffer起始地址
mov [di+1],al
mov ah,01 ;从键盘接收字符
int 21h
cmp al,1BH ;是否ESC
jz exit ;若是则退出
cmp al,'0' ;是否小于0
jl loop1 ;若是则返回
cmp al,'9' ;是否大于9
jg loop1 ;若是则返回
sub al,30h ;将所得字符的ASCII码减30H
mov di,offset buffer ;di为buffer起始地址
mov [di],al
jmp LOOP1 ;转LOOP1
exit: mov dx,io8255a
mov al,0 ;关掉数码管显示
out dx,al
mov ah,4ch ;返回
int 21h
code ends
end start
4.实验过程和实验结果说明【下面*用实际文件名替换】
(1)按图2连接实验电路;
(2)在TPC-IDE操作环境下,用文本编辑器编辑实验源程序(*.asm);
(3)在IDE操作环境下,对源程序(*.asm)进行编译和连接,生成生成链接文件(*.obj)和可执行文件(*.exe);
(4)运行IDE操作环境下的调式命令,调试可执行文件(*.exe);
(5)运行IDE操作环境下的执行命令,运行可执行文件(*.exe),结果显示:当从键盘连续输入两个十进制数后,分别在两个数码管上显示出这两个数;若输入的数发生变化,
显示的数值也相应的发生变化。
实验结果符合实验程序设计要求。
5. 问题和解决
执行程序,根据四位二进制码的规律设置4个开关的开和关,便能实现数字由0变到F,当要实现两位十六进制数时用到8个开关,前四位控制高四位,后四位控制低四位,实现数字由00变到FF。
这次实验让我加深了对8255的工作原理的理解。