TDX-PITE_80X86微机原理实验_基本I/O输入输出及时序观测与分析实验

本文详细描述了一个关于I/O接口电路设计的实验,包括实验目的(如掌握I/O操作和时序理解)、所需设备、实验内容(如8/16位数据读写和显示)、工作原理(使用三态缓冲器和锁存器)、以及实验步骤,涉及编程和时序观测。
摘要由CSDN通过智能技术生成

目录

8.1.1实验目的

8.1.2实验设备

8.1.3实验内容

8.1.4实验原理

8.1.5实验代码

8.1.6实验说明及步骤


8.1.1实验目的

1.掌握基本 I/O 接口电路的设计方法。

2.熟悉I/O 操作指令及 8 /16 位I/O 口的操作方法

3.通过观测时序图,掌握 I/0 操作时各信号的时序关系。

8.1.2实验设备

PC 机一台,TDX-PITE 实验装置一套。

8.1.3实验内容

1.利用一组三态缓冲器 245、锁存器 374 或 574 构成的 8 位0 接口,实现微机对外部输入数据的读取和对输出数据的输出。用拨动开关和数据灯作为输入和输出显示设备,将读到开关的数据显示在数据灯上。

2.利用两组三态缓冲器 245、锁存器 374 或 574 构成的16 位/0 接口实现微机对外部输入数据的读取和对输出数据的输出。用拨动开关和数据灯作为输入和输出显示设备,将读到开关的数据显示在数据灯上。

3.利用两组三态缓冲器 245、锁存器 374 或 574 构成的 16 位的/0 接口,按照 16 位的/0操作方式,在开关及 LED 显示单元实现 16 位流水灯。

8.1.4实验原理

1输入口设计

输入接口一般用三态缓冲器实现,外部设备输入数据通过三态缓冲器,通过数据总线传送给微机系统。74LS245 是一种 8 通道双向的三态缓冲器,其管脚结构如图 8.1.1 所示。DIR 引脚控制缓冲器数据方向,DIR 为 1表示数据由 A[7:0]至 BI7:0],DIR 为 0 表示数据由 B[7:0]至 A[7:0]。G 引脚为缓冲器的片选信号,低电平有效。

8.1.5实验代码

;Io-8.asm
;8位I/O接口电路设计实验

IOY0   EQU   0600H          ;片选IOY0对应的端口始地址

STACK1 SEGMENT STACK
       DW 256 DUP(?)
STACK1 ENDS

CODE   SEGMENT
       ASSUME CS:CODE
START: MOV  DX,IOY0         ;读写基本I/O单元8位的端口
       IN   AL,DX
       OUT  DX,AL
       JMP   START                 
CODE   ENDS
       END  START

8.1.6实验说明及步骤

1.8位I/0 操作实验

本实验实现的是将开关 K[7:0]的数据通过输入数据通道读入 CPU 的存器,然后再通过输出数据通道将该数据输出到数据灯显示,该程序循环运行。实验步骤如下。

(1) 实验接线图如图 8.1.5 所示,按图连接实验线路图

                                图 8.1.5 8位1/0 接口设计实验参考接线图

(2) 编写实验程序(例程文件名为: IO-8.ASM) ,经编译、连接无误后装入系统。
(3) 单击按打开“时序观测窗”,在窗内右键调出“选择观察信号”界面,勾选要观测的信号“IOY0、IOW#、IOR#、XA19..0、XD7..0”,点击确定。
(4) 拨动开关 K7..K0 为 12H,即 0001 0010B。
(5) 单击 “单步”按两次,“时序观测窗”显示结果如图 8.1.6 所示,通过时序图可以看出 CPU 在IOYO 片选有效期间,对 0600H 地址进行了 / 读操作,读取了上一步开关置的 12H 数据。 

 

(6)单击“单步”按钮一次,“时序观测窗”显示结果如图8.1.7所示,通过时序图可以看出CPU在IOYO片选有效期间,对0600H地址进行了IО写操作,写入了上一步读取的12H数据。

 

(7) 观看数据灯显示与开关是否一致 

首先,需要将TDX-PITE实验箱上的数码管连接起来。 1. 将TDX-PITE的VCC连接到实验箱上的数码管的VCC。 2. 将TDX-PITE的GND连接到实验箱上的数码管的GND。 3. 将TDX-PITE的SCLK连接到实验箱上的数码管的SCLK。 4. 将TDX-PITE的SDI连接到实验箱上的数码管的DIN。 接下来,需要使用消抖开关作为中断源。 1. 将消抖开关的一端连接到TDX-PITE的INT引脚。 2. 将另一端连接到实验箱上的一个GPIO引脚。 然后,通过编写程序来实现中断处理函数,当消抖开关被按下时,数码管显示相应的数字。 下面是一个简单的示例代码: ```c #include <avr/io.h> #include <avr/interrupt.h> volatile uint8_t flag = 0; ISR(INT0_vect) { flag = 1; } int main(void) { // 初始化端口 DDRB |= (1 << PB3); // 设置PB3为输出 DDRD &= ~(1 << PD2); // 设置PD2为输入 PORTD |= (1 << PD2); // 上拉PD2 // 初始化中断 EICRA |= (1 << ISC01); // 下降沿触发 EIMSK |= (1 << INT0); // 开启INT0中断 sei(); // 开启总中断 while (1) { if (flag) { PORTB = 0x01; // 数码管显示1 flag = 0; } else { PORTB = 0x00; // 数码管不显示 } } } ``` 在这个示例代码中,我们使用了INT0中断来检测消抖开关的状态。当消抖开关被按下时,会触发INT0中断,进入中断处理函数ISR(INT0_vect)。在中断处理函数中,我们设置了一个标志位flag,表示消抖开关被按下。在主函数中,我们不断检测flag的状态,如果flag为1,则数码管显示1,否则数码管不显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式Dora

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值