外设功能

有效使用单片机外设功能:(5)程序设计(下)

上期我们已经学习了将程序放在地址空间中,并在向量表中显示保存位置的内容。本期将介绍在执行程序及产生中断时CPU内会发生什么变化。

引导程序的运行―程序计数器

一般来说,程序就是计算机将所要进行的处理按顺序排列的指令集。在单片机中,将程序保存在地址空间(存储器 空间)中(上期曾介绍过),并由CPU来执行(处理)指令。假设地址空间中的一个地址保存一条指令,先执行某个地址中的指令(如“将值置位到CPU中”处理),接着执行下一个地址中的指令,接下来再执行下一个地址中的指令……,像这样通过连续执行指令,便可执行程序。

那么,CPU是如何判断执行指令的顺序呢?在单片机中,程序被执行的时候“程序计数器(PC)”的值也同时被更新。存放在CPU内的指令地址中,程序计数器存储有下一条CPU将要执行的指令所在的地址。执行了某个地址的指令后,下一个该执行哪个地址中的指令呢?这个答案由程序计数器来告诉你。

一般来说,程序被保存在连续的地址中, 再由CPU按顺序执行存放在各个地址中的指令。图1为程序计数器的示意图。图中,假定(1)执行地址1000h中的指令,(2)执行地址1000h中的指令后,程序计数器的値自动增加一个量并显示出下一个地址1001h,接下来,(3)CPU执行地址1001h中的指令。

有效使用单片机外设功能:(5)程序设计(上)

我们在之前的四期中对利用单片机的功能进行程序设计进行了说明。单片机内置了非常便于使用的外设功能,大家一定也能感受到单片机可应对各种要求的能力。但是,如果要有效地运行单片机,程序是不可或缺的,那么程序到底是如何运行的呢?从本期开始,我们将分两期连续向大家介绍单片机与程序的关系。

关注单片机的存储器

在此之前,GR-SAKURA电路板(搭载瑞萨电子单片机“RX63N”)的程序设计是使用Web编译器来进行的。将通过编译器搭建的程序(Object Code,结果代码)如同写入U盘一样将之传送到GR-SAKURA电路板后再执行。那么,问题来了。写入(传送到)单片机的程序应该保存在哪儿呢?另外,程序又是如何被执行的呢?在解答这些问题的同时,让我们一起来了解一下单片机与程序的关系吧。

首先来了解存储器﹑主存储器和外置存储器的两种作用

记忆(保存)程序和数据的地方即存储器。存储器有以下两种类型。

主存储器

CPU能够直接进行存取的存储器,用于保存正在执行中的程序和数据

外置存储器(辅助存储器、二级缓存器)

有效使用单片机外设功能:(4)中断功能

我们已经介绍了应用单片机的外设功能的结构和使用方法。本期我们介绍更有效地应用单片机而必须的外设功能——“中断功能”。

提高作业效率的“中断功能”指的是什么?

我们回顾一下本系列第二期的“定时器”篇中简单介绍过的“中断功能”概念。任何人都有过这样的经验,就是“将鸡蛋放进沸腾的热水中,直到鸡蛋煮熟的10分钟内要确认好几次时钟”的经历。在单片机的世界中也同样,在等待某种状态达成时,具有对对象进行定期检查的方法。例如,在等待向GPIO(通用I/O端口)的输入从0变为1时,程序可以一定的间隔来检查GPIO的状态。这种处理被称为“轮询”。

轮询虽然是一种了解状态变化的简单方法,但是如果检查的频度低(间隔长)就会错过变化,如果频度过高(间隔短),即使查也查不到变化“空耗”。由于轮询通过简单的程序便能完成处理,所以在掌握对象的变化频度时是有效的。但是,进行多次检查也会给单片机带来负荷,对功耗不利。

因此就要用到本期介绍的“中断功能”。产生中断时,CPU会暂时停止正在执行的任务,转而进行别的任务。也就是有别的任务“穿插”进来的意思(图1) 。当中途穿插进来的任务结束后,CPU再返回处理原来的任务。

有效使用单片机外设功能:(3)串行通信

本连载共分6期,将介绍单片机外设功能的结构及使用方法。本期学习的串行通信是单片机重要的作用之一,就是与单片机外部的外围设备进行信息交换。此时,串行通信起到非常重要的作用。

单片机与外围设备的连接:并行和串行

单片机是嵌入式设备的“头脑”,其与作为嵌入式设备的“手和脚”是各种外围设备(输入输出设备等)连接。单片机应该怎样与这些外围设备连接才好呢?比如,我们来考虑一下将传感器与单片机连接的情况。如果使用本连载第1期中介绍的“GPIO”的话,从传感器向单片机传送8位信号时需要使用8个引脚。这种传送模式被称为并行(并行通信)模式(图1―左)。但是,仅一个传感器就需要连接8个引脚,确实太可惜了 ,是否还有连接更少的引脚就能达到同样目的的方法呢?

有效使用单片机外设功能:(2)定时器

本连载主要介绍为了应用单片机而无法避开的必需的外设功能。本连载中,将以搭载了瑞萨电子的单片机--RX63N的电路板“GR-SAKURA”为例进行说明,请你也实际操作试试看!

一手包办有关时间和时刻的处理!

在单片机中,不仅频繁地使用“○月○日○点○分”这种时刻显示,显示过去的时间和一定的周期这种形式也被频繁地使用。例如,“该程序从运行开始过去了多少时间?”、“每秒输送128次信号”等等。另外,还经常被用于“等待指定的时间”、“经过指定的时间后将转移到下一个处理”这样的情况。对这些与时间和时刻有关进行处理的外设功能就是定时器(图1)。

有效使用单片机外设功能:(1)GPIO

本连载共分6期,将介绍有效使用单片机外设功能的结构及使用方法。通过本连载的学习,我们将能学到各种单片机共通的基本外设功能,并可广泛应用到各个方面。

单片机仅靠CPU和内存是无法运行的!

有效使用单片机不可或缺的“外设功能”是什么呢?

正如过去连载的“单片机入门”系列中所介绍的那样,对电子产品进行控制的单片机是由CPU、内存及外设功能等部分组成的(图1)。CPU根据指令(程序),执行运算、数据的读写以及进行条件判断等,而内存则用来保存该程序(记忆)。

“图1:单片机内部结构示意图”
图1:单片机内部结构示意图

外设功能是指为了使单片机便于使用的各种功能。例如,CPU为了与外部的传感器及开关等进行信号交换,就需要“输入/输出端口(I/O端口)”这种外设功能。