单片机CPU与外部设备交换信息通常有如下几种方式:无条件传送方式,查询传送方式和中断传送方式。我们以单片机与微型打印机接口为例讲述这三种方式。假定用户要打印三个数据,这三个数据保存在单片机的内部数据存储器10H,11H,和12H中,8051用并口P2与微型打印机的并行数据口DB进行数据交换。
(1)无条件传送方式
这种数据传送方式中没有联络信号,即CPU总是认为打印机在如何时候都是处于“准备好”的状态。这种传送方式中只需要在程序中加入数据送往P2的指令,数据传送便可以实现。但这种数据传送方式有一个致命弱点,数据易丢失,这是因为CPU的速度相当快,而打印机的速度相对来说较慢,其结果是在打印机打印一个数据的时间内,CPU已送来了多个数据。
(2)查询传送方式
查询传送也称条件传送是,在这种传送方式中,无论是输入还是输出,都是以计算机为主动一方。为了数据传送的正确性,计算机在传送数据之前,要首先查询外部设备是否已处于“准备好”状态;对于输出操作,则要知道外设是否已把上一次计算机输出的数据处理完毕。只有通过查询,确信外设已处于“准备好”的状态,计算机才能发出访问外设的指令,实现数据交换。状态信息一般只需要一位二进制码表示“准备好”和“未准备好”两种状态,所以,在接口中只用一个D触发器就可用来保存和产生状态信息。例如,“准备好”有D触发器Q=1表示;“没准备好”用Q=0表示.查询方式过程:查询,即读“准备好”引脚,若该引脚为“准备好”状态,则进行数据传送,若引脚为“未准备好”状态,则继续查询,直到该引脚为“准备好”状态,再进行数据传送。
在我们这个例子中可以在打印机上增加一条名为BUSY的引脚,打印机开始打印一个数据前,使该引脚为高电平,打印完一个数据后,使该引脚为低电 ,该引脚的初始化为0。我们将该引脚与单片机的引脚INT0相连,单片机每发送一个数据前,都查询该引脚状态是否为0,若为0,则发送数据。否则,就继续查询,直到该引脚为0时,再发送数据,请看例子:
上电后打印机的BUSY引脚为0。
单片机运行第一条指令,设置打印缓冲区起点。
单片机运行第二条指令,设置打印字节。
单片机运行第三条指令,读入打印机BUSY引脚的状态,判断该状态是否为0。为0,则发送第一个数据,打印机设置BUSY引脚为0,开始打印。
单片机运行下一个指令,打印缓冲区加1,使下一次能发送第二个数据。判断数据是否已经发完,未发完,准备发送下一个数据,读打印机引脚BUSY的状态 。
引脚BUSY状态为1,继续查询。
引脚BUSY状态为0,发送第二个数据,打印缓冲区加1,使下一次能发送第三个数据,判断数据是否已经发完,未发完,准备发送下一个数据,打印缓冲区加1,判断数据是否已经发完。三个数据都发送完,程序结束。
可以看出,这种方式的缺点是需要有一个等待的过程,特别是在连续进行数据传送时,由于外设工作速度比CPU慢得多,所以CPU在完成一次数据传送后要等待很长的时间才能进行下一次传送。在等待过程中,CPU不能进行其他操作,所以效率比较低,提高CPU效率的一个有效方式是采用中断方式。
(3)中断方式
刚才我们讲到,无条件传送方式不可靠,查询传送方式太浪费CPU的时间。
为了解决这个问题,单片机设置了另一个传送方式—中断方式。所谓中断,就是指中央处理器CPU正在处理某件事情的时候,外部发生某一事件,请求CPU迅速去处理,于是,CPU暂时中断当前的工作,转入处理所发生的事件;中断服务处理以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。实现这种功能的部件称为中断系统,产生中断的请求源称为中断源。
关键字:单片机 数据传输方式
引用地址:
8051单片机的数据传输方式
推荐阅读最新更新时间:2024-03-16 15:50
10位串行模数转换芯片AD7810的原理及应用
摘要: 文章对高速低功耗10位串行模数转换芯片AD7810的引脚功能、主要参数、特性及典型应用作了详尽的介绍,同时给出了微处理器PIC16C6X/7X以及8051单片机与AD7810模数据转换器的的通讯接口电路和程序清单。 AD7810是美国模拟器件公司(Analog Devices)生产的一种低功耗10位高速串行A/D转换器。该产品有8脚DIP和SOIC两种封装形式,并带有内部时钟。它的外围接线极其简单,AD7810的转换时间为2 μs ,采用标准SPI同步串行接口输出和单一电源(2.7V~5.5V)供电。在自动低功耗模式下,该器件在转换吞吐率为1kSPS时的功耗仅为27 μW ,因此特点适合于便携式仪表及各种电池供电的
[模拟电子]
OLED 3.12寸 256*64 SSD132的stm32f103单片机驱动程序
OLED 3.12寸 256*64 驱动程序 stm32f103 单片机源程序如下: /* MOD:25664 (dots:256*64) IC : SSD1322 (加入图片测试功能) MCU: W78E516D 12MHZ //============================ 说明:6800:BS0=1,BS1=1; 8080:BS0=0,BS1=1; (默认) 3-SPI:BS0=1,BS1=0; 4-SPI:BS0=0,BS1=0; */ /* 接口定义: 1. VSS--------------GND 2. VDD--------------+3.3V 3. NC 4
[单片机]
89C51单片机怎么样?89C51单片机过时了吗
89C51单片机是一款8位单片机,最常用的是艾特梅尔产的AT89C51,我在上学时是用的最多的一款单片机芯片,现在来说它早已停产多年了。我认为尽管这样,作为一种性价比很高的芯片非常适合刚接触单片机的小白们学习,我认为在一些低端产品中还是能见到它的“踪影”,下面我来谈谈我的看法。 单片机作为一种控制类芯片,不管其性能是如何发展,现在仍然没有摆脱它的基本架构。我认为作为刚学单片机的新手来说这款芯片并没有过时,俗话说“万仗高楼平地起”,我们学单片机不仅仅是学单片机芯片本身的内部结构,我认为更重要的是学习单片机的一些硬件外设和软件部分。从这一方面来讲选一款经典的低端芯片来学习是我们的明智之举,一来可以增加我们学习的自信心,二来也可以节
[单片机]
PIC单片机之PWM原理
1,什么是PWM 什么是PWM,专业点说脉宽调制,通俗点说 就是不断的输出高低电平。 比如 单片机 40ms的时间 输出高电平然后60ms的时间 输出低电平接着一直不断周期性的交替输出高低电平 这就是典型的PWM波。高电平输出的时间40ms就是传说中的脉宽,40ms+60ms=100ms 便是PWM的周期。假定我们把周期定为100ms.我们可以根据我们的需要 把高电平的时间加大或者减小,比如 高电平输出时间加大为80ms.那么低电平的时间就变为20ms. 也可以 高电平输出时间减小为20ms.那么低电平的时间就变为80ms.这即是脉宽调制 调的便是这高电平的时间。 而高电平(脉宽)在周期中,所占用的时间比例 就被称为占空比。用
[单片机]
[单片机框架][os层] RTX5 中间件 公共函数
Keil RTX5 是一种免版税、确定性、全功能的实时操作系统,它实现了 CMSIS-RTOS API v2,这是一种适用于基于 Cortex-M 处理器的设备的通用 RTOS 接口。功能包括定期激活定时器功能、内存管理和线程之间的消息交换。 现在RTX4和RTX5属于CMSIS软件包的一部分,Apache2.0授权,几乎随意商用。Github开源地址:https://github.com/ARM-software/CMSIS_5 重新封装RTX5函数,以便适配RTX4 / FREERTOS / FREERTOS_NRF_RTC。 特征 开源免费的确定性RTOS。 支持时间片,抢占式和合作式调度。 以低的中断延迟执
[单片机]
基于瑞萨单片机自动寻迹智能车的设计
随着计算机、通信、传感器等技术的发展,智能车成为汽车发展的趋势。传感器技术在智能车的应用中越来越广泛,如在夜间、雾天、高危高污染等环境下的行驶。智能车将成为人们生活的一部分。文中以瑞萨智能车大赛为背景,设计了一种以16位微控制器H8/3048F作为小车的控制核心,采用红外反射传感器检测路面引导线,能根据给定参数行驶的电动车。文中从硬件和软件方面详细阐述了智能车工作原理和设计方法,设计的小车具有电路设计简单、软件控制高效等优点。 1 系统总体设计方案 本智能车利用车体前方的光电传感器采集赛道信息、后轴上的光电编码器采集车轮转速的脉冲信号。这些信号经单片机调理后,用于控制小车的运动。同时,内部模块产生的PWM波驱动直流电机,对
[单片机]
基于单片机SRAM工艺的FPGA加密应用
在现代电子系统设计中,由于可编程逻辑器件的卓越性能、灵活方便的可升级特性,而得到了广泛的应用。由于大规模高密度可编程逻辑器件多采用SRAM工艺,要求每次上电,对FPGA器件进行重配置,这就使得可以通过监视配置的位数据流,进行克隆设计。因此,在关键、核心设备中,必须采用加密技术保护设计者的知识产权。 1 基于SRAM工艺FPGA的保密性问题 通常,采用SRAM工艺的FPGA芯片的的配置方法主要有三种:由计算机通过下载电缆配置、用专用配置芯片(如Altera公司的EPCX系列芯片)配置、采用存储器加微控制器的方法配置。第一种方法适合调试设计时要用,第二种和第三种在实际产品中使用较多。第二种方法的优点在于外围电路非常简单,体积
[单片机]
电压表的微控制器
图1中的电路是以前一个设计实例的扩展(在无内置ADC的微控制器中如何使用模拟输入),并参考了另一篇设计实例(不用外接开关晶体管如何驱动一个七段LED显示屏)介绍的技巧(参考文献1和参考文献2)。本电路增加了一个串行连接,只需要一个双绞线对就可以向一台兼容PC发送每个测量值。串行连接采用微软的HyperTerminal作测试,其配置是:115200波特;8、N、1;无数据流控制。 简单地说,软件每次通过RA0和RB7两根线,驱动一只七段 LED 显示器。将RA0输出设为高,RB7作为输入,可激活共阳极显示器DS3。设RA0输出为低,RB7作为输入,激活共阴极显示器 DS2。用RA0作输入时,设RB7输出为高,可激活共阳极显示器D
[焦点新闻]