8255A并行口实验(二)内容
8255并行口实验
JZ NEXT
MOV AL,00H
NEXT:MOVAL,0FFH
”
结果无论开关是否闭合,全都不亮,后来发现只需在中间加上个跳转语句就行了。
实验程序如下
附录
实验题1:
ASSUME CS:CODE学号
113200880200057
专业年级
电子信息工程2008级
实验题目
8255并行口实验
实验目的
1、掌握可编程并行接口8255的初始化及其应用
2、掌握汇编语言源程序的设计方法
实验内容
实验内容1:8255A的A口作为输入口,与逻辑电平开关K1~K8相连。8255A的B口作为输出口,与发光二极管LED1~LED8相连。编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。即当开关ki置于L时,对应发光二极管LEDi点亮;置于H时熄灭。
TEST AL,01H;测试PA0的状态
JZ NEXT;PA0为0则跳转
MOV AL,00H;否则全亮
JMP LOOP2
NEXT:MOV AL,0FFH;置全灭
LOOP2:MOV DX,04A2H
OUT DX,AL;输出,控制灯的开关
JMP LOOP1
CODE ENDS
END START
CODE SEGMENT PUBLIC
ORG 100H
START:MOVAL,10010000B
MOV DX,04A6H
OUT DX,AL;送出8255的控制字
LOOP1:MOV DX,04A0H
IN AL,DX;读入A口的状态
8255A可编程并行接口实验二键盘实验 - 单片机原理及应用实验报告
计算机与信息工程学院设计性实验报告一、实验目的:1、掌握8255A编程原理。
2、了解键盘电路的工作原理。
3、掌握键盘接口电路的编程方法。
二、实验设备:EL-8051-III型单片机实验箱三、实验原理:1、识别键的闭合,通常采用行扫描法和行反转法。
行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如所读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行。
本实验例程采用的是行反转法。
行反转法识别键闭合时,要将行线接一并行口,先让它工作于输出方式,将列线也接到一个并行口,先让它工作于输入方式,程序使CPU通过输出端口往各行线上全部送低电平,然后读入列线值,如此时有某键被按下,则必定会使某一列线值为0。
然后,程序对两个并行端口进行方式设置,使行线工作于输入方式,列线工作于输出方式,并将刚才读得的列线值从列线所接的并行端口输出,再读取行线上的输入值,那么,在闭合键所在的行线上的值必定为0。
这样,当一个键被按下时,必定可以读得一对唯一的行线值和列线值。
2、程序设计时,要学会灵活地对8255A的各端口进行方式设置。
3、程序设计时,可将各键对应的键值(行线值、列线值)放在一个表中,将要显示的0~F字符放在另一个表中,通过查表来确定按下的是哪一个键并正确显示出来。
实验题目利用实验箱上的8255A可编程并行接口芯片和矩阵键盘,编写程序,做到在键盘上每按一个数字键(0~F),用发光二极管将该代码显示出来。
四、实验步骤:将键盘RL10~RL17接8255A的PB0~PB7;KA10~KA12接8255A的PA0~PA2;PC0~PC7接发光二极管的L1~L8;8255A芯片的片选信号8255CS接CS0。
五、实验电路:六、程序框图T8.ASM七、参考程序:T8.ASMNAME 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八、实验小结行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如所读列值中某位为低电平,表明有键按下,否则扫描下一行,直到扫完所有行,然后对照表格,输出对应的内容即可教师签名:年月日。
实验二_8255并行接口应用实验
实验二_8255并行接口应用实验一、实验目的1. 熟悉8255并行接口的功能和应用。
2. 掌握8255并行接口的控制字的含义和编写方法。
3. 熟悉并行接口的IO读写操作。
二、实验仪器1. PC机2. AT8051开发板4. 其他配件线路三、实验原理8255芯片是Intel公司提供的一种通用并行接口芯片。
它可以实现外围设备、传感器的控制、数据的输入/输出等功能,是一种非常实用的通用接口芯片。
8255是一个三端口、24线单片并行接口芯片,它可以直接连接CPU总线或I/O总线,采用AHB (AMBA High-Performance Bus)总线。
总线与8255之间的通讯方式采用输入/输出端口的方式,在CPU访问8255时,必须指定8255的端口地址。
CPU在访问8255时,AV(地址有效)为高电平,同时CS和RD为有效低电平。
8255所使用的端口地址由登录的端口号选择器(P0、P1、P2)决定。
8255的主要特点:a. 具有3个通用I/O端口,每个端口有8位,共有24条I/O线。
b. 可以通过外部信号线与中间件或总线连接。
c. 具有3种基本工作方式:安装、双向缓冲装置和输入输出方式。
d. 为减少芯片引脚数,端口地址用地址寄存器低端口号器(P0,P1)来指定。
端口的寄存器编号可以选择0或1。
e. 以可编程方式控制I/O端口。
f. 内接有二进制计数器,可用于计时和计数应用。
2. 编程实现原理本次实验中,我们将用8051的C语言编程,控制8255进行I/O读写操作。
在编程时,我们将根据需要设置8255的控制字,并利用控制字来控制8255的输入输出。
同时,在控制8255的I/O读写操作中,我们还需将相应的端口地址赋值给端口指针,以实现读写操作。
3. 硬件连接我们将在AT8051开发板上搭建实验电路,具体如下:a. 8255芯片的输入输出口A、B、C分别连接到LED灯,以控制LED灯的开关状态。
b. AT8051开发板的P0、P1、P2分别连接到8255的A1、A0、CS/WR、RD/CS口线,以进行8255的读写操作。
10_8255A可编程并行接口实验(2)
4.4 8255A可编程并行接口实验二4.4.1 实验目的1、进一步掌握8255A并行接口芯片的基本结构及工作原理。
2、掌握8255A的A口或B口工作于方式1时的特点及其使用方法;掌握方式1输入或输出时C口用作联络信号的引脚的定义及功能。
4.4.2 实验预习要求1、复习8255A工作方式1的特点及工作原理;C口用作联络信号的引脚定义及功能。
2、复习中断服务程序的编写方法。
3、预先编写好实验程序。
4.4.3 实验内容按图4.4-1连接线路。
& &图4.4-18255A的A口工作于方式1输出。
C口的PC3用作中断请求信号(INTR)。
PC6用作外设应答信号(ACK),表示CPU输出到8255A的数据已被外设取走。
PC7用作输出缓冲器满信号(OBF),OBF 信号实验中未用。
用每按一次单脉冲按钮K所产生的负脉冲(模拟外设的应答信号)使8255A产生一次中断请求,让CPU进行一次中断服务。
在中断服务程序中向8255A依次输出01H、02H、04H、08H、10H、20H、40H、80H使L0 L7依次发光,中断8次程序结束返回DOS。
4.4.4 实验提示1、主机中可编程中断控制器8259A的I/O地址为20H和21H。
2、8255A的I/O地址为:控制寄存器端口地址28BHA口的地址288HC 口的地址28AH3、实验台接口卡设置为使用ISA总线中的IRQ7将实验台上的中断请求信号IRQ送到主板的8259A,若接口卡非如此设置,请根据具体设置在编写程序时作适当修改。
4、中断服务程序中通过OUT指令将数据输出到8255A的A口,以便点亮发光二极管时,要延时一段时间,否则将无法看到二极管发光。
实验程序流程图如图4.4-2和4.4-3所示。
4.4.5 实验报告要求1、根据流程图编写实验程序,并说明在实验过程中遇到了哪些问题,是如何处理的。
2、总结8255A工作方式1的特点及使用方法。
3、写出实验小结,内容包括实验心得(收获)、不足之处或今后应注意的问题等。
实验二 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的状态,不拨单脉冲开关,灯也能对应显示。
试验八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。
实验七 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 实验
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输入的状态信息都是通过这个缓冲器传送的。
8255A可编程并行口实验_2
4.2 8255A可编程并行口实验1. 实验目的(1)掌握并行接口芯片8255A和微机接日的连接方法。
(2)掌握并行接口芯片8255A的工作方式及其编程方法。
2. 实验内容(l)实验原理。
实验原理如图4-I所示, PC口8位接8个开关K1一K8, PB口8位接8个发光二极管, 从PC口读入8位开关量送PB口显示。
拨动K1~K8,PB口上接的8个发光二极管LO~L7对应显示KI~KS的状态。
(2)实验线路连接。
1)8255A芯片PC0-PC7插孔依次接K1~K8。
2)8255A芯片PB0~PB7插孔依次接L0-L7。
3)8255A的CS插孔CS_8255接译码输出Y7插孔。
3. 实验软件框图参考流程图如图4-2所示。
4. 实验步骤(1)按图4-1连好线路。
(2)运行实验程序。
在数码管上显示“8255-1", 同时拨动K1~K8, L0~L7会跟着亮灭。
5. 实脸软件参考程序请参见本书电子课件, 文件名为H8255-1.ASM。
CODE SEGMENT ASSUME CS:CODE IOCONPT EQU 0073H IOCPT EQU 0072H IOBPT EQU 0071H START: MOV CX,8FFFH DELAY0:LOOP DELAY0MOV AL,89H MOV DX,IOCONPTOUT DX,ALNOPNOPNOPIOLED1: MOV DX,IOCPT IN AL,DXMOV DX,IOBPTOUT DX,ALMOV CX,8FFFH DELAY:LOOP DELAYJMP IOLED1 CODE ENDSEND START6. 思考题(1)修改程序实现一个开关控制2个或3个灯亮灭。
IOLED1: MOV BL,ALMOV CX,4ROL AL,CXADD AL,BLMOV CX,8FFFHDELAY:LOOP DELAYJMP IOLED1(2)添加延时程序, 去掉开关连线, 实现8个灯循环亮灭。
东北大学_微机原理实验报告及答案_8255并行接口
微机原理实验报告
专业班级姓名学号
实验题目日期
实验二:并行接口8255A实验
一、实验目的
熟悉8255A的工作原理及应用方法;掌握其接口电路设计及编程方法。
二、实验设备
MUT-III型实验箱、计算机一套。
三、实验内容
8255A的A口作为输入口,与逻辑电平开关相连。
8255A的B口作为输出口,与发光二极管相连。
编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。
四、实验原理
原理:本实验用到两部分电路:开关量输入输出电路和8255可编程并口电路。
开关量输入输出电路看实验一介绍
8255A可编程并口电路。
微机原理实验二 8255A并行接口应用
实验二8255A并行接口应用一、实验目的1.掌握8255A的功能及方式0、1的实现2.熟悉8255A与CPU的接口,以及传输数据的工作原理及编程方法。
3.了解七段数码管显示数字的原理。
4.掌握同时显示多位数字的技术。
二、8255应用小结1.8255的工作方式一片8255内部有3个端口,A口可以工作在方式0、方式1或方式2,B口可以工作在方式0、方式1,C口可以工作在方式0。
方式0是基本型输入/输出。
这种方式和外设交换数据时,8255端口与外设之间不使用联络线。
方式1为选通型输入/输出。
用这种方式和外界交换数据时,端口和外设之间要有联络信号。
方式2是双向数据传送,仅A口有这项功能。
当A口工作在方式2时,B口仍可以工作在方式0或方式1,但此时B口方式1只能用查询方式与CPU交换信息。
2. 工作方式选择字8255工作方式选择字共8位(如图),存放在8255控制寄存器中。
最高位D7为标志位,D7=1表示控制寄存器中存放的是工作方式选择字,D7=0表示控制寄存器中存放的是C口置位/复位控制字。
3.C口置/复位控制字8255的C口可进行位操作,即:可对8255C口的每一位进行置位或清零操作,该操作是通过设置C口置/复位字实现的(图8-10)。
C口置/复位字共8位,各位含义如下:3.8255A的控制信号与传输动作的对应关系4.命令字与初始化编程8255有两个命令字,即方式选择控制字和C口置0/置1控制字,初始化编程的步骤是:①向8255控制寄存器写入“方式选择控制字”,从而预置端口的工作方式。
②当端口预置为方式1或方式2时,再向控制寄存器写入“C口置0/置1控制字”。
这一操作的主要目的是使相应端口的中断允许触发器置0,从而禁止中断,或者使相应端口的中断允许触发器置1,从而允许端口提出中断请求。
注意:“C口置0/置1控制字”虽然是对C口进行操作,但是该控制字是命令字,所以要写入控制寄存器,而不是写入C口控制寄存器。
微机接口 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码对应的字符。
并行接口8255A实验
扫描位数≥5?
N
CL
Y 初始扫描位置
读键盘
有键动? Y
结束
调延时(10mS)
延时子程序流程 (略)
实验6.2.4 源程序
.model small
Cs8255 equ 0E200h ;片选地址CS1
p_ctl equ 80h ;8255控制字--A口输出,B口输出
6.3.2 8255A的片选端CS8255连到译码控制单元的CS1,其译码地址为: PA口:0E200H ,PB 口:0E201H,PC口:0E202H, 控制寄存器: 0E203H
6.3.3 锁存器74HC573(U23)的选片(SMGLT)连高电平 ‘1’ 6.3.4 数码管编码表
“0”-3FH “1”-06H “2”-5BH “3”-4FH “4”-66H “5”-6DH “6”-7DH “7”-07H “8”-7FH “9”-6FH “A”-77H “B”-7CH “C”-39H “D”-5EH “E”-79H “F”-71H
• .data
table db 3fh,06h,5bh,4fh,66h;0,1,2,3,4 ;字型表
•
db 6dh,7dh,07h,7fh,6fh;5,6,7,8,9
•
.code
•
.startup
•
mov dx,cs8255+3
;发控制字
•
mov al,p_ctl
•
out dx,al
•
xor cl,cl ;设扫描位置
• jbe down ;若大于5,返回启始位置0
•
mov cl,0
down: call delay
8255A并行口实验(二)内容
上海电力学院实验报告计算机硬件实验课程题目:8255A并行口实验(二)内容班级:姓名:学号:一、实验目的掌握通过8255A并行口传输数据的方法,以控制发光二极管的亮与灭。
二、实验内容1、实验原理实验原理图如图所示,PB4 ~ PB7和PC0 ~ PC7分别与发光二极管电路L1~ L12相连,本实验为模拟交通灯实验。
交通灯的亮灭规律如下:设有一个十字路口,1、3为南北方向,2、4为东西方向,初始为四个路口的红灯全亮,之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车;延时一段时间后,1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁,闪烁若干次以后,1、3 路口红灯亮,而同时2、4路口的绿灯亮,2、4路口方向通车;延时一段时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到1、3路口方向,之后重复上述过程。
8255A的PB4~ PB7对应黄灯,PC0 ~ PC3对应红灯,PC4~ PC7对应绿灯。
8255A工作于模式0,并置为输出。
由于各发光二极管为共阳极,使其点亮应使8255A相应端口清0。
2、实验线路连接(1) CS-8255插孔连译码输出Y7插孔。
(2) L1 - PC4 L4 - PC5 L7 - PC6 L10 - PC7 L2 - PB4 L5 - PB5 L8 - PB6 L11 - PB7 L3 - PC0 L6 - PC1 L9 - PC2 L12 - PC3三、实验框图四、实验程序CODE SEGMENTASSUME CS:CODEIOCONPT EQU 0FF2BHIOAPT EQU 0FF28HIOBPT EQU 0FF29HIOCPT EQU 0FF2AHORG 10e0HSTART:MOV DX,IOCONPTMOV AL,80HMOV DX,IOBPTMOV AL,00HOUT DX,ALMOV DX,IOCPTMOV AL,0FHOUT DX,ALCALL DELAY1IOLED0: MOV AL,01011010BMOV DX,IOCPTOUT DX,ALCALL DELAY1CALL DELAY1MOV AL,00001010BOUT DX,ALMOV CX,8HIOLED1: MOV DX,IOBPTMOV AL,50HOUT DX,ALCALL DELAY2MOV AL,00HOUT DX,ALCALL DELAY2LOOP IOLED1MOV DX,IOCPTMOV AL,10100101BOUT DX,ALCALL DELAY1CALL DELAY1MOV AL,00000101BOUT DX,ALMOV CX,8HIOLED2: MOV DX,IOBPTMOV AL,0A0HOUT DX,ALCALL DELAY2MOV AL,00HOUT DX,ALCALL DELAY2LOOP IOLED2MOV DX,IOCPTMOV AL,0FHOUT DX,ALCALL DELAY2DELAY1: MOV CX,0030HDELY2:CALL DELAY2LOOP DELY2DELAY2:MOV CX,8000HDELA1:LOOP DELA1CODE ENDSEND START/ / / / /五、实验步骤1、按图连好实验线路2、运行实验程序,在DVCC-8086JHN上显示"8255-2"。
微机原理8255并行接口(2)完整实验报告
实验6 8255并行接口实验
实验时间2019年12月5日
实验类型■验证性□设计性□综合性
1. 实验目的
1.学习并掌握8255的工作方式及其应用。
2.掌握8255典型应用电路的接法。
2. 实验内容及过程(主要内容、操作步骤)
1.基本输入输出实验。
编写程序,使8255的B口为输出,A口为输入,完成拨动开关到数据灯的数据传输。
要求只要开关拨动,数据灯的显示就发生相应改变。
3. 测试数据及实验结果
4. 实验分析及总结(主要考察内容)
启动中断的动作是脉冲开关,因为PC2接的是脉冲开关。
8255A输出的信号可用于CPU提出中断请求。
B端口的方式一需要借用端口C用做联络信号,端口C 还具有中断请求和屏蔽功能
教师评阅
评价指标:实验目的、操作步骤、设计、算法、程序结构、实验结果、实验分析、实验总结。
实验二_8255并行接口应用实验
实验二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的值是一一对应的变化。
8255A可编程并行接口
实验报告二、实验原理1、8255A芯片8255A是一种可编程的I/O接口芯片,可以与MCS-51系统单片机以及外设直接相连,广泛用作外部并行I/O扩展接口。
(1)8255A的内部结构 8255A内部由PA、PB、PC三个8位可编程双向I/O口,A组控制器和B组控制器,数据缓冲器及控制逻辑四部分电路组成。
8255A结构框图和引脚图如图4-30所示。
①三个数据端口A、B、C。
这三个端口可看作是I/O口,但它们的结构和功能也稍有不同。
A口:独立的8位I/O口,内部有对数据输入/输出的锁存功能。
B口:独立的8位I/O口,对输出数据有锁存功能。
C口:可以看作一个独立8位I/O口,也可以看作是两个独立4位I/O口,仅对输出数据进行锁存。
②A组和B组的控制电路。
这是两组根据CPU命令控制8255A工作方式的电路,这些控制电路内部设有控制寄存器,可以根据CPU送来的编程命令来控制8255A的工作方式,也可以根据编程命令来对口的指定位进行置/复位的操作。
A组控制电路用来控制A口及C口的高4位。
B组控制电路用来控制B口及C口的低4位。
③数据总线缓冲器。
8位的双向的三态缓冲器。
作为8255A与系统总线连接的界面,输入/输出的数据,CPU 的编程命令以及外设通过8255A传送的工作状态等信息,都是通过它来传输的。
④读/写控制逻辑。
读/写控制逻辑电路负责管理8255A 的数据传输过程。
它接收片选 信号CS 及系统读信号RD 、写信号WR 、复位信号RESET,还有来自系统地址总线的口地址 选择信号A0和A1(图4-31)。
图4-31 8255A 结构框图和引脚图(2) 8255A 的引脚功能:①数据总线(8条)。
D0~D7,用于传送CPU 和8255A 间的数据、命令和状态字。
②控制总线(4条)。
RESET:复位线,高电平有效。
CS:片选线,低电平有效。
RD 、WR: RD 为读命令线,WR 为写命令线,皆为低电平有效。
8255并行口实验+8253定时器实验
实验2 8255A并行口实验(一)一、实验目的1.掌握并行接口芯片8255的使用与硬件接口方法。
2.掌握8255A的各种工作方式和编程原理。
二、8255A芯片介绍8255A是可编程通用并行接口芯片,它具有A、B、C三个并行接口,用+5V 单电源供电,能在以下三种方式下工作:方式0:基本输入/输出方式方式1:选通输入/输出方式(应答式输入输出方式)方式2:双向选通工作方式8255工作于方式1或2时,PC口的一些引脚作为A和B口的联络信号线,如下表:三、实验内容1、并行口工作于方式0时的传送(1)设计一个电路:用8255A做并行口,读入8个开关的状态并通过发光二极管显示出来。
(当拨动开关时,相应的发光二极管的状态时刻跟随变化)(2)当总开关K闭合(K=1)时,分开关能够控制对应的发光二极管;而当总开关K断开(K=0)时,分开关无论如何拨动,对应发光二极管都不跟随变化。
2、方式1用8255芯片的B口工作于方式1做输入,A口工作于方式0做输出。
采用查询与中断2种方式,实现拨动开关控制发光二极管的显示。
提示:必须理解8255方式1输入的工作过程及相关联络控制信号的先后时序关系。
根据上述要求设计电路并编写程序。
实验3 8255并行口实验(二)一、实验目的1. 通过可编程并行接口芯片8255实现十字路口交通灯的模拟控制。
2. 掌握七段数码显示管的使用方法。
3. 掌握软件延时方法的使用。
4. 进一步掌握并行接口芯片8255的使用方法。
二、实验内容1.根据实验系统现有的实验电路,设计电路并编写程序使12个灯按交通变化规律亮、灭或闪烁。
要完成本实验,必须先了解交通路灯的亮灭规律,设有一个十字路口分为南北方向和东西方向,初始状态为红灯全亮,之后,南北绿灯亮,东西红灯亮,南北方向通车。
延时一段时间后,南北绿灯熄灭,而南北黄灯开始闪烁,闪烁若干次以后,南北红灯亮,而同时东西的绿灯亮,东西方向通车,延时一段时间后,东西绿灯熄灭,而东西黄灯开始闪烁,闪烁若干次以后,再切换到南北方向,之后,重复上述过程。
实验三8255A并行口实验
实验三8255A并行口实验一、实验目的1、了解8255A的基本工作方式及特点。
2、学会8255A在计算机系统中的典型应用方法。
二、实验内容利用8255A的PA端口作为输入口,读取开关状态,并将此状态通过8255A的PB端口再驱动发光二极管显示出来。
三、实验步骤1、连线:将实验箱上8255A芯片A口的PA0-PA7依次和开关量输入Kl-K8相连,B口的PB0-PB7依次接Ll-L8。
端口地址:A口---FF28H B口---FF29H C口---FF2AH控制口---FF2BH2、编辑程序:实验箱上电,打开实验程序,PC机与下位机通信成功,将事先编好的程序编辑输入。
3、调试程序:编译程序,根据提示更正错误;通过后下载程序至实验箱,然后单步运行程序,观察相应寄存器的值的变化,并察看发光二极管的状态与开关状态是否一致,如不一致,分析原因并改正。
4、运行程序:连续运行程序,改变开关状态,观察发光二极管的状态变化,记录结果。
5、实验总结分析:分析实验过程及结果,完成实验报告。
四、编程CODE SEGMENTASSUME CS:CODEIOCONPT EQU 0FF2BH ;设置控制端口常量IOBPT EQU 0FF29H ;设置数据端口B地址常量IOAPT EQU 0FF28H ;设置数据端口A地址常量ORG 11B0HSTART: MOV AL,90HMOV DX,IOCONPTOUT DX,AL ;往控制端口写控制字,设置A口工作在方式0输入,B方式0输出IOLED1: MOV DX,IOAPTIN AL,DX ;读端口A的数值MOV DX,IOBPTOUT DX,AL ;往端口B输出数据JMP IOLED1CODE ENDSEND START五、思考题1. 利用8255A模拟交通灯系统2. 利用8255A和实验箱上的8个开关与8个发光二极管设计一个电子抢答器,功能如下:○1K1—K7作为抢答输入端,L1—L7为抢答指示器,K8为控制端;○2K8闭合为抢答开始信号(此时L8亮);○3当正常抢答时,其所对应的发光二极管亮,犯规抢答时(开始信号未发出),其所对应的发光二极管闪烁,无论何种情况,L1—L7中只要有一个发光二极管动作,其他发光二极管均被锁定为熄灭状态;○4无论抢答违规与否,只要K8状态变化,L1—L7均复位。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上海电力学院实验报告计算机硬件实验课程
题目:8255A并行口实验(二)内容
班级:
姓名:
学号:
一、实验目的
掌握通过8255A并行口传输数据的方法,以控制发光二极管的亮与灭。
二、实验内容
1、实验原理
实验原理图如图所示,PB4 ~ PB7和PC0 ~ PC7分别与发光二极管电路L1~ L12
相连,本实验为模拟交通灯实验。
交通灯的亮灭规律如下:
设有一个十字路口,1、3为南北方向,2、4为东西方向,初始为四个路口的红灯全亮,之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车;
延时一段时间后,1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁,闪烁若干次以后,1
、3 路口红灯亮,而同时2、4路口的绿灯亮,2、4路口方向通车;延时一段时间后,2、4
路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到1、3路口方向,之后重复
上述过程。
8255A的PB4~ PB7对应黄灯,PC0 ~ PC3对应红灯,PC4~ PC7对应绿灯。
8255A工作于模式0,并置为输出。
由于各发光二极管为共阳极,使其点亮
应使8255A相应端口清0。
2、实验线路连接
(1) CS-8255插孔连译码输出Y7插孔。
(2) L1 - PC4 L4 - PC5 L7 - PC6 L10 - PC7 L2 - PB4 L5 - PB5 L8 - PB6 L11 - PB7 L3 - PC0 L6 - PC1 L9 - PC2 L12 - PC3
三、实验框图
四、实验程序
CODE SEGMENT
ASSUME CS:CODE
IOCONPT EQU 0FF2BH
IOAPT EQU 0FF28H
IOBPT EQU 0FF29H
IOCPT EQU 0FF2AH
ORG 10e0H
START:MOV DX,IOCONPT
MOV AL,80H
MOV DX,IOBPT
MOV AL,00H
OUT DX,AL
MOV DX,IOCPT
MOV AL,0FH
OUT DX,AL
CALL DELAY1
IOLED0: MOV AL,01011010B
MOV DX,IOCPT
OUT DX,AL
CALL DELAY1
CALL DELAY1
MOV AL,00001010B
OUT DX,AL
MOV CX,8H
IOLED1: MOV DX,IOBPT
MOV AL,50H
OUT DX,AL
CALL DELAY2
MOV AL,00H
OUT DX,AL
CALL DELAY2
LOOP IOLED1
MOV DX,IOCPT
MOV AL,10100101B
OUT DX,AL
CALL DELAY1
CALL DELAY1
MOV AL,00000101B
OUT DX,AL
MOV CX,8H
IOLED2: MOV DX,IOBPT
MOV AL,0A0H
OUT DX,AL
CALL DELAY2
MOV AL,00H
OUT DX,AL
CALL DELAY2
LOOP IOLED2
MOV DX,IOCPT
MOV AL,0FH
OUT DX,AL
CALL DELAY2
DELAY1: MOV CX,0030H
DELY2:CALL DELAY2
LOOP DELY2
DELAY2:MOV CX,8000H
DELA1:LOOP DELA1
CODE ENDS
END START
/ / / / /
五、实验步骤
1、按图连好实验线路
2、运行实验程序,在DVCC-8086JHN上显示"8255-2"。
同时L1~L12
发光二极管模拟交通灯显示。
六、运行结果
由于实验室的灯数只有8个,所以我们省去了黄灯的环节,没有进行连接。
所以实验结果为:开始时8个灯全灭,然后L0灭L1亮L2灭L3亮L4亮L5灭L6亮L7灭,然后L0亮L1灭L2亮L3
灭L4灭L5亮L6灭L7亮,如此往复循环,最终全灭。
七、实验小结
原实验较为复杂,要考虑到黄灯的闪烁。
但实验室的灯只有8盏,所以我们简化了实验,只进行了红灯与绿灯的变换。
以上程序是在试验后思考获得,加入了黄灯的闪烁。
此实验使我们对8255定时器有了更加深入的了解,了解了其的更多的功能应用,提升了我们的编程能力。