您的位置:首页技术文栏精典网文
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

快速的学习一门单片机

[日期:2008-01-22 ] [来源:网络 作者:佚名] [字体: (投递新闻)
任何一款 MCU,其基本原理和功能都是大同小异,所不同的只是其外围功能模块的
配置及数量、指令系统等。对于指令系统,虽然形式上看似千差万别,但实际上只 是符号的不同,其所代表的含义、所要完成的功能和寻址方式基本上是类似的。因 此,对于任何一款 MCU,主要应从如下的几个方面来理解和掌握:

*MCU 的特点:要了解一款 MCU,首先需要知道就是其 ROM 空间、RAM 空间、IO 口 数量、定时器数量和定时方式、所提供的外围功能模块(Peripheral  Circuit)、 中断源、工作电压及功耗等等。

*了解这些 MCU  Features 后,接下来第一步就是将所选 MCU 的功能与实际项目开 发的要求的功能进行对比,明确那些资源是目前所需要的,那些是本项目所用不到 的。对于项目中需要用到的而所选 MCU 不提供的功能,则需要认真理解 MCU 的相关 资料,以求用间接的方法来实现,例如,所开发的项目需要与 PC 机 COM 口进行通 讯,而所选的 MCU 不提供 UART 口,则可以考虑用外部中断的方式来实现;

*对于项目开发需要用到的资源,则需要对其 Manua*进行认真的理解和阅读,而 对于不需要的功能模块则可以忽略或浏览即可。对于 MCU 学习来讲,应用才是关 键,也是最主要的目的。

*明确了 MCU 的相关功能后,接下来就可以开始编程了。对于初学者或初次使用 此款 MCU 的设计者来说,可能会遇到很多对 MCU 的功能描述不明确的地方,对于此 类问题,可以通过两种方法来解决,一种是编写特别的验证程序来理解资料所述的 功能;另一种则可以暂时忽略,程序设计中则按照自己目前的理解来编写,留到调 试时去修改和完善。前一种方法适用于时间较宽松的项目和初学者,而后一种方法 则适合于具有一定 MCU 开发经验的人或项目进度较紧迫的情况;

*指令系统千万不要特别花时间去理解。指令系统只是一种逻辑描述的符号,只 有在编程时根据自己的逻辑和程序的逻辑要求来查看相关的指令即可,而且随着编 程的进行,对指令系统也会越来越熟练,甚至可以不自觉地记忆下来;

MCU 的基本功能:

对于绝大多数 MCU,下列功能是最普遍也是最基本的,针对不同的 MCU,其描述的 方式可能会有区别,但本质上是基本相同的:

*Timer(定时器):Timer 的种类虽然比较多,但可归纳为两大类:一类是固定 时间间隔的 Timer,即其定时的时间是由系统设定的,用户程序不可控制,系统只 提供几种固定的时间间隔给用户程序进行选择,如 32Hz,16Hz,8Hz 等,此类
Timer 在 4 位 MCU 中比较常见,因此可以用来实现时钟、计时等相关的功能;另一 类则是 Programmable  Timer(可编程定时器),顾名思义,该类 Timer 的定时时 间是可以由用户的程序来控制的,控制的方式包括:时钟源的选择、分频数
(Prescale)选择及预制数的设定等,有的 MCU 三者都同时具备,而有的则可能是 其中的一种或两种。此类 Timer 应用非常灵活,实际的使用也千变万化,其中最常 见的一种应用就是用其实现 PWM 输出(具体的应用,后续会有特别的介绍)。由于 时钟源可以自由选择,因此,此类 Timer 一般均与 Event  Counter(事件计数器) 合在一起;

*IO 口:任何 MCU 都具有一定数量的 IO 口,没有 IO 口,MCU 就失去了与外部沟 通的渠道。根据 IO 口的可配置情况,可以分为如下几种类型:

**纯输入或纯输出口:此类 IO 口有 MCU 硬件设计决定,只能是输入或输出,不 可用软件来进行实时的设定;

**直接读写 IO 口:如 MCS-51 的 IO 口就属于此类 IO 口。当执行读 IO 口指令 时,就是输入口;当执行写 IO 口指令则自动为输出口;

**程序编程设定输入输出方向的:此类 IO 口的输入或输出由程序根据实际的需 要来进行设定,应用比较灵活,可以实现一些总线级的应用,如 I2C 总线,各种 LCD、LED  Driver 的控制总线等;

**对于 IO 口的使用,重要的一点必须牢记的是:对于输入口,必须有明确的电 平信号,确保不能浮空(可以通过增加上拉或下拉电阻来实现);而对于输出口, 其输出的状态电平必须考虑其外部的连接情况,应保证在 Standby 或静态状态下不存在拉电流或灌电流。

*外部中断:外部中断也是绝大多数 MCU 所具有的基本功能,一般用于信号的实 时触发,数据采样和状态的检测,中断的方式由上升沿、下降沿触发和电平触发几 种。外部中断一般通过输入口来实现,若为 IO 口,则只有设为输入时其中断功能 才会开启;若为输出口,则外部中断功能将自动关闭(ATMEL 的 ATiny 系列存在一 些例外,输出口时也能触发中断功能)。外部中断的应用如下:

**外部触发信号的检测:一种是基于实时性的要求,比如可控硅的控制,突发性 信号的检测等;而另一种情况则是省电的需要;

**信号频率的测量;为了保证信号不被遗漏,外部中断是最理想的选择;

**数据的解码:在遥控应用领域,为了降低设计的成本,经常需要采用软件的方 式来对各种编码数据进行解码,如 Manchester 和 PWM 编码的解码;

**按键的检测和系统的唤醒:对于进入 Sleep 状态的 MCU,一般需要通过外部中 断来进行唤醒,最基本的形式则是按键,通过按键的动作来产生电平的变化;

*通讯接口:MCU 所提供的通讯接口一般包括 SPI 接口,UART,I2C 接口等,其分 别描述如下:

**SPI 接口:此类接口是绝大多数 MCU 都提供的一种最基本通讯方式,其数据传 输采用同步时钟来控制,信号包括:SDI(串行数据输入)、SDO(串行数据输 出)、SCLK(串行时钟)及 Ready 信号;有些情况下则可能没有 Ready 信号;此类 接口可以工作在 Master 方式或 Slave 方式下,通俗说法就是看谁提供时钟信号, 提供时钟的一方为 Master,相反的一方则为 Slaver;

**UART(Universal  Asynchronous  Receive  Transmit):属于最基本的一种异 步传输接口,其信号线只有 Rx 和 Tx 两条,基本的数据格式为:
Start  Bit  +  Data  Bit(7-bits/8-
bits)  +  Parity  Bit(Even,  Odd  or  None)  +  Stop  Bit(1~2Bit)。一位数据所占的 时间称为 Baud  Rate(波特率)。对于大多数的 MCU 来讲,数据为的长度、数据校

阅读:
录入:东哥

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
赞助商广告