《西安交大微机原理第二次实验报告.docx》由会员分享,可在线阅读,更多相关《西安交大微机原理第二次实验报告.docx(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、微型计算机原理与接口技术第二次实验报告实验者姓名: 实验者学号: 所在班级: 报告完成日期:20 年 月 日实验四 8255A并行接口实验一、 实验目的1. 学会通过PC总线、驱动器、译码器等在PC机外部扩充新的芯片。2. 了解8255A并行口的工作原理。3. 掌握8255A初始化的程序设计方法。4. 掌握8255A方式0的基本输入/输出和方式1的选通型输入/输出方式的使用方法。二、 实验内容1. 实验一使8255A工作于方式0,将由C口读入的开关状态从A口输出到LED上显示出来。接线方式:断开电源,将8255A的CS接I/O地址输出端288H28FH,C口接逻辑电平开关K0K7,A口接LED
2、显示电路L0L7。2. 实验二使8255工作于方式1,将由A口读入的状态从B口输出到LED上显示出来。接线方式:断开电源,将8255A的CS接I/O地址输出端288H28FH,A口接逻辑电平开关K0K5,B口接LED显示电路L0L5,C口相应位分别接开关或LED发光二极管。三、 程序及框图1. 实验一:8255A工作于方式0程序代码PPIA EQU 288HPPIB EQU 289HPPIC EQU 28AHPPICTL EQU 28BHDATA SEGMENTMESS1 DB 8255A IN MODE 0!,0DH,0AH,$MESS2 DB ENTER ANY KEY RETURN TO
3、 DOS!,0DH,0AH,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESS1 ;数据段段寄存器结构 MOV AH,09H INT 21H ;显示提示信息1 MOV DX,OFFSET MESS2 MOV AH,09H INT 21H ;显示提示信息2 MOV AL,10001001B MOV DX,PPICTL OUT DX,ALCOUNT: MOV DX,PPIC ;8255A的C口读入数据 IN AL,DX MOV DX,PPIA ;将数据送至8255A
4、的A口输出 OUT DX,AL MOV AH,06H ;若有键按下,则退出 MOV DL,0FFH INT 21H JZ COUNT MOV AX,4C00H INT 21HCODE ENDSEND START实验框图2. 实验二:8255A工作于方式1程序代码PPIA EQU 288HPPIB EQU 289HPPIC EQU 28AHPPICTL EQU 28BHDATA SEGMENTMESS1 DB 8255A IN MODE 0!,0DH,0AH,$MESS2 DB ENTER ANY KEY RETURN TO DOS!,0DH,0AH,$DATA ENDSCODE SEGMENT
5、 ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESS1 MOV AH,09H INT 21H MOV DX,OFFSET MESS2 MOV AH,09H INT 21H MOV AL,10111101B MOV DX,PPICTL OUT DX,ALCOUNT: MOV DX,PPIC ;从C口读入IBF(PC5)状态信号 IN AL,DX AND AL,00100000B ;取PC5位来看 JZ COUNT ;IBF=0,YES则跳COUNT MOV DX,PPIA ;从A口读入数据 IN AL,DX
6、PUSH AXRDC: MOV DX,PPIC ;从C口读入OBF(PC1)状态信号 IN AL,DX AND AL,0000010B ;取PC1位来看 JZ RDC ;IBF=0,YES则跳COUNT POP AX MOV DX,PPIB ;向B口输出数据 OUT DX,AL MOV AH,06H MOV DL,0FFH INT 21H JZ COUNT MOV AX,4C00H INT 21HCODE ENDSEND START实验框图四、 实验结果及分析1.实验一:8255A工作于模式0按照连线要求,在TPC-ZK实验板上连好线。将程序在HQFC环境下编译、链接成功后开始运行。初始时开关
7、K0K7均置低,对应的LED全部熄灭,即全为低电平。进一步调试发现,开关K0K7 与LED灯L0L7呈现一一对应关系,即任意Ki置高时,对应的Li立即点亮。说明从C口读入的开关状态通过A口输出,在LED上立即显示出来。2.实验二:8255A工作于模式1重新连线,将程序在HQFC环境下编译、链接并运行。改变K7、K6状态,测试结果如下:K7K6L7L6L5L00011随K5K0变化0110不随K5K0变化1001不随K5K0变化1100不随K5K0变化其中,K7(PC4)、K6(PC2)分别对应选通输入信号与接受响应信号,L7(PC5)、L6(PC1)分别对应输入缓冲器满信号与输出缓冲器满信号。
8、分析如下:1) 在K7、K6均置低电平时,、为高电平,表示输入缓冲区满,输出缓冲区空,数据从A口输入通过B口输出,L5L0会随K5K0的输入改变即时改变;2) 在K7置低电平、K6置高电平时,接受响应信号无效,为低电平,表示输出缓冲区满,程序处于读取状态信号的循环中,新输入的数据无法从B口输出,导致L5L0不随K5K0变化;3) 在K7置高电平、K6置低电平时,选通输入信号无效,为低电平,表示输入缓冲区空,程序处于读取状态信号的循环中,上一时刻输入的数据被锁存,新数据无法输入,导致L5L0不随K5K0变化;4) 在K7置高电平、K6置高电平时,选通输入信号无效,接受响应信号无效,输入缓冲区空,
9、输出缓冲区满,与3)中相同,新数据无法输入,导致L5L0不随K5K0变化。五、 思考题1. 当8255A工作于方式0时,端口C可用于数据传送。但当工作于方式1或方式2时,端口C是否还可用于数据传送?答:端口C在工作于方式1或方式2时,C口的某些位会被作为控制和状态信号进行使用,这些引脚不能用于数据传送,而其余的引脚仍可用于数据传送。2. 本实验箱中的LED为共阴极接法,输出电平与LED点亮关系如何确定?若LED为共阳极接法,输出电平与LED点亮关系又该如何确定?答:若LED为共阴极接法,输出低电平,LED熄灭;输出高电平,LED点亮。若LED为共阳极接法,输出高电平,LED熄灭;输出低电平,L
10、ED点亮。六、 心得体会本次实验进行了8255A并行接口的两个实验,分别在8255A的方式0与方式1下进行实验。方式的选择与端口的配置都通过工作方式控制字的输出来进行选择。其中,方式0是基本的输入/输出工作方式,实现了CPU与外设接口的无条件数据传送。而工作方式1是选通输入/输出方式,CPU与外设通过输入口的握手联络线与输出口的联络信号进行交互。输入时,外设通过选通输入信号将输入数据选通至8255A的输入口,而CPU通过输入缓冲器满信号判断是否读新的数据。输出时,外设通过接受响应信号通知CPU数据已经取走,而CPU通过输出缓冲器满信号判断是否输出新的数据。这样的应答模式设计,实现了低速外设与高
11、速CPU的匹配,使用起来更科学也更灵活。实验五 8253计数器/定时器接口实验一、 实验目的1. 学会通过PC总线、驱动器、译码器等在PC机外部扩充新的芯片。2. 了解8253计数器/定时器的工作原理。3. 掌握8253初始化的程序设计方法。4. 掌握8253方式0的计数方式的使用方法和方式3方波产生的方法。二、 实验内容1. 实验一将8253的计时器0设置为工作于方式0,设定一个计数初值,用手动逐个输入单脉冲,观察OUT0的电平变化。硬件连接:断开电源,按下图将8253接入系统:1) 将8253的CS接I/O地址输出端280H287H;2) 将8253的计数器0的CLK0与单脉冲信号相连,以
12、用来对单脉冲进行计数;3) 将8253的GATE0接向+5V,以允许计数器0工作;将8253的OUT0街道LED发光二极管,以显示8253计数器0的输出OUT0的状态。2. 实验二将8253的计数器0、1均设置为工作方式3(方波)。要求是当CLK0接1MHz时,OUT1输出1Hz的方波,OUT1的输出由LED显示出来。将计数器0与计数器1串连使用,计数器0的输出脉冲OUT0作为计数器1的时钟输入CLK1。 硬件连接:断开电源,按下图将8253接入系统。 三、 程序代码及实验框图1. 实验一:8253计数器工作于方式0程序代码CTRL EQU 283HTIME0 EQU 280HTIME1 EQ
13、U 281HDATA SEGMENTMESS DB ENTER ANY KEY RETURN TO DOS!,0DH,0AH,$DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESS ;显示提示信息MOV AH,09HINT 21HMOV AL,00010000BMOV DX,CTRLOUT DX,AL ;计时器0设置工作方式0,十进制计数MOV AL,03H ;计数器0赋初值3MOV DX,TIME0OUT DX,AL COUNT: MOV AH,06HMOV DL,0FF
14、HINT 21HJZ COUNT ;若有键按下,则退出MOV AX,4C00HINT 21HCODE ENDSEND START实验框图2.实验二:8253计数器工作于方式3程序代码CTRL EQU 283HTIME0 EQU 280HTIME1 EQU 281HDATA SEGMENTMESS DB ENTER ANY KEY RETURN TO DOS!,0DH,0AH,$DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESSMOV AH,09H ;显示提示信息INT 2
15、1HMOV AL,00111110BMOV DX,CTRLOUT DX,AL;定时器0设置工作方式3MOV AX,1000MOV DX,TIME0OUT DX,ALXCHG AH,ALOUT DX,AL;计时器0送初值MOV AL,01111110BMOV DX,CTRLOUT DX,AL;定时器1设置工作方式3MOV AX,1000MOV DX,TIME1OUT DX,ALXCHG AH,ALOUT DX,AL;计时器1送初值 COUNT:MOV AH,06H MOV DL,0FFHINT 21HJZ COUNT ;若有键按下,则退出MOV AX,4C00HINT 21HCODE ENDSE
16、ND START实验框图四、 实验结果及分析1. 实验一:8253计数器工作于方式0实验现象通过TPC-ZK实验板上的按键输入四个单脉冲后,LED灯点亮。分析定时器0处于工作方式0,初值置为3。如下图所示,手动输入第一个单脉冲时,计数器在脉冲下降沿置初值。继续输入三个单脉冲后,计数器每次在脉冲下降沿做-1计数,最终输出OUT变为高电平,LED灯随即被点亮。2. 实验二:8253计数器工作于方式3实验现象LED灯不断闪烁,闪烁频率接近1Hz,占空比接近50%。分析定时器0与定时器1处于工作方式3,即方波发生器。定时器0的时钟CLK0输入实验板上的1MHz的信号,定时器0被赋初值1000,输出为对
17、输入信号1000分频后的方波信号,即1kHz;定时器0的输出作为定时器1的时钟CLK1,定时器1对该1kHz信号再次进行1000分频,最终得到1Hz信号输出到LED显示。五、 实验中遇到的问题及解决方法在进行程序设计的过程中,一开始不太理解8254控制字的第4位和第5位,赋初值时出现问题,后来才理解:只写低八位或只写高八位时初值的其余八位自动赋0,而先低后高则是先送入低八位后送入高八位,这主要由计数器一次只能接8位引起。给两个计数器赋初值时,应按照“赋控制字、赋初值”的顺序来,否则会出错。六、 思考题1. 实验一中定时器0的输出OUT0的电平是如何变化的,为什么?答:当控制字与计数初值送至定时
18、器0后,定时器开始工作,输出OUT0为低电平。每接受一个脉冲下降沿,计数值减1,当计数值为0时输出OUT0变为高电平。过程如下图所示。2. 实验二中计数器0、计数器1的计数初值是如何确定的?答:工作方式3的计数初值即是对计数器时钟信号进行分频的倍数,为了将1MHz变为1Hz输出,需要用两个计数器对输入时钟信号进行1000000分频,用每个计数器分别完成1000分频即可,因此可以赋计数初值均为1000。实际上,只要计数初值的赋值不超过16位的限制,使两个计数器的初值乘积为1000000都可以实现。3. 是否能用现有的实验装置通过使用8253的方式0和方式3实现一个延时10秒的高电平输出?即:82
19、53某个计数器的输出在初始化完成后为低电平,10秒后变为高电平,具体如何实现?答:只要让工作于方式3的计数器提供一定频率的方波信号,将其作为工作于方式0的计数器的时钟信号,再给计数器赋适当初值即可实现。例如,可以将8253的计数器2设置为方式0,计数器1与计数器0设置为方式3,按实验二的做法,连接计数器1和计数器1,将得到的1Hz信号作为计数器2的时钟信号,并给计数器2赋计数初值10,即可在初始化完成后10秒变为高电平。七、 心得体会本次实验学习了计数器/定时器接口实验。其中实验一将8254置于方式0计数结束产生终端方式,实现了定时器的功能,工作周期只有一次,当计数减为0后,自动停止计数,OUT输出高电平。实验二将8254置于方式3方波频率发生器,通过两个1000进制计数器的级联,实现了对实验板上10MHz信号的分频,输出1Hz的信号。两者结合还可以实现脉冲的延迟,十分灵活。在之前的数电实验中,主要通过Verilog语言进行FPGA设计实现计数器,方法比较简单。而本次实验主要通过赋控制字和操作数对计数器工作模式进行控制,加深了我对数字电子技术与输入输出接口电路的理解。