带4路比较器 单片机的单片机

微控网-MSP430单片机技术论坛
【MSP430单片机比较器A模块】
编写:DC / 2005.12./
&&&简介MSP430单片机比较器A模块结构和应用范例
2-比较器A模块
&&&以下图可以看出比较器A的结构大概可以分4部分构成,分别为模拟输入,比较器A核心,低通虑波器,基准电压部分和中断部分组成。
&&&首先,整个比较器A的工作必需由CAON位置为1时才能工作的,此位属CACTL1控制寄存器。单片机上电时此位是为0的,也就是说比较器是不工作的。
以下大概讲述几个部分电路的功能和一些相关信息。
模拟输入电路:
&&外部模拟引脚信号CA0,CA1(正负端)可以分别由P2CA0,P2CA1位控制开或关。经过软件的设置可以分别与内部的几个基准电压进行比较(0.5VCC,0.25VCC,三极管门值电压)或外部其中的电压进行比较。
&&&&应用的硬件比较可以分为以下三种组合:
&&&两个外部引脚输入信号进行比较
&&&其中一个外部引脚信号与内部的0.5VCC或0.25VCC比较
&&&其中一个外部引脚信号与内部基准电压比较
参考电压发生器
&&参考电压电路是可以由CARSEL,CARERF0,CARERF1位来控制电压的产生。通过软件设置可以选择几种电压输出到比较器的输入中作为比较,当然此参考电压也可以通过单片机的引脚往外部提供参考电压之用。
比较器A核心
&&比较器CAON位控制开关,CAEX位控制位控制方向。
低通虑波器
&&低通虑波器只需一个CAF位来控制此虑波器的功能开与关。此虑波器功能是用于消除比较器输出信号的毛剌,以保证信号的质量和中断请求的可靠性。
&&比较器A模块是具有中断功能的,如比较器功能CAIE中断允许开了,在CAIF信号产生时将生产中断(当然GIE要为1时)。比较器A模块是具有中断独立向量的,是一个单独的中断,CUP接受请求后会硬件自动清除中断标志位CAIFG。
3-比较器模块相关寄存器说明
&&比较器的相关寄存器如下表
&&&&&&&&&&&&&&&&&&&&
CACTL1&比较器控制寄存器1
CAEX: 控制内部比较器A的输入信号和输出信号的方向
CARSEL:控制内部参考电压加到比较器A的正输入端还是负输入端
由结构图可以看出,CAEX,CARSEL在不同设置时,比较器A输入端的所加的参考电压是有不同的.
请参考以下列表:
-----------------------------------
CARSEL &&CAEX &&&&参考电压接入端
&&0&&&&&& &0 &&&&&&内部参考源加到比较器的正端
&&0 &&&&&&&1 &&&&&&内部参考源加到比较器的负端
&&1 &&&&&&&0 &&&&&&内部参考源加到比较器的负端
&&1 &&&&&&&1 &&&&&&内部参考源加到比较器的正端
CAREF1, CAREF0 选择参考源:
&0 使用外部参考
&1 选择0.25VCC为参考电压
&2 选择0.5VCC为参考电压
&3 选择二极管电压为参考电压,须参见具体IC的资料
CAON: 控制比较器A的打开与关闭
&0 关闭比较器工作
&1 打开比较器工作
CAIES: 中断边沿触发模式选择
&0 上升沿使中断标志CAIFG置位
&1 下降沿使中断标志CAIFG置位
CAIE:比较器中断允许
&0 禁止中断
&1 允许中断
CAIFG: 比较器中断标志
&0 没有中断请求
&1 有中断请求标志信号
CACTL1&比较器控制寄存器2
P2CA1:控制输入端CA1
 <span style="color: # 外部引脚信号不与比较器A连接
 1 外部引脚信号与比较器A连接
P2CA0:控制输入端CA0
 <span style="color: # 外部引脚信号不与比较器A连接
 1 外部引脚信号与比较器A连接
CAF: 选择比较器输出端是否经过RC低通滤波器
 <span style="color: # 开通RC低通滤波器
 1 直通信号
CAOUT: 比较器A输出的信号
 0 CA0小于CA1
 1 CA0大于CA1
CAPD&端口禁止寄存器
  比较器A模块的输入输出与IO口共用引脚,可以控制IO端口输入缓冲器的通断开关.CAPD控制位初始化为0,则端口输入缓冲器有效.当相应位为1时,端口输入缓冲器无效。
程序范例:
#include &msp430x11x1.h&
void main (void)
  WDTCTL = WDTPW + WDTHOLD;     // 停止WDT
  CAPD |= 0x08;           // 断开与IO端口输入
  CACTL2 = P2CA0;          // 设置P2.3为+comp
  CCTL0 = CCIE;           // CCR0 允许中断
  TACTL = TASSEL_2 + ID_3 + MC_2;  // SMCLK/8,计数模式
  _EINT();             // 开总中断
 while (1) // 循环
  CACTL1 = 0x00;          // 没有参考电压
  _BIS_SR(LPM0_bits);        // 进入LPM0
  CACTL1 = CAREF0 + CAON;      // 0.25*Vcc=P2.3, 比较器开
  _BIS_SR(LPM0_bits);        // 再次进入LPM0
  CACTL1 = CAREF1 + CAON;      // 0.5*Vcc=P2.3, 比较器开
  _BIS_SR(LPM0_bits);        // 再次进入 LPM0
  CACTL1 = CAREF1 + CAREF0 + CAON;  // 0.55V on P2.3,比较器开
  _BIS_SR(LPM0_bits);        // 再次进入LPM0
// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
 _BIC_SR_IRQ(LPM0_bits);       //退出LMP0模式
欢迎来到中国MSP430单片机中文技术网站
Copyright&
All Rights Reserved
微控网站备案序号: &单片机的比较器有什么作用_百度知道
单片机的比较器有什么作用
单片机的比较器可以看作1位的ADC。很多场合需要检测模拟电压,比如一个湿度报警器,传感器模拟信号经过放大后直接接在比较器输入端,跟参考电压比较,当大小发生变化时,就可以输出逻辑0、1,单片机检测这个电平就可以进行相应的处理了。这样电路设计起来方便一些。
其他类似问题
为您推荐:
用来电压比较
比较器的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁基于单片机内置比较器的高精度 A/D
介绍了 TI 的 MSP430 系列单片机内置精密比较器,采用内置比较器和外 围电路构成的类似于&&△的高精度 A/D。
基于单片机内置比较器的高精度 A/D下载
下载资料需要,并消耗一定积分。
下载此资料的人还喜欢:
技术交流、我要发言! 发表评论可获取积分! 请遵守相关规定。
本周热点资料
电子资料热门词
上传者其它资料
单片机下载排行【程序】用2051单片机写的比较器模拟AD程序_定时器_中国百科网
【程序】用2051单片机写的比较器模拟AD程序
&#160;&#160;&#160;&#160;文章导读:本程序为用2051单片机写的比较器模拟AD程序,用C语言编写。
This procedure is written using 2051 single-chip analog comparator AD procedures, using C language.
/*io分配:*
;*OUTPUT:*
;*P1.0......模拟量输入*
;*P1.1......DA输入比较基准电压*
;*P1.2~7.....R-2RDA电阻网络*
;*P3.7......LED模拟亮度输出*
;*CPUCLOCKEQU6M*/
//xiaoqilasteditin2001.11
//#pragmasrc
#include"AT89x051.h"
//变量类型标识的宏定义,大家都喜欢这么做
#defineUcharunsignedchar
#defineUintunsignedint
#defineLedlight()(P3&=0x7f)
#defineLeddark()(P3 =0x80)
sbitP36=P3^6;//比较器内部判断脚
sbitLED=P3^7;//一个发光二级管观察亮度变化
//内部标志位定义
//比较是否大于1.小于,0.大于
//全局变量定义
Uchartimer1,//通用延时计数器
timer2,//按键蜂鸣器反应定时器
adcdata,//ad转换变量
pwm1;//PWM输出比例
//函数列表
voidDelayMs(unsignedintnumber);//毫秒延时
voidtimers0();//在定时器中断中做数码管的扫描显示(ct0)
voidInitall(void);//系统初始化
voidtimers1(void);//TC1定时器中断用于扫描显示与键盘
Ucharadcread(void);//adc转换程序
voidmain(void)using0
DelayMs(120);
Initall();
pwm1=adcread();
pwm1=adcread();
timer2=10;
while(timer2);
//毫秒延时
voidDelayMs(unsignedintnumber)
for(;number!=0;number--)
for(temp=112;temp!=0;temp--);
/*************************************
在定时器中断中做LED的PWM输出
*************************************/
voidtimers0()interrupt1using1
if(timer1==pwm1)LED=0;
if(timer1==0){
timer1=0x40;
}下一页本文共 2 页,第[1][2]页
Copyright by ;All rights reserved.菜鸟的基础知识汇总:单片机扫盲帖,初学者必看_电源_中国百科网
菜鸟的基础知识汇总:单片机扫盲帖,初学者必看
&#160;&#160;&#160;&#160;(一)什么是单片机单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器cpu随机存储器ram、只读存储器rom、多种i/o口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、a/d转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。一台能够工作的计算机要有这样几个部份构成:cpu(进行运算、控制)、ram(数据存储)、rom(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如a/d,d/a等。单片机是一种控制芯片,一个微型的计算机,而加上晶振,存储器,地址锁存器,逻辑门,七段译码器(显示器),按钮(类似键盘),扩展芯片,接口等那是单片机系统。天!pc中的cpu一块就要卖几千块钱,这么多东西做在一起,还不得买个天价!再说这块芯片也得非常大了。不,价格并不高,从几元人民币到几十元人民币,体积也不大,一般用40脚封装,当然功能多一些单片机也有引脚比较多的,如68引脚,功能少的只有10多个或20多个引脚,有的甚至只8只引脚。为什么会这样呢?功能有强弱,打个比方,市场上面有的组合音响一套才卖几百块钱,可是有的一台功放机就要卖好几千。另外这种芯片的生产量很大,技术也很成熟,51系列的单片机已经做了十几年,所以价格就低了。既然如此,单片机的功能肯定不强,干吗要学它呢?话不能这样说,实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要用piii?应用的关键是看是否够用,是否有很好的性能价格比。所以8051出来十多年,依然没有被淘汰,还在不断的发展中。(二)mcs51单片机和、89c51等的关系我们平常老是讲8051,又有什么8031,现在又有89c51,89s51它们之间究竟是什么关系?mcs51是指由美国intel公司(对了,就是大名鼎鼎的intel)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如,,等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼mcs51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。intel公司将mcs51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89c51就是这几年在我国非常流行的单片机,它是由美国atmel公司开发生产的。以后我们将用89c51单片机来完成一系列的实验。单片机也被称为微控制器(microcontroller),是因为它最早被用在工业控制领域。单片机由芯片内仅有cpu的专用处理器发展而来。最早的设计理念是通过将大量外围设备和cpu集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。intel的z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。早期的单片机都是8位或4位的。其中最成功的是intel的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了mcs51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。随着intel i960系列特别是后来的arm系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机主频已经超过300mhz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的windows和linux操作系统。单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过pc机和其他计算的综合,甚至比人类的数量还要多。(三)单片机介绍 text-indent: 2 line-height: 24 color: rgb(62, 62, 62); font-family: tahoma, arial, sans- font-size: 14 text-align: ">单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了i/o设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。单片机内部也用和电脑功能类似的模块,比如cpu,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可......用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、vcd等等的家电里面都可以看到它的身影!......它主要是作为控制部分的核心部件。它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用pc)的主要区别。单片机是靠程序的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的cd4000系列这些纯硬件来搞定的话,电路一定是一块大pcb板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!由于单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言,它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的cpu,也没有像硬盘那样的海量存储设备。一个可视化高级语言编写的小程序里面即使只有一个按钮,也会达到几十k的尺寸!对于家用pc的硬盘来讲没什么,可是对于单片机来讲是不能接受的。 单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用pc上来运行,家用pc的也是承受不了的。可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称pc机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因为它体积小,通常都藏在被控机械的“肚子”里。它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词――“智能型”,如智能型洗衣机等。现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。(四)单片机历史单片机诞生于20世纪70年代末,经历了scm、mcu、soc三大阶段。1.scm即单片微型计算机(single chip microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了scm与通用计算机完全不同的发展道路。在开创嵌入式系统独立发展道路上,intel公司功不可没。2.mcu即微控制器(micro controller unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展mcu的重任不可避免地落在电气、电子技术厂家。从这一角度来看,intel逐渐淡出mcu的发展也有其客观因素。在发展mcu方面,最著名的厂家当数philips公司。philips公司以其在嵌入式应用方面的巨大优势,将mcs-51从单片微型计算机迅速发展到微控制器。因此,当我们回顾嵌入式系统发展道路时,不要忘记intel和philips的历史功绩。3.单片机是嵌入式系统的独立发展之路,向mcu阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了soc化趋势。随着微电子技术、ic设计、eda工具的发展,基于soc的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。(五)单片机的应用领域目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能ic卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:1.在智能仪器仪表上的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,?功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计,示波器,各种分析仪)。2.在工业控制中的应用用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。3.在家用电器中的应用可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。4.在计算机网络和通信领域中的应用现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。5.单片机在医用设备领域中的应用单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。6.在各种大型电器中的模块化应用某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。如:音乐信号以数字的形式存于存储器中(类似于rom),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。7.单片机在汽车设备领域中的应用单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于can总线的汽车发动机智能电子控制器,gps导航系统,abs防抱死系统,制动系统等等。此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。(六)学习应用六大重要部分一、总线:我们知道,一个电路总是由元器件通过电线连接而成的,在模拟电路中,连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却不一样,它是以微处理器为核心,各器件都要与微处理器相连,各器件之间的工作必须相互协调,所以需要的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线,则线的数量将多得惊人,所以在微处理机中引入了总线的概念,各个器件共同享用连线,所有器件的8根数据线全部接到8根公用的线上,即相当于各个器件并联起来,但仅这样还不行,如果有两个器件同时送出数据,一个为0,一个为1,那么,接收方接收到的究竟是什么呢?这种情况是不允许的,所以要通过控制线进行控制,使器件分时工作,任何时候只能有一个器件发送数据(可以有多个器件同时接收)。器件的数据线也就被称为数据总线,器件所有的控制线被称为控制总线。在单片机内部或者外部存储器及其它器件中有存储单元,这些存储单元要被分配地址,才能使用,分配地址当然也是以电信号的形式给出的,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为地址总线。二、数据、地址、指令:之所以将这三者放在一起,是因为这三者的本质都是一样的――数字,或者说都是一串‘0’和‘1’组成的序列。换言之,地址、指令也都是数据。指令:由单片机芯片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的一一对应关系,不可以由单片机的开发者更改。地址:是寻找单片机内部、外部的存储单元、输入输出口的依据,内部单元的地址值已由芯片设计者规定好,不可更改,外部的单元可以由单片机开发者自行决定,但有一些地址单元是一定要有的(详见程序的执行过程)。数据:这是由微处理机处理的对象,在各种不同的应用电路中各不相同,一般而言,被处理的数据可能有这么几种情况:1.地址(如mov dptr,1000h),即地址1000h送入dptr。2.方式字或控制字(如mov tmod,#3),3即是控制字。3.常数(如mov th0,#10h)10h即定时常数。4.实际输出值(如p1口接彩灯,要灯全亮,则执行指令:mov p1,#0ffh,要灯全暗,则执行指令:mov p1,#00h)这里0ffh和00h都是实际输出值。又如用于led的字形码,也是实际输出的值。k- text-indent: 2 line-height: 24 color: rgb(62, 62, 62); font-family: tahoma, arial, sans- font-size: 14 text-align: ">理解了地址、指令的本质,就不难理解程序运行过程中为什么会跑飞,会把数据当成指令来执行了。三、p0口、p2口和p3的第二功能用法:初学时往往对p0口、p2口和p3口的第二功能用法迷惑不解,认为第二功能和原功能之间要有一个切换的过程,或者说要有一条指令,事实上,各端口的第二功能完全是自动的,不需要用指令来转换。如p3.6、p3.7分别是wr、rd信号,当微片理机外接ram或有外部i/o口时,它们被用作第二功能,不能作为通用i/o口使用,只要一微处理机一执行到movx指令,就会有相应的信号从p3.6或p3.7送出,不需要事先用指令说明。事实上‘不能作为通用i/o口使用’也并不是‘不能’而是(使用者)‘不会’将其作为通用i/o口使用。你完全可以在指令中按排一条setb p3.7的指令,并且当单片机执行到这条指令时,也会使p3.7变为高电平,但使用者不会这么去做,因为这通常会导致系统的崩溃。四、程序的执行过程: 单片机在通电复位后8051内的程序计数器(pc)中的值为‘0000’,所以程序总是从‘0000’单元开始执行,也就是说:在系统的rom中一定要存在‘0000’这个单元,并且在‘0000’单元中存放的一定是一条指令。五、堆栈: 堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部ram的一部份,特殊的是它存放和取用数据的方式,即所谓的‘先进后出,后进先出’,并且堆栈有特殊的数据传输指令,即‘push’和‘pop’,有一个特殊的专为其服务的单元,即堆栈指针sp,每当执一次push指令时,sp就(在原来值的基础上)自动加1,每当执行一次pop指令,sp就(在原来值的基础上)自动减1。由于sp中的值可以用指令加以改变,所以只要在程序开始阶段更改了sp的值,就可以把堆栈设置在规定的内存单元中,如在程序开始时,用一条mov sp,#5fh指令,就时把堆栈设置在从内存单元60h开始的单元中。一般程序的开头总有这么一条设置堆栈指针的指令,因为开机时,sp的初始值为07h,这样就使堆栈从08h单元开始往后,而08h到1fh这个区域正是8031的第二、三、四工作寄存器区,经常要被使用,这会造成数据的混乱。不同作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题。当设置好堆栈区后,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情况下编程者不会把它当成普通内存用了。六、单片机的开发过程: 这里所说的开发过程并不是一般书中所说的从任务分析开始,我们假设已设计并制作好硬件,下面就是编写软件的工作。在编写软件之前,首先要确定一些常数、地址,事实上这些常数、地址在设计阶段已被直接或间接地确定下来了。如当某器件的连线设计好后,其地址也就被确定了,当器件的功能被确定下来后,其控制字也就被确定了。然后用文本编辑器(如edit、cced等)编写软件,编写好后,用编译器对源程序文件编译,查错,直到没有语法错误,除了极简单的程序外,一般应用仿真机对软件进行调试,直到程序运行正确为止。运行正确后,就可以写片(将程序固化在eprom中)。在源程序被编译后,生成了扩展名为hex的目标文件,一般编程器能够识别这种格式的文件,只要将此文件调入即可写片。在此,为使大家对整个过程有个认识,举一例说明:单片机试验板org 0000hljmp startorg 040hstart:mov sp,#5设堆栈loop:nop循环结束(七)单片机学习目前,很多人对汇编语言并不认可。可以说,掌握用c语言单片机编程很重要,可以大大提高开发的效率。不过初学者可以不了解单片机的汇编语言,但一定要了解单片机具体性能和特点,不然在单片机领域是比较致命的。如果不考虑单片机硬件资源,在keil中用c胡乱编程,结果只能是出了问题无法解决!可以肯定的说,最好的c语言单片机工程师都是从汇编走出来的编程者因为单片机的c语言虽然是高级语言,但是它不同于台式机个人电脑上的vc++什么的单片机的硬件资源不是非常强大,不同于我们用vc、vb等高级语言在台式pc上写程序毕竟台式电脑的硬件非常强大,所以才可以不考虑硬件资源的问题。还有就是在单片机编程中c语言虽然编程方便,便于人们阅读,但是在执行效率上是要比汇编语言低10%到20%,所以用什么语言编写程序是要看具体用在什么场合下。总的来说做单片机编程要灵活使用汇编语言与c语言,让单片机的强大功能以最高是效率展示给用户。以8051单片机为例讲解单片机的引脚及相关功能;《单片机引脚图》40个引脚按引脚功能大致可分为4个种类:电源、时钟、控制和i/o引脚。ndent: 2 ">⒈ 电源:⑴ vcc - 芯片电源,接+5v;⑵ vss - 接地端;注:用万用表测试单片机引脚电压一般为0v或者5v,这是标准的ttl电平。但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0v-5v之间,其实这是万用表的响应速度没这么快而已,在某一个瞬间单片机引脚电压仍保持在0v或者5v。⒉ 时钟:xtal1、xtal2 - 晶体振荡电路反相输入端和输出端。⒊ 控制线:控制线共有4根,⑴ ale/prog:地址锁存允许/片内eprom编程脉冲① ale功能:用来锁存p0口送出的低8位地址② prog功能:片内有eprom的芯片,在eprom编程期间,此引脚输入编程脉冲。⑵ psen:外rom读选通信号。⑶ rst/vpd:复位/备用电源。① rst(reset)功能:复位信号输入端。② vpd功能:在vcc掉电情况下,接备用电源。⑷ ea/vpp:内外rom选择/片内eprom编程电源。① ea功能:内外rom选择端。② vpp功能:片内有eprom的芯片,在eprom编程期间,施加编程电源vpp。⒋ i/o线80c51共有4个8位并行i/o端口:p0、p1、p2、p3口,共32个引脚。p3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)5. p3口第二功能p30 rxd 串行输入口p31 txd 串行输出口p32 int0 外部中断0(低电平有效)p33 int1 外部中断1(低电平有效)p34 t0 定时计数器0p35 t1 定时计数器1p36 wr 外部数据存储器写选通(低电平有效)p37 rd 外部数据存储器读选通(低电平有效)(八)常用单片机芯片简介stc单片机stc公司的单片机主要是基于8051内核,是新一代增强型单片机,指令代码完全兼容传统8051,速度快8~12倍,带adc,4路pwm,双串口,有全球唯一id号,加密性好,抗干扰强.pic单片机是microchip公司的产品,其突出的特点是体积小,功耗低,精简指令集,抗干扰性好,可靠性高,有较强的模拟接口,代码保密性好,大部分芯片有其兼容的flash程序存储器的芯片.emc单片机是台湾义隆公司的产品,有很大一部分与pic 8位单片机兼容,且相兼容产品的资源相对比pic的多,价格便宜,有很多系列可选,但抗干扰较差.atmel单片机(51单片机)atmel公司的8位单片机有at89、at90两个系列,at89系列是8位flash单片机,与8051系列单片机相兼容,静态时钟模式;at90系列单片机是增强risc结构、全静态工作方式、内载在线可编程flash的单片机,也叫avr单片机.or: rgb(62, 62, 62); font-family: tahoma, arial, sans- font-size: 14 text-align: ">phlipis 51plc系列单片机(51单片机)philips公司的单片机是基于80c51内核的单片机,嵌入了掉电检测、模拟以及片内rc振荡器等功能,这使51lpc在高集成度、低成本、低功耗的应用设计中可以满足多方面的性能要求.holtek单片机台湾盛扬半导体的单片机,价格便宜,种类较多,但抗干扰较差,适用于消费类产品.ti公司单片机(51单片机)德州仪器提供了tms370和msp430两大系列通用单片机.tms370系列单片机是8位cmos单片机,具有多种存储模式、多种外围接口模式,适用于复杂的实时控制场合;msp430系列单片机是一种超低功耗、功能集成度较高的16位低功耗单片机,特别适用于要求功耗低的场合松翰单片机(sonix)是台湾松翰公司的单片,大多为8位机,有一部分与pic 8位单片机兼容,价格便宜,系统时钟分频可选项较多,有pmw adc 内振 内部杂讯滤波。缺点ram空间过小,抗干扰较好。从无线电世界到单片机世界现代计算机技术的产业革命,将世界经济从资本经济带入到知识经济时代。在电子世界领域,从20世纪中的无线电时代也进入到21世纪以计算机技术为中心的智能化现代电子系统时代。现代电子系统的基本核心是嵌入式计算机系统(简称嵌入式系统),而单片机是最典型、最广泛、最普及的嵌入式系统。一、 无线电世界造就了几代英才在20世纪五六十年代,最具代表的先进的电子技术就是无线电技术,包括无线电广播、收音、无线通信(电报)、业余无线电台、无线电定位、导航等遥测、遥控、遥信技术。早期就是这些电子技术带领着许多青少年步入了奇妙的电子世界,无线电技术展示了当时科技生活美妙的前景。电子科学开始形成了一门新兴学科。无线电电子学、无线通信开始了电子世界的历程。无线电技术不仅成为了当时先进科学技术的代表,而且从普及到专业的科学领域,吸引了广大青少年,并使他们从中找到了无穷的乐趣。从床头的矿石收音机到超外差收音机;从无线电发报到业余无线电台;从电话、电铃到无线电操纵模型。无线电技术成为当时青少年科普、科技教育最普及、最广泛的内容。至今,许多老一辈的工程师、专家、教授当年都是无线电爱好者。无线电技术的无穷乐趣、无线电技术的全面训练,从电子学基本原理、电子元器件基础到无线电遥控、遥测、遥信电子系统制作,培养出了几代科技英才。二、 从无线电时代到电子技术普及时代早期的无线电技术推动了电子技术的发展,其中最主要的是真空管电子技术向半导体电子技术的发展。半导体电子技术使有源器件实现了微小型化和低成本,使无线电技术有了更大普及和创新,并大大地开阔了许多非无线电的控制领域。半导体技术发展导致集成电路器件的产生,形成了近代电子技术的飞跃,电子技术从分立器件时代走进了电路集成时代。电子设计工程师不再用分立的电子元器件设计电路单元,而直接选择集成化的电路单元器件构成系统。他们从电路单元设计中解放出来,致力于系统设计,大大地解放了科技生产力,促进了电子系统更大范围的普及。半导体集成电路首先在基本数字逻辑电路上取得突破。大量数字逻辑电路,如门电路、计数器、定时器、移位寄存器以及模拟开关、比较器等,为电子数字控制提供了极佳的条件,使传统的机械控制转向电子控制。功率电子器件以及传感技术的发展使原先以无线电为中心的电子技术开始转向工程领域中的机械系统的数字控制,检测领域中的信息采集,运动机械对象的电气伺服驱动控制。半导体及其集成电路技术将我们带入了一个电子技术普及时代,无线电技术成为电子技术应用领域的一个部分。进入20世纪70年代,大规模集成电路出现,促进了常规的电子电路单元的专用电子系统发展。许多专用电子系统单元变成了集成化器件,如收音机、电子钟、计算器等,在这些领域的电子工程师从电路、系统的精心设计、调试转变为器件选择、外围器件适配工作。电子技术发展了,电子产品丰富了,电子工程师的难度减少了,但与此同时,无线电技术、电子技术的魅力却削弱了。半导体集成电路的发展使经典电子系统日趋完善,留在大规模集成电路以外的电子技术日益减少,电子技术没有了往昔无线电时代的无穷乐趣和全面的工程训练。三、 从经典电子技术时代到现代电子技术时代进入20世纪80年代,世纪经济中最重要的变革是计算机的产业革命。而计算机产业革命的最重要标志则是计算机嵌入式应用的诞生。近代电子计算机是应数值计算要求诞生的。在很长的时间内,电子计算机都是以发展海量数值计算为己任。但是电子计算机表现出的逻辑运算、处理、控制能力,吸引了电子控制领域的专家,他们要求发展能满足控制对象要求,实现嵌入式应用的计算机系统。如果将满足海量数据处理的计算机系统称为通用计算机系统,那么则可把嵌入到对象体系(如舰船、飞机、机车等)中的计算机系统称作嵌入式计算机。显而易见,两者的技术发展方向是不同的。前者要求海量数据存储、吞吐、高速数据处理分析及传输;而后者要求在对象环境中可靠运行,对外部物理参数的高速采集、逻辑分析处理和对外部对象的快速控制等。早期人们将通用计算机加上数据采集单元、输出驱动电路勉为其难地构成一个热处理炉的温控系统。这样的通用计算机系统不可能为大多数电子系统采用,而且要使通用计算机系统满足嵌入式应用要求,必然影响高速数值处理技术的发展。为了解决计算机技术发展的矛盾,在20世纪70年代,半导体专家另辟蹊径,完全按照电子系统的计算机嵌入式应用要求,将一个微型计算机的基本系统集成在一个芯片上,形成了早期的单片机(single chip microcomputer)。单片机问世后,在计算机领域中开始出现了通用计算机系统和嵌入式系统的两大分支。此后,无论是嵌入式系统,还是通用计算机系统都得到了飞速的发展。早期虽然有通用计算机改装而成的嵌入式计算机系统,而真正意义上的嵌入式系统始于单片机的出现。因为单片机是专门为嵌入式应用设计的,单片机只能实现嵌入式应用。单片机能最好地满足嵌入式应用的环境要求,例如,芯片级的物理空间、大规模集成电路的低价位、良好的外围接口总线和突出控制功能的指令系统。单片机有计算机系统内核,嵌入到电子系统中,为电子系统智能化奠定了基础。因此,当前单片机在电子系统中的广泛使用,使经典电子系统迅速过渡到智能化的现代电子系统。四、 单片机开创了现代电子系统时代1、单片机与嵌入式系统嵌入式系统源于计算机的嵌入式应用,早期嵌入式系统为通用计算机经改装后嵌入到对象体系中的各种电子系统,如舰船的自动驾驶仪,轮机监测系统等。嵌入式系统首先是一个计算机系统,其次它被嵌入到对象体系中、在对象体系中实现对象要求的数据采集、处理、状态显示、输出控制等功能,由于嵌入在对象体系中,嵌入式系统的计算机没有计算机的独立形式及功能。单片机完全是按照嵌入式系统要求设计的,因此单片机是最典型的嵌入式系统。早期的单片机只是按嵌入式应用技术要求设计的计算机单芯片集成,故名单片机。随后,单片机为满足嵌入式应用要求不断增强其控制功能与外围接口功能,尤其是突出控制功能,因此国际上已将单片机正名为微控制器(mcu,microcontroller unit)。2、单片机构成的现代电子系统将成为主流电子系统单片机是器件级计算机系统,它可以嵌入到任何对象体系中去,实现智能化控制。小到微型机械,如手表、助听器。集成器件级的低价位,低到几元、十几元,足以使单片机普及到许多民用家电、电子玩具中去。单片机构成的现代电子系统已深入到各家各户,正改变我们的生活,如家庭中的音响、电视机、洗衣机、微波炉、电话、防盗系统、空调机等。单片机革新了原有电子系统,如微波炉采用单片机控制后,可方便地进行时钟设置、程序记忆、功率控制;空调机采用单片机后不但遥控参数设置方便,运行状态自动变换,还可实现变频控制。目前许多家用电器如vcd、dvd只有单片机出现后才可能实现其功能。3、嵌入式系统带动了整个电子产业目前电子元器件产业除了微处理器、嵌入式系统器件外,大多是围绕现代电子系统配套的元器件产业,例如满足人机交互用的按键,led/lcd显示驱动、led/lcd显示单元、语音集成器件等,满足数据采集通道要求的数字传感器、adc、数据采集模块、信号调理模块等,满足伺服驱动控制的dac、固体继电器、步进电机控制器、变频控制单元等,满足通信要求的各种总线驱动器、电平转换器等。世界电子元器件在嵌入式系统带动下,沿着充分满足嵌入式应用的现代电子系统要求发展。这就使原来经典电子系统的天地愈来愈小。电子系统中的各类从业人员应尽早转向现代电子系统的康庄大道。五、 单片机将造就新一代电子精英如果说五十年代起,无线电世界造就了几代精英,那么当今的单片机世界将会造就出新一代电子精英。1、单片机带你进入智能化电子领域若将经典电子系统当作一个僵死的电子系统,那么智能化的现代电子系统则是一个具有“生命”的电子系统。单片机应用系统的硬件结构给予电子系统“身躯”,单片机应用系统的应用程序赋予其“生命”。例如,在设计智能化仪器显示器的显示功能时,可在开机时显示系统自检结果,未进入工作时显示各种待机状态,仪器运行时显示运行过程,工作结束后可显示当前结果、自检结果、原始数据、各种处理报表等。在无人值守时,可给定各种自动运行功能。电子系统的智能化为无止境境界,常常不需硬件资源的增添就能实现各种翻新功能。这也是当前许多家用电器功能大量增设的因素之一。2、单片机带你进入计算机工控领域21世纪是全人类进入计算机时代的世纪,许多人不是在制造计算机便是在使用计算机。在使用计算机的人们中,只有从事嵌入式系统应用的人才真正地进入到计算机系统的内部软、硬件体系中,才能真正领会计算机的智能化本质并掌握智能化设计的知识。从学习单片机应用技术入手是当今培养计算机应用软、硬件技术人才的最佳道路之一。3、单片机带你进入最具魅力的电子世界独具魅力的单片机能使你体会到电脑的真谛,你可以用单片机亲自动手设计智能玩具,可以设计不同的应用程序实现不同的功能。既有硬件制作又有软件设计,既动脑、又动手。初级水平可开发智能玩具,用宏指令编程。中级水平可开发一些智能控制器,如电脑鼠、智能车、各种遥控模型。高级水平可开发机器人,如机器人足球赛,开发工业控制单元,网络通信等,并用汇编语言或高级语言设计应用程序。围绕单片机及嵌入式系统形成的电子产业的未来,将会为电子爱好者提供广阔的天地,一个比当年无线电世界更广阔、更丰富、更持久、更具魅力的电子世界。投身到单片机世界来,将使你一生受益。(九)单片机攻击技术目前,攻击单片机主要有四种技术,分别是:(1)软件攻击该技术通常使用处理器通信接口并利用协议、加密算法或这些算法中的安全漏洞来进行攻击。软件攻击取得成功的一个典型事例是对早期atmel at89c 系列单片机的攻击。攻击者利用了该系列单片机擦除操作时序设计上的漏洞,使用自编程序在擦除加密锁定位后,停止下一步擦除片内程序存储器数据的操作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。(2) 电子探测攻击该技术通常以高时间分辨率来监控处理器在正常操作时所有电源和接口连接的模拟特性,并通过监控它的电磁辐射特性来实施攻击。因为单片机是一个活动的电子器件,当它执行不同的指令时,对应的电源功率消耗也相应变化。这样通过使用特殊的电子测量仪器和数学统计方法分析和检测这些变化,即可获取单片机中的特定关键信息。(3)过错产生技术该技术使用异常工作条件来使处理器出错,然后提供额外的访问来进行攻击。使用最广泛的过错产生攻击手段包括电压冲击和时钟冲击。低电压和高电压攻击可用来禁止保护电路工作或强制处理器执行错误操作。时钟瞬态跳变也许会复位保护电路而不会破坏受保护信息。电源和时钟瞬态跳变可以在某些处理器中影响单条指令的解码和执行。(4)探针技术该技术是直接暴露芯片内部连线,然后观察、操控、干扰单片机以达到攻击目的。为了方便起见,人们将以上四种攻击技术分成两类,一类是侵入型攻击(物理攻击),这类攻击需要破坏封装,然后借助半导体测试设备、显微镜和微定位器,在专门的实验室花上几小时甚至几周时间才能完成。所有的微探针技术都属于侵入型攻击。另外三种方法属于非侵入型攻击,被攻击的单片机不会被物理损坏。在某些场合非侵入型攻击是特别危险的,这是因为非侵入型攻击所需设备通常可以自制和升级,因此非常廉价。大部分非侵入型攻击需要攻击者具备良好的处理器知识和软件知识。与之相反,侵入型的探针攻击则不需要太多的初始知识,而且通常可用一整套相似的技术对付宽范围的产品。(十)单片机侵入型攻击的一般过程侵入型攻击的第一步是揭去芯片封装。有两种方法可以达到这一目的:第一种是完全溶解掉芯片封装,暴露金属连线。第二种是只移掉硅核上面的塑料封装。第一种方法需要将芯片绑定到测试夹具上,借助绑定台来操作。第二种方法除了需要具备攻击者一定的知识和必要的技能外,还需要个人的智慧和耐心,但操作起来相对比较方便。芯片上面的塑料可以用小刀揭开,芯片周围的环氧树脂可以用浓硝酸腐蚀掉。热的浓硝酸会溶解掉芯片封装而不会影响芯片及连线。该过程一般在非常干燥的条件下进行,因为水的存在可能会侵蚀已暴露的铝线连接。接着在超声池里先用丙酮清洗该芯片以除去残余硝酸,然后用清水清洗以除去盐分并干燥。没有超声池,一般就跳过这一步。这种情况下,芯片表面会有点脏,但是不太影响紫外光对芯片的操作效果。最后一步是寻找保护熔丝的位置并将保护熔丝暴露在紫外光下。一般用一台放大倍数至少100倍的显微镜,从编程电压输入脚的连线跟踪进去,来寻找保护熔丝。若没有显微镜,则采用将芯片的不同部分暴露到紫外光下并观察结果的方式进行简单的搜索。操作时应用不透明的纸片覆盖芯片以保护程序存储器不被紫外光擦除。将保护熔丝暴露在紫外光下5~10分钟就能破坏掉保护位的保护作用,之后,使用简单的编程器就可直接读出程序存储器的内容。对于使用了防护层来保护eeprom单元的单片机来说,使用紫外光复位保护电路是不可行的。对于这种类型的单片机,一般使用微探针技术来读取存储器内容。在芯片封装打开后,将芯片置于显微镜下就能够很容易的找到从存储器连到电路其它部分的数据总线。由于某种原因,芯片锁定位在编程模式下并不锁定对存储器的访问。利用这一缺陷将探针放在数据线的上面就能读到所有想要的数据。在编程模式下,重启读过程并连接探针到另外的数据线上就可以读出程序和数据存储器中的所有信息。还有一种可能的攻击手段是借助显微镜和激光切割机等设备来寻找保护熔丝,从而寻查和这部分电路相联系的所有信号线。由于设计有缺陷,因此,只要切断从保护熔丝到其它电路的某一根信号线,就能禁止整个保护功能。由于某种原因,这根线离其它的线非常远,所以使用激光切割机完全可以切断这根线而不影响临近线。这样,使用简单的编程器就能直接读出程序存储器的内容。虽然大多数普通单片机都具有熔丝烧断保护单片机内代码的功能,但由于通用低档的单片机并非定位于制作安全类产品,因此,它们往往没有提供有针对性的防范措施且安全级别较低。加上单片机应用场合广泛,销售量大,厂商间委托加工与技术转让频繁,大量技术资料外泻,使得利用该类芯片的设计漏洞和厂商的测试接口,并通过修改熔丝保护位等侵入型攻击或非侵入型攻击手段来读取单片机的内部程序变得比较容易。
Copyright by ;All rights reserved.

我要回帖

更多关于 比较器 的文章

 

随机推荐