单片机

分享到:
点击量: 186198 来源: 辽阳佳誉仪器仪表有限公司
 
 
   单片机 是一种集成 电路 芯片 ,是采用 超大规模集成电路 技术把具有数据处理能力的 中央处理器 CPU 随机存储器 RAM、 只读存储器ROM 、多种I/O口和 中断系统 、定时器/计数器等功能(可能还包括显示驱动电路、 脉宽调制 电路、模拟多路 转换器 A/D转换器 等电路)集成到一块硅片上构成的一个小而完善的 微型计算机系统 ,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位 单片机 ,发展到现在的300M的高速单片机。

目 录

1 概述

2 应用分类

  1. 2.1 通用专用
  2. 2.2 线型
  3. 2.3 控制型

3 发展历史

  1. 3.1 主要阶段
  2. 3.2 早期发展

4 硬件特性

5 基本结构

6 应用范围

  1. 6.1 智能仪器
  2. 6.2 工业控制
  3. 6.3 家用电器
  4. 6.4 网络和通信
  5. 6.5 设备领域
  6. 6.6 模块化系统
  7. 6.7 汽车电子

7 学习方法

  1. 7.1 基础理论
  2. 7.2 实验实践
  3. 7.3 硬件设计

8 抗干扰设计

  1. 8.1 抗干扰
  2. 8.2 抗干扰技术

9 电子技术中单片机的应用

10 基础知识

  1. 10.1 总线
  2. 10.2 地址指令
  3. 10.3 功能
  4. 10.4 执行过程
  5. 10.5 堆栈
  6. 10.6 开发过程

11 单片指令

  1. 11.1 传送操作
  2. 11.2 算术操作
  3. 11.3 逻辑操作
  4. 11.4 程序转移
  5. 11.5 布尔变量操作

12 单片机芯片

  1. 12.1 三星单片机
  2. 12.2 SST 单片机

13 攻击技术

14 加密方法

15 单片机故障的排除

  1. 15.1 1单片机正常工作的三个条件
  2. 15.2 2单片机内部是否正常工作的检测
 
 

1概述

单片 微型计算机 简称单片机,是典型的嵌入式 微控制器 (Microcontroller Unit),

单片机芯片

常用英文字母的缩写MCU表示单片机,单片机又称 单片微控制器 ,它不是完成某一个逻辑功能的 芯片 ,而是把一个 计算机系统集成 到一个芯片上。单片机由 运算器 、 控制器 、 存储器 、 输入输出设备 构成,相当于一个微型的计算机(*小系统),和计算机相比, 单片机 缺少了外围设备等。概括的讲:一块 芯片 就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用 单片机 是了解计算机原理与结构的*佳选择。它*早是被用在工业控制领域。
由于 单片机 在工业控制领域的广泛应用,单片机由仅有CPU的专用 处理器 芯片发展而来。*早的设计理念是通过将大量外围设备和 CPU 集成在一个 芯片 中,使 计算机系统 更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
INTEL 的8080是*早按照这种思想设计出的 处理器 ,当时的 单片机 都是8位或4位的。其中*成功的是 INTEL 的 8051 ,此后在8051上发展出了 MCS51 系列 单片机 系统。因为简单可靠而性能不错获得了很大的好评。尽管2000年以后 ARM 已经发展出了32位的 主频 超过300M的** 单片机 ,直到现在基于8051的 单片机 还在广泛的使用。在很多方面单片机比专用 处理器 更适合应用于 嵌入式系统 ,因此它得到了广泛的应用。事实上 单片机 是世界上数量*多 处理器 ,随着单片机家族的发展壮大,单片机和专用处理器的发展便分道扬镳。
现代人类生活中所用的几乎每件有电子器件的产品中都会集成有 单片机 。手机、 电话 、 计算器 、家用电器、电子玩具、 掌上电脑 以及鼠标等电子产品中都含有 单片机 。 汽车上一般配备40多片 单片机 ,复杂的 工业控制系统 上甚至可能有数百片单片机在同时工作!单片机的数量远远超过 PC机 和其他计算机的总和。

2应用分类

单片机 作为计算机发展的一个重要分支领域,根据发展情况,从不同角度单片机大致可以分为通用型/专用型、总线型/非总线型及工控型/家电型。

通用专用

这是按 单片机 适用范围来区分的。例如,80C51是通用型 单片机 ,它不是为某种专用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足 电子体温计 的要求,在片内集成 ADC 接口等功能的温度测量控制 电路 。

线型

这是按 单片机 是否提供 并行总线 来区分的。总线型 单片机 普遍设置有并行 地址总线 、 数

单片机

据总线、 控制总线 ,这些 引脚 用以扩展并行外围器件都可通过 串行口 与单片机连接,另外,许多单片机已把所需要的外围器件及 外设接口 集成一片内,因此在许多情况下可以不要并行 扩展总线 ,大大减省封装成本和 芯片 体积,这类单片机称为非总线型单片机。

控制型

这是按照 单片机 大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的 单片机 多为专用型,通常是小封装、低价格,外围器件和 外设接口 集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类 单片机 既是通用型又是总线型,还可以作工控用。

3发展历史

单片机 诞生于1971年,经历了SCM、MCU、SoC三大阶段,早期的SCM单片机都是8位或4位的。其中*成功的是INTEL的8051,此后在8051上发展出了MCS51系列MCU系统。基于这一系统的 单片机 系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位 单片机 ,但因为性价比不理想并未得到很广泛的应用。90年代后随着 消费电子产品 大发展, 单片机 技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位 单片机 迅速取代16位单片机的**地位,并且进入主流市场。
而传统的8位 单片机 的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。**的32位Soc单片机 主频 已经超过300MHz,性能直追90年代中期的专用 处理器 ,而普通的型号出厂价格跌落至1美元,***的型号也只有10美元。
当代 单片机 系统已经不再只在 裸机 环境下开发和使用,大量专用的 嵌入式操作系统 被广泛应用在全系列的单片机上。而在作为 掌上电脑 和手机核心处理的** 单片机 甚至可以直接使用专用的Windows和 Linux操作系统 。

主要阶段

早期阶段
SCM 即 单片微型计算机 (Single Chip Microcomputer)阶段,主要是寻求*佳的单片形态 嵌入式系统 的*佳 体系结构 。“**模式”获得成功,奠定了SCM与 通用计算机 完全不同的发展道路。在开创 嵌入式系统 独立发展道路上, Intel公司 功不可没。

Micro Controller Unit

中期发展
MCU 即 微控制器 (Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围 电路 与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、 电子技术 厂家。从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。在发展MCU方面,***的厂家当数Philips公司。
Philips公司以其在 嵌入式 应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到 微控制器 。因此,当我们回顾 嵌入式系统 发展道路时,不要忘记Intel和Philips的历史功绩。
当前趋势
SoC 嵌入式系统 (System on Chip)式的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在 芯片 上的*大化解决,因此,专用 单片机 的发展自然形成了SoC化趋势。随着 微电子技术 、IC设计、EDA工具的发展,基于SoC的 单片机 应用系统设计会有较大的发展。因此,对 单片机 的理解可以从单片微型计算机、 单片微控制器 延伸到单片应用系统。

早期发展

1971年 intel公司 研制出世界上**个4位的微 处理器 ;Intel公司的 霍夫 研制成功世界上**块4位微处理器 芯片 Intel 4004,标志着**代微处理器问世,微处理器和 微机 时代从此开始。因发明微 处理器 , 霍夫 被 英国 《经济学家》杂志列为“二战以来*有影响力的7位科学家”之一。
1971年11月,Intel推出MCS-4 微型计算机系统 (包括4001 ROM 芯片 、4002 RAM芯片、4003 移位寄存器 芯片和4004微 处理器 )其中4004(下图)包含2300个 晶体管 ,尺寸规格为3mm×4mm,计算性能远远超过当年的ENIAC,*初售价为200美元。
1972年4月, 霍夫 等人开发出**个8位微 处理器 Intel 8008。由于8008采用的是P沟道MOS微 处理器 ,因此仍属**代微处理器。
1973年 intel 公司研制出8位的微 处理器 8080;1973年8月, 霍夫 等人研制出8位微处理器Intel 8080,以N沟道 MOS电路 取代了P沟道,**代微处理器就此诞生。
主频 2MHz的8080 芯片 运算速度比8008快10倍,可存取64KB存储器,使用了基于6微米技术的6000个晶体管,处理速度为0.64MIPS(Million Instructions Per Second )。
1975年4月,MITS发布**个通用型Altair 8800,售价375美元,带有1KB存储器。这是世界上**台微型计算机。
1976年 intel 公司研制出MCS-48系列8位的 单片机 ,这也是单片机的问世。
Zilog公司于1976年开发的Z80微 处理器 ,广泛用于 微型计算机 和工业自动控制设备。当时,Zilog、Motorola和Intel在微 处理器 领域三足鼎立。
20世纪80年代初,Intel公司在MCS-48系列 单片机 的基础上,推出了MCS-51系列8位**单片机。MCS-51系列 单片机 无论是片内RAM 容量 ,I/O口功能,系统扩展方面都有了很大的提高。

4硬件特性

1、主流 单片机 包括 CPU 、4KB 容量 的ROM、128 B容量的RAM、 2个16位定时/ 计数器 、4个8位 并行口 、全双工串口行口、ADC/DAC、SPI、I2C、ISP、IAP。

芯片

2、系统结构简单,使用方便,实现模块化;
3、 单片机 可靠性高,可工作到10^6 ~10^7小时无故障;
4、处理功能强,速度快。
5、低电压,低功耗,便于生产便携式产品
6、控制功能强
7、环境适应能力强。

5基本结构

1.运算器
运算器由运算部件—— 算术逻辑单元 (Arithmetic & Logical Unit,简称ALU)、累加器和寄存器等几部分组成。ALU的作用是把传来的数据进行算术或逻辑运算,输入来源为两个8位数据,分别来自累加器和数据寄存器。ALU能完成对这两个数据进行加、减、与、或、比较大小等操作,*后将结果存入累加器。例如,两个数6和7相加,在相加之前,操作数6放在累加器中,7放在数据寄存器中,当执行加法指令时,ALU即把两个数相加并把结果13存入累加器,取代累加器原来的内容6。
运算器有两个功能:
(1) 执行各种算术运算。
(2) 执行各种逻辑运算,并进行逻辑测试,如零值测试或两个值的比较。
运算器所执行全部操作都是由控制器发出的控制信号来指挥的,并且,一个算术操作产生一个运算结果,一个逻辑操作产生一个判决。
2.控制器
控制器由程序计数器、指令寄存器、指令译码器、时序发生器和操作控制器等组成,是发布命令的“决策机构”,即协调和指挥整个微机系统的操作。其主要功能有:
(1) 从内存中取出一条指令,并指出下一条指令在内存中的位置。
(2) 对指令进行译码和测试,并产生相应的操作控制信号,以便于执行规定的动作。
(3) 指挥并控制 CPU 、内存和输入输出设备之间数据流动的方向。
微处理器内通过内部总线把ALU、计数器、 寄存器 和控制部分互联,并通过外部总线与外部的存储器、输入输出接口电路联接。外部总线又称为系统总线,分为数据总线DB、地址总线AB和控制总线CB。通过输入输出接口电路,实现与各种外围设备连接。
3.主要寄存器
(1)累加器A
图1-2 单片机组成框图
累加器A是微处理器中使用*频繁的寄存器。在算术和逻辑运算时它有双功能:运算前,用于保存一个操作数;运算后,用于保存所得的和、差或逻辑运算结果。
(2)数据寄存器DR
数据寄存器通过数据总线向存储器和输入/输出设备送(写)或取(读)数据的暂存单元。它可以保存一条正在译码的指令,也可以保存正在送往存储器中存储的一个数据字节等等。
(3)指令寄存器IR和指令译码器ID
指令包括操作码和操作数。
指令寄存器是用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存中取到数据寄存器中,然后再传送到指令寄存器。当系统执行给定的指令时,必须对操作码进行译码,以确定所要求的操作,指令译码器就是负责这项工作的。其中,指令寄存器中操作码字段的输出就是指令译码器的输入。
(4)程序计数器PC
PC用于确定下一条指令的地址,以保证程序能够连续地执行下去,因此通常又被称为指令地址计数器。在程序开始执行前必须将程序的**条指令的内存单元地址(即程序的首地址)送入PC,使它总是指向下一条要执行指令的地址。
(5)地址寄存器AR
地址寄存器用于保存当前CPU所要访问的内存单元或I/O设备的地址。由于内存与CPU之间存在着速度上的差异,所以必须使用地址寄存器来保持地址信息,直到内存读/写操作完成为止。
显然,当CPU向存储器存数据、CPU从内存取数据和CPU从内存读出指令时,都要用到地址寄存器和数据寄存器。同样,如果把外围设备的地址作为内存地址单元来看的话,那么当CPU和外围设备交换信息时,也需要用到地址寄存器和数据寄存器。[1]

6应用范围

单片机 渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。 导弹 的导航装置

电路板

,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能 IC卡 ,民用豪华轿车的**保障系统, 录像机 、 摄像机 、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开 单片机 。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此, 单片机 的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
单片机 广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:

智能仪器

单片机 具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的 传感器 ,可实现诸如电压、电流、 功率 、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用 单片机 控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或 数字电路 更加强大。
例如精密的测量设备(电压表、 功率计 , 示波器 ,各种分析仪)。

工业控制

单片机具有体积小、控制功能强、功耗低、环境适应能力强、扩展灵活和使用方便等优点,用单片机可以构成形式多样的控制系统、 数据采集系统 、通信系统、信号检测系统、无线感知系统、测控系统、机器人等应用控制系统。例如工厂流水线的智能化管理,电梯智能化控制、各种 报警系统 ,与计算机联网构成二级控制系统等。

家用电器

家用电器广泛采用了 单片机 控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他 音响 视频器材、再到 电子秤 量设备和 白色家电 等。

网络和通信

现代的 单片机 普遍具备 通信接口 ,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,通信设备基本上都实现了单片机智能控制,从手机,电话机、小型 程控交换机 、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信, 无线电 对讲机等。

设备领域

单片机 在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。

模块化系统

某些专用 单片机 设计用于实现特定功能,从而在各种 电路 中进行模块化应用,而不要求使用人员了解其内部结构。如音乐集成 单片机 ,看似简单的功能,微缩在纯电子 芯片 中(有别于 磁带机 的原理),就需要复杂的类似于计算机的原理。如:音乐信号以数字的形式存于存储器中(类似于ROM),由 微控制器 读出,转化为模拟音乐电信号(类似于声卡)。
在大型 电路 中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。

汽车电子

单片机 在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于CAN总线的汽车发动机智能 电子控制器 、GPS导航系统、 abs防抱死系统 、制动系统、胎压检测等。
此外, 单片机 在工商、金融、科研、教育、电力、通信、物流和国防航空航天等领域都有着十分广泛的用途。

7学习方法

基础理论

基础理论知识包括 模拟电路 、 数字电路 和 C语言 知识。模拟电路和数字电路属于抽象学科,要把它学好还得费点精神。在你学习 单片机 之前,觉得 模拟电路 和数字电路基础不好的话,不要急着学习单片机,应该先回顾所学过的模拟电路和数字电路知识,为学习单片机加强基础。否则,你的 单片机 学习之路不仅会很艰难和漫长,还可能半途而废。笔者始终认为,扎实的电子技术基础是学好 单片机 的关键,直接影响单片机学习入门的快慢。有些同学觉得 单片机 很难,越学越复杂,*后学不下去了。有的同学看书时似乎明白了,可是动起手来却一塌糊涂,究其原因就是电子技术基础没有打好,首先被表面知识给困惑了。
单片机属于 数字电路 ,其概念、术语、硬件结构和原理都源自数字电路,如果数字电路基础扎实,对复杂的单片机硬件结构和原理就能容易理解,就能轻松地迈开学习的**步,自信心也会树立起来。相反,基础不好,这个看不懂那个也弄不明白,越学问题越多,越学越没有信心。如果你觉得 单片机 很难,那就应该先放下单片机教材,去重温数字 电路 ,搞清楚 触发器 、寄存器、门电路、COMS电路、时序逻辑和 时序图 、进制转换等理论知识。理解了这些知识之后再去看看 单片机 的结构和原理,我想你会大彻大悟,信心倍增。
模拟电路 是电子技术*基础的学科,她让你知道什么是电阻、 电容 、电感、 二极管 、 三极管 、 场效应管 、放大器等等以及它们的工作原理和在电路中的作用,这是学习电子技术必须掌握的基础知识。一般是先学习 模拟电路 再去学习数字电路。扎实的 模拟电路 基础不仅让你容易看懂别人设计的电路,而且让你的设计的电路更可靠,提高产品质量。
单片机 的学习离不开编程,在所有的程序设计中C语言运用的*为广泛。C语言知识并不难,没有任何编��基础的人都可以学,在我看来,初中生、高中生、中专生、大学生都能学会。当然,数学基础好、逻辑思维好的人学起来相对轻松一些。 C语言 需要掌握的知识就那么3个条件判断语句、3个 循环语句 、3个跳转语句和1个开关语句。别小看这10个语句,用他们组合形成的逻辑要多复杂有多复杂。学习时要一条语句一条语句的学,学一条活用一条,全部学过用过这些关键语句后,相信你的C基础建立了。
当基础打好以后,你会感觉到 单片机 不再难学了,而且越学越起劲。当 单片机 乖乖的依照你的逻辑思维和算法去执行指令,实现预期控制效果的时候,成就感会让你信心十足、夜以续日、废寝忘食的投入到单片机的世界里。可以这么说,扎实的电子技术基础和C语言基础能增强学习 单片机 信心,较快掌握单片机技术。

实验实践

这是真正学习 单片机 的过程,既让人兴奋又让人疲惫,既让人无奈又让人不服,既让人孤独又让人充实,既让人气愤又让人欣慰,既有失落感又有成就感。其中的酸甜苦辣只有学过的人深有体会。思想上要有刻苦学习的决心,硬件上要有一套完整的学习开发工具,软件上要注重理论和实践相结合。
1.有刻苦学习的决心
首先,明确学习目的。先认真回答两个问题:我学 单片机 来做什么?需要多长时间把它学会?这是你学 单片机 的动力。没有动力,我想你坚持不了多久。其次,端正学习心态。 单片机 学习过程是枯燥乏味、孤独寂寞的过程。要知道,学习知识没有捷径,只有循序渐进,脚踏实地,一步一个脚印,才能学到真功夫。再次,要多动脑勤动手。 单片机 的学习具有很强的实践性,是一门很注重实际动手操作的技术学科。不动手实践你是学不会 单片机 的。*后,虚心交流。在 单片机 学习过程中每个人都会遇到无数不能解决的问题,需要你向有经验的过来人虚心求教,否则,一味的自己埋头摸索会走许多弯路,浪费很多时间。
2.有一套完整的学习开发工具
学习 单片机 是需要成本的。必须有一台电脑、一块 单片机开发板 (如果开发板不能直接下载程序代码的话还得需要一个 编程 器)、一套视频教程、一本单片机教材和一本C语言教材。电脑是用来编写和 编译程序 ,并将程序代码下载到单片机上; 开发板 用来运行单片机程序,验证实际效果;视频教程就是手把手教你单片机开发环境的使用、单片机编程和调试。对于 单片机 初学者来说,视频教程必须看,要不然,哪怕把教材看了几遍,还是不知道如何下手,尤其是院校里的单片机教材,学了之后,面对真正的单片机时可能还是束手无策;单片机教材和C语言教材是理论学习资料,备忘备查。不要为了节约成本不用 开发板 而光用Proteus软件仿真调试,这和纸上谈兵没什么区别。
3. 要注重理论和实践相结合
单片机 C语言编程理论知识并不深奥,光看书不动手也能明白。但在实际 编程 的时候就没那么简单了。一个程序的形成不仅需要有C语言知识,更多需要融入你个人的 编程 思路和算法。编程思路和算法决定一个程序的优劣,是 单片机 编程的大问题,只有在实际动手编写的时候才会有深切的感悟。一个程序能否按照你的意愿正常运行就要看你的思路和算法是否正确、合理。如果程序不正常则要反复调试(检查、修改思路和算法),直到成功。这个过程耗时、费脑、疲精神,意志不坚强者往往被绊倒在这里半途而废。
学习编写程序应该按照以下过程学习,效果会更好。看到例程题目先试着构思自己的编程思路,然后再看教材或视频教程里的代码,研究人家的编程思路,注意与自己思路的差异;接下来就照搬人家的思路亲自动手编写这个程序,领会其中每一条语句的作用;对有疑问的地方试着按照自己的思路修改程序,比较程序运行效果,领会其中的奥妙。每一个例程都坚持按照这个过程学习,你很快会找到编程的感觉,取其精华去其糟粕,久而久之会形成你独特的编程思想。当然,刚开始,看别人的程序源代码就像看天书一样,只要硬着头皮看,看到不懂的关键字和语句就翻书查阅、对照。只要能坚持下来,学习收获会事半功倍。在实践过程中不仅要学会别人的例程,还要在别人的程序上改进和拓展,让程序产生更强大的功能。同时,还要懂得通过查阅 芯片 数据手册(DATASHEET)里有关芯片命令和数据的 读写时序 来核对别人例程的可靠性,如果你觉得例程不可靠就把它修改过来,成为是你自己的程序。不仅如此,自己应该经常找些项目来做,以巩固所学的知识和积累更多的经验。

硬件设计

当编写自己的程序信手拈来、阅读别人的程序能够发现问题的时候,说明你的 单片机 编程 水平相当不错了。接下来就应该研究硬件了。硬件设计包括 电路 原理设计和PCB板设计。学习做硬件要比学习做软件麻烦,成本更高,周期更长。但是,学习 单片机 的*终目的是做产品开发----软件和硬件相结合形成完整的控制系统。所以,做硬件也是学习 单片机 技术的一个必学内容。
电路 原理设计涉及到各种 芯片 的应用,而这些芯片外围电路的设计、典型应用电路和与 单片机 的连接等在芯片数据手册(DATASHEET)都能找到答案,前提是要看得懂全英文的数据手册。否则,照搬别人的设计永远落在别人的后面,你做的产品就没有创意。电子技术领域的**手资料(DATASHEET)都是英文,从**手资料里你所获得的知识可能是在教科书、网络文档和课外读物等所没有的知识。虽然有些资料也都是在DATASHEET的基础上撰写的,但内容不**,甚至存在翻译上的遗漏和错误。当然,阅读DATASHEET需要具备一定的英文阅读能力,这也是阻碍 单片机 学习者晋级的绊脚石。良好的英文阅读能力能让你在 单片机 技术知识的海洋里自由遨游。
做PCB板就比较简单了。只要懂得使用Protel软件或 AltiumDesigner软件就没问题了。但要想做的板子布局美观、布线合理还得费一番功夫了。
娴熟的 单片机 C语言编程、会使用Protel软件或 AltiumDesigner软件设计PCB板和具备一定的英文阅读能力,你就是一个遇强则强的单片机高手了。[2]

8抗干扰设计

在提高 硬件系统 抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51 单片机 系统为例,对微机 系统软件 抗干扰方法进行研究。

抗干扰

在工程实践中,软件抗干扰研究的内容主要是:一、消除模拟输入信号的噪声(如 数字滤波技术 );二、程序运行混乱时使程序重入正轨的方法。本文针对后者提出了几种有效的软件抗干扰方法。
指令冗余
CPU取指令过程是先取 操作码 ,再取 操作数 。当PC受干扰出现错误,程序便脱离正常轨道“乱飞”,当乱飞到某双字节指令,若取指令时刻落在 操作数 上,误将操作数当做 操作码 ,程序将出错。若“飞” 到了三字节指令,出错机率更大。
在关键地方人为插入一些单字节指令,或将有效单字节指令重写称为指令冗余。通常是在双字节指令和三字节指令后插入两个字节以上的NOP。这样即使乱飞程序飞到 操作数 上,由于空操作指令NOP的存在,避免了后面的指令被当作操作数执行,程序自动纳入正轨。
此外,对系统流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入两条NOP,也可将乱飞程序纳入正轨,确保这些重要指令的执行。
拦截技术
所谓拦截,是指将乱飞的程序引向指定位置,再进行出错处理。通常用软件陷阱来拦截乱飞的程序。因此先要合理设计陷阱,其次要将陷阱安排在适当的位置。
(1 ) 软件陷阱 的设计
当乱飞程序进入非程序区,冗余指令便无法起作用。通过 软件陷阱 ,拦截乱飞程序,将其引向指定位置,再进行出错处理。 软件陷阱 是指用来将捕获的乱飞程序引向复位入口地址0000H的指令。通常在EPROM中非程序区填入以下指令作为 软件陷阱 :
(2 ) 陷阱的安排
*后一条应填入020000,当乱飞程序落到此区,即可自动入轨。在 用户程序 区各模块之间的空余单元也可填入 陷阱指令 。当使用的中断因干扰而开放时,在对应的 中断服务程序 中设置 软件陷阱 ,能及时捕获错误的中断。如某应用系统虽未用到外部中断1,外部中断1的中断服务程序可为如下形式:
NOPNOPRETI返回指令可用“RETI”,也可用“LJMP 0000H”。如果故障诊断程序与系统自恢复程序的设计可靠、 完善,用“LJMP 0000H”作返回指令可直接进入故障诊断程序,尽早地处理故障并恢复程序的运行。
考虑到程序 存贮器 的容量, 软件陷阱 一般1K空间有2-3个就可以进行有效拦截。
软件“ 看门狗 ”技术
若失控的程序进入“死循环”,通常采用“ 看门狗 ”技术使程序脱离“死循环”。通过不断检测程序循环运行时间,若发现程序循环时间超过*大循环运行时间,则认为系统陷入“死循环”,需进行出错处理。
“ 看门狗 ”技术可由硬件实现,也可由软件实现。在工业应用中,严重的干扰有时会破坏 中断方式 控制字,关闭中断。则系统无法定时“ 喂狗 ”,硬件 看门狗 电路 失效。而软件 看门狗 可有效地解决这类问题。
笔者在实际应用中,采用环形中断监视系统。用定时器T0监视定时器T1,用定时器T1监视主程序,主程序监视定时器T0。采用这种环形结构的软件“ 看门狗 ”具有良好的抗干扰性能,大大提高了系统可靠性。对于需经常使用T1定时器进行 串口通讯 的测控系统,则定时器T1不能进行中断,可改由串口中断进行监控(如果用的是MCS-52系列 单片机 ,也可用T2代替T1进行监视)。这种软件“ 看门狗 ”监视原理是:在主程序、T0 中断服务程序 、T1中断服务程序中各设一运行观测变量,假设为MWatch、T0Watch 、T1Watch,主程序每循环一次,MWatch加1,同样T0、T1中断服务程序执行一次,T0Watch、 T1Watch加1。在T0中断服务程序中通过检测T1Watch的变化情况判定T1运行是否正常,在T1中断服务程序中检测MWatch的变化情况判定主程序是否正常运行,在主程序中通过检测T0Watch的变化情况判别T0是否正常工作。若检测到某观测变量变化不正常,比如应当加1而未加1,则转到出错处理程序作排除故障处理。当然,对主程序*大循环周期、定时器T0和T1定时周期应予以全盘合理考虑。限于篇幅不赘述。

抗干扰技术

单片机 系统因干扰复位或掉电后复位均属非正常复位,应进行故障诊断并能自动恢复非正常复位前的状态。
非正常复位的识别
程序的执行总是从0000H开始,导致程序从 0000H开始执行有四种可能:一、系统开机上电复位;二、软件故障复位;三、 看门狗 超时未 喂狗 硬件复位; 四、任务正在执行中掉电后来电复位。四种情况中除**种情况外均属非正常复位,需加以识别。
(1 )硬件复位与软件复位的识别
此处硬件复位指开机复位与 看门狗 复位,硬件复位对寄存器有影响,如复位后PC=0000H, SP=07H,PSW=00H等。而软件复位则对SP、 SPW 无影响。故对于微机测控系统,当程序正常运行时,将SP设置地址大于07H,或者将PSW的第5位用户标志位在系统正常运行时设为1。那么系统复位时只需检测PSW.5标志位或SP值便可判此是否硬件复位。
由于硬件复位时片内RAM状态是随机的,而软件复位片内RAM则可保持复位前状态,因此可选取片内某一个或两个单元作为上电标志。设40H用来做上电标志,上电标志字为78H,若系统复位后40H单元内容不等于78H,则认为是硬件复位,否则认为是软件复位,转向出错处理。若用两个单元作上电标志,则这种判别方法的可靠性更高。
(2 )开机复位与 看门狗 故障复位的识别
开机复位与 看门狗 故障复位因同属硬件复位, 所以要想予以正确识别,一般要借助非易失性RAM或者EEROM。当系统正常运行时,设置一可掉电保护的观测单元。当系统正常运行时,在定时 喂狗 的 中断服务程序 中使该观测单元保持正常值(设为 AAH),而在主程中将该单元清零,因观测单元掉电可保护,则开机时通过检测该单元是否为正常值可判断是否 看门狗 复位。
(3 )正常开机复位与非正常开机复位的识别
识别测控系统中因意外情况如系统掉电等情况引起的开机复位与正常开机复位,对于过程控制系统尤为重要。如某以时间为控制标准的测控系统,完成一次测控任务需1小时。在已执行测控50分钟的情况下,系统电压异常引起复位,此时若系统复位后又从头开始进行测控则会造成不必要的时间消耗。因此可通过一监测单元对当前系统的运行状态、系统时间予以监控,将控制过程分解为若干步或若干时间段,每执行完一步或每运行一个时间段则对监测单元置为关机允许值,不同的任务或任务的不同阶段有不同的值,若系统正在进行测控任务或正在执某时间段,则将监测单元置为非正常关机值。那么系统复位后可据此单元判系统原来的运行状态,并跳到出错处理���序中恢复系统原运行状态。
非正常复位后系统自恢复运行的程序设计
对顺序要求严格的一些过程控制系统,系统非正常复位否,一般都要求从失控的那一个模块或任务恢复运行。所以测控系统要作好重要 数据单元 、参数的备份,如系统运行状态、系统的进程值、当前输入、输出的值,当前时钟值、观测单元值等,这些数据既要定时备份,同时若有修改也应立即予以备份。
当在已判别出系统非正常复位的情况下,先要恢复一些必要的系统数据,如显示模块的初始化、片外扩展 芯片 的初始化等。其次再对测控系统的系统状态、运行参数等予以恢复,包括显示界面等的恢复。之后再把复位前的任务、参数、运行时间等恢复, 再进入系统运行状态。
应当说明的是,真实地恢复系统的运行状态需 要极为细致地对系统的重要数据予以备份,并加以数据可靠性检查,以保证恢复的数据的可靠性。
其次,对多任务、 多进程 测控系统,数据的恢复需考虑恢复的次序问题。
系统基本初始化是指对 芯片 、显示、输入输出方式等进行初始化,要注意输入输出的初始化不应造成误动作。而复位前任务的初始化是指任务的 执行状态 、运行时间等。
对于软件抗干扰的一些其它常用方法如 数字滤波 、RAM数据保护与纠错等,限于篇幅,本文未作讨论。在工程实践中通常都是几种抗干扰方法并用,互相补充 完善,才能取得较好的抗干扰效果。从根本上来说,硬件抗干扰是主动的,而软件是抗干扰是被动的。细致周到地分析干扰源,硬件与软件抗干扰相结合,完善系统监控程序,设计一稳定可靠的 单片机 系统是完全可行的。

9电子技术中单片机的应用

1、在家用电器领域的应用
现在在家用电器的更新、市场开拓等方面,单片机的应用越来越广泛,比如电子玩具或者**的电视游戏机中,会应用单片机实现其控制功能;而洗衣机可以利用单片机识别衣服的种类与脏污程度,从而自动选择洗涤强度与洗涤时间;在冰箱冷柜中采用单片机控制可以识别食物的种类与保鲜程度,实现冷藏温度与冷藏时间的自动选择;微波炉也可以通过单片机识别食物种类从而自动确定加热温度与加热时间等等,这些家用电器在应用单片机技术后,无论是性能还是功能,与传统技术相比均有长足的进步。
2、在医用设备领域的应用
现代医疗条件越来越发达,人们对医疗****技术也越来越重视,但是一些偏远地区的小医院、小诊所其****设备还十分简陋,无法有效的控制**质量。随着单片机技术的发展,其体积较小、功能强大、具有灵活的扩展性、应用方便的特点也越来越突出,因此在医用呼吸机、分析仪与监护仪、超声诊断设备、病床呼叫系统等设备中得到了广泛的应用。
3、在工业控制领域的应用
其实*早的单片机正是从工业领域开始兴起的,至今其在工业控制领域的应用仍然十分广泛,利用单片机技术构成多种多样的数据采集系统与智能控制系统,比如工厂流水线的智能化管理、智能化电梯、报警系统等等,均是通过单片机技术与计算机联网构成二级控制系统。
4、在仪器仪表领域的应用
上文中也谈到单片机具备集成度高、体积小、较强的控制功能与扩展的灵活性等特点,并且处理速度快,具有较高的可靠性,所以在智能仪器仪表领域其应用也十分广泛。从某种程度而言,单片机带动了传统测量、控制仪器仪表技术的一项**,通过单片机技术实现了仪器仪表技术的数字化、智能化、综合化以及多功能化,与传统的电子电路或者数字电路相比,其功能更强大,综合性更突出。

10基础知识

本段仅针对硬件设计人员和 软件设计 人员,为了便于对硬件的理解要有一定的汇编语言基础。

总线

我们知道,一个 电路 总是由 元器件 通过电线连接而成的,在 模拟电路 中,连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却不一样,它是以 微处理器 为核心,各器件都要与微处理器相连,各器件之间的工作必须相互协调,所以需要的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线,则线的数量将多得惊人,所以在微处理机中引入了总线的概念,各个器件共同享用连线,所有器件的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的 字形码 ,也是实际输出的值。
理解了地址、指令的本质,就不难理解程序运行过程中为什么会跑飞,会把数据当成指令来执行了。

功能

初学时往往对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 0000H
LJMP START
ORG 040H
START:
MOV SP,#5FH ;设 堆栈
LOOP:
NOP
LJMP LOOP ;循环
END ;结束

11单片指令

传送操作

助记符 代码 说明
MOV A,Rn E8~EF 寄存器 A
MOV A,direct E5 direct 直接 字节 送A
MOV A,@Ri ER~E7 间接RAM送A
MOV A,#data 74 data 立即数 送A
MOV Rn,A F8~FF A送寄存器
MOV Rn,direct A8~AF direct 直接字节送寄存器
MOV Rn,#data 78~7F data 立即数 送寄存器
MOV direct,A F5 direct A送直接字节
MOV direct,Rn 88~8F direct 寄存器送直接字节
MOV direct1,direct2 85 direct1 direct2 直接字节送直接字节
MOV direct,@Ro 86~87 间接RAM送直接字节
MOV direct,#data 75 direct data 立即数 送直接字节
MOV @Ri,A F6~F7 A送间接RAM
MOV @Ri,direct 76~77 direct 直接字节送间接RAM
MOV @Ri,#data 76~77 data 立即数送间接RAM
MOV DPTR,#data16 90 data 15~8 16位常数送数据指针
data7~0
MOVC A,@A+DPTR 93 由((A)+(DPTR))寻址的程序存贮
器字节选A
MOVC A,@A+PC 83 由((A)+(PC));寻址的程序 存贮器 字节送A
MOVX A,@Ri E2~E3 送 外部数据 (8位地址)送A
MOVX A,@DPTR E0 送 外部数据 (16位地址)送A
MOVX @Ri,A F2~F3 A送 外部数据 (8位地址)
MOVX @DPTR,A F0 A送 外部数据 (16位地址)
PUSH direct C0 direct 直接字节 进栈 ,SP加1
POP direct D0 direct 直接字节退栈,SP减1
XCH A,Rn C8~CF 交换A和寄存器
XCH A,direct C5 direct 交换A和直接字节
XCH A,@Ri C6~C7 交换A和间接RAM
XCH A,@Ri D6~D7 交换A和间接RAM的低位
SWAP A C4

算术操作

(A的二个 半字节 交换)
ADD A,Rn 28~2F 寄存器加到A
ADD A,direct 25 direct 直接字节加到A
ADD A,@Ri 26~27 间接RAM加到A
ADD A,#data 24data 立即数 加到A
ADD A,Rn 38~3F 寄存器和进位位加到A
ADD A,direct 35direct 直接字节和进位位加到A
ADD A,@Ri 36~37 间接字节和进位位加到A
ADD A,data 34 data 立即数 和进位位加到A
ADD A,Rn 98~9F A���去寄存器和进位位
ADD A,direct 95 direct A减去直接字节和进位位
ADD A,@Ri 36~37 间接RAM和进位位加到A
ADD A,data 34 data 立即数和进位位加到A
SUBB A,Rn 98~9F A减去寄存器和进位位
SUBB A,direct 95 direct A减去直接字节和进位位
SUBB A,@Ri 96~97 A减去间接RAM和进位位
SUBB A,#data 94 data A减去立即数和进位位
INC A 04 A加1
INC Rn 08~0F 寄存器加1
INC direct 05 direct 直接字节加1
INC @Ri 06~07 间接RAM加1
DEC A 14 A减1
DEC Rn 18~1F 寄存器减1
DEC direct 15 direct 直接字节减1
DEC @Ri 16~17 间接RAM减1
INC DPTR A3 数据指针加1
MUL AB A4 A乘以B
DIV AB 84 A除以B
DA A D4 A的十进制加法调整

逻辑操作

ANL A,Rn 58~5F 寄存器“与”到A
ANL A,direct 55 direct 直接字节“与”到A
ANL A,@Ri 56~57 间接RAm“与”到A
ANL A,#data 54 data 立即数 “与”到A
ANL direct A 52 direct A“与”到直接字节
ANL direct,#data 53 direct data 立即数 “与”到直接字节
ORL A,Rn 48~4F 寄存器“或”到A
ORL A,direct 45 direct 直接字节“或”到A
ORL A,@Ri 46~47 间接RAM“或”到A
ORL A,#data 44 data 立即数 “或”到A
ORL direct,A 42 direct A“或”到直接字节
ORL direct,#data 43 direct data 立即数 “或”到直接字节
XRL A,Rn 68~6F 寄存器“异或”到A
XRL A,direct 65 direct 直接字节“异或”到A
XRL A,@Ri 66~67 间接RAM“异或”到A
XRL A,#data 64 data 立即数 “异或”到A
XRL direct A 62 direct A“异或”到直接字节
XRL direct,#data 63 direct data 立即数 “异或”到直接字节
CLR A E4 清零
CPL A F4 A取反
RL A 23 A左环移
RLC A 33 A通过进位左环移
RR A 03 A右环移
RRC A 13 A通过进位右环移

程序转移

ACALL addr 11 *1 addr(a7~a0) ** 子程序 调用
LCALL addr 16 12 addr(15~8) 长子程序调用
addr(7~0)
RET 22 子程序 调用返回
RETI addr 11 32 中断调用返回
AJMP addr 11 △1 addr(a7~a6) **转移
LJMP addr 16 02addr(15~8) 长转移
addr(7~0)
SJMP rel 80 rel 短转移,相对转移
JMP @A+DPTR 73 相对于DPTR间接转移
JZ rel 60 rel A为零转移
JNZ rel 70 rel A为零转移
CJNE A,direct,rel B5 direct rel 直接字节与A比较,不等则转移
CJNE A,#data,rel B4 data rel 立即数 与A比较,不等则转移
CJNE A,Rn,#data,rel B8~BF data rel 立即数 与寄存器比较,不等则转移
CJNE @Ri,#data,rel B6~B7 data rel 立即数 与间接RAM比较,不等则转移
DJNZ Rn,rel D8~DF rel 寄存器减1,不为零则转移
DJNZ direct,rel B5 direct rel 直接字节减1,不为零则转移
NOP 00 空操作

布尔变量操作

CLR C C3 清零进位
CLR bit C2 清零直接位
SETB C D3 置位进位
SETB bit D2 置位直接位
CPL C B3 进位取反
CPL bit B2 直接位取反
ANL C,bit 82 dit 直接数“与”到进位
ANL C,/bit B0 直接位的反“与”到进位
ORL C,bit 72 bit 直接位“或”到进位
ORL C,/bit A0 bit 直接位的反“或”到进位
MOV C,bit A2 bit 直接位送进位
MOV bit,C 92 bit 进位送直接位
JC rel 40 rel 进位位为1转移
JNC rel 50 rel 进位位为0转移
JB bit,rel 20 bit rel 直接位为1相对转移
JNB bit,rel 30 bit rel 直接位为0相对转移
JBC bit,rel 10 bit rel 直接位为1相对转移,然后清零该位

12单片机芯片

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单片机 .
PHLIPIS 51LPC系列 单片机 (51单片机):
PHILIPS 公司的 单片机 是基于80C51内核的单片机,嵌入了掉电检测、模拟以及片内RC 振荡器 等功能,这使51LPC在高集成度、低成本、低功耗的应用设计中可以满足多方面的性能要求.
HOLTEK 单片机 :
台湾盛扬半导体的 单片机 ,价格便宜,种类较多,但抗干扰较差,适用于消费类产品.
TI公司 单片机 (51单片机):
德州仪器 提供了TMS370和MSP430两大系列通用 单片机 .TMS370系列单片机是8位CMOS单片机,具有多种存储模式、多种外围接口模式,适用于复杂的实时控制场合;MSP430系列单片机是一种超低功耗、功能集成度较高的16位低功耗单片机,特别适用于要求功耗低的场合
松翰 单片机 (SONIX):
是台湾松翰公司的单片,大多为8位机,有一部分与PIC 8位 单片机 兼容,价格便宜, 系统时钟 分频可选项较多,有PMW ADC 内振 内部杂讯滤波。缺点RAM空间过小,抗干扰较好。

三星单片机

三星单片机有KS51和KS57系列4位单片机,KS86和KS88系列8位单片机,KS17系列16位单片机和KS32系列32位单片机,三星还为ARM公司生产ARM单片机,常见的S344b0等.三星单片机为OTP型ISP在片编程功能.

SST 单片机

美国SST公司推出的SST89系列单片机为标准的51系列单片机,包括SST89E/V52RD2, SST89E/V54RD2,SST89E/V58RD2,SST89E/V554RC,SST89E/V564RD等.它与8052系列单片机兼容.提供系统在线编程(ISP功能).内部flash擦写次数1万次以上,程序保存时间可达100年.
还有很多**的单片机生产企业这里没有收集,每个企业都有自己的特点,大家根据需要选择单片机,在完全实现功能的前提下追求低价位,当然并不是这样*好,实际中选择单片机跟***的应用习惯和开发经验是密不可分的.

13攻击技术

攻击 单片机 主要有四种技术,分别是:
(1)软件攻击
该技术通常使用 处理器 通信接口并利用协议、 加密算法 或这些算法中的 **漏洞 来进行攻击。软件攻击取得成功的一个典型事例是对早期ATMEL AT89C 系列 单片机 的攻击。攻击者利用了该系列 单片机 擦除操作时序设计上的漏洞,使用自编程序在擦除 加密锁 定位后,停止下一步擦除片内程序存储器数据的操作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。
(2) 电子探测攻击
该技术通常以高时间分辨率来监控 处理器 在正常操作时所有电源和接口连接的模拟特性,并通过监控它的电磁辐射特性来实施攻击。因为 单片机 是一个活动的电子器件,当它执行不同的指令时,对应的电源功率消耗也相应变化。这样通过使用特殊的 电子测量仪器 和数学统计方法分析和检测这些变化,即可获取 单片机 中的特定关键信息。
(3)过错产生技术
该技术使用异常工作条件来使 处理器 出错,然后提供额外的访问来进行攻击。使用*广泛的过错产生攻击手段包括电压冲击和时钟冲击。低电压和高电压攻击可用来禁止 保护电路 工作或强制 处理器 执行错误操作。时钟瞬态跳变也许会复位保护 电路 而不会破坏受保护信息。电源和时钟瞬态跳变可以在某些 处理器 中影响单条指令的解码和执行。
(4)探针技术
该技术是直接暴露 芯片 内部连线,然后观察、操控、干扰 单片机 以达到攻击目的。为了方便起见,人们将以上四种攻击技术分成两类,一类是侵入型攻击(物理攻击),这类攻击需要破坏封装,然后借助半导体测试设备、显微镜和微定位器,在专门的实验室花上几小时甚至几周时间才能完成。所有的微探针技术都属于侵入型攻击。另外三种方法属于非侵入型攻击,被攻击的 单片机 不会被物理损坏。在某些场合非侵入型攻击是特别危险的,但是因为非侵入型攻击所需设备通常可以自制和升级,因此非常廉价。
大部分非侵入型攻击需要攻击者具备良好的 处理器 知识和软件知识。与之相反,侵入型的探针攻击则不需要太多的初始知识,而且通常可用一整套相似的技术对付宽范围的产品。

14加密方法

科研成果保护是每一个科研人员*关心的事情,加密方法有 软件加密 , 硬件加密 ,软硬件综合加密,时间加密,错误引导加密,**保护等措施有矛就有盾,有盾就有矛,有矛有盾,才促进矛盾质量水平的提高。加密只讲盾,现先讲一个软件加密:利用MCS-51 中A5 指令加密,其实世界上所有资料,包括英文资料都没有讲这条指令,其实这是很好的加密指令。A5 功能是二字节空操作指令。加密方法:在A5 后加一个二字节或三字节 操作码 ,因为所有反汇编软件都不会反汇编A5 指令,造成正常程序反汇编乱套,执行程序无问题仿制者就不能改变你的源程序。
硬件加密 :8031/8052 单片机 就是8031/8052掩模产品中的不合格产品,内部有ROM,可以把8031/8052 当8751/8752 来用,再扩展外部程序器,然后调用8031 内部 子程序 。当然你所选的同批8031 芯片 的首地址及所需用的中断入口均应转到外部程序区。
硬件加密
用高电压或激光烧断某条 引脚 ,使其读不到 内部程序 ,用高电压会造成一些器件损坏重要RAM 数据采用电池(大 电容 ,街机采用的办法)保护,拔出 芯片 数据失去机器不能起动,或能初始化,但不能运行。
用真假方法加密
擦除 芯片 标识
把8X52 单片机 ,标成8X51 单片机,并用到后128B的RAM 等方法,把AT90S8252 当AT89C52,初始化后 程序段 中并用到EEPROM 内容,你再去联想吧!
用激光(或丝印)打上其它标识如有的 单片机 引脚兼容,有的又不是同一种单片机,可张冠李戴,只能意会了,这要求你知识面广一点 。
用*新出厂编号的 单片机 ,如2000 年后的AT89C 就难解密,或新的单片机品种,如AVR 单片机。
DIP 封装改成PLCC,TQFP,SOIC,BGA等封装,如果量大可以做定制ASIC,或软封装,用不需外晶振的 单片机 工作(如AVR 单片机中的AT90S1200),使用更复杂的单片机,FPGA+AVR+SRAM=AT40K系列。
硬件加密 与 软件加密 只是为叙说方便而分开来讲,其实它们是分不开的,互相支撑,互相依存的软件加密:其目的是不让人读懂你的程序,不能修改程序,你可以………….....
利用 单片机 未公开,未被利用的标志位或单元,作为软件标志位,如8031/ 8051 有一个用户标志位,PSW.1 位,是可以利用的程序入口地址不要用整地址,如:XX00H,XXX0H,可用整地址-1,或-2,而在整地址处加二字节或三字节 操作码 ,在无程序的空单元也加上程序 机器码 ,*好要加巧妙一点用大容量 芯片 ,用市场上 仿真器 不能仿真的芯片,如内部程序为64KB 或大于64KB 的器件,如:AVR 单片机中ATmega103 的Flash 程序存储器为128KBAT89S8252/ AT89S53 中有EEPROM,关键数据存放在EEPROM 中,或程序初始化时把密码写到EEPROM 中,程序执行时再查密码正确与否,尽量不让人家读懂程序。关于 单片机 加密,讲到这里,就算抛砖引玉。

15单片机故障的排除

1单片机正常工作的三个条件

单片机工作的三个条件分别是电源、时钟晶振、复位。当单片机不能正常工作时,我们首先就要检查这三个条件,用电压表或者万用表检测他的电源和接地脚,检测两个引脚之间的电压是不是5V左右;对于时钟晶体振荡有没有正常工作,我们*好用示波器进行检测,看能否检测到相应频率的正弦波脉冲;复位检测比较简单,单片机的复位电平一般是高电平复位,单片机在接通电源的时候一般复位引脚上会出现5V左右的高电平,另外在按下复位按键时,复位引脚上也会出现高电平,用一般的电压表或者万用表都可以进行检测[1]

2单片机内部是否正常工作的检测

单片机内部有没有正常工作,我们主要是通过写入程序的方式来进行检测和排查。这个检测需要有“烧入”代码的硬件和软件才行,检测的原理就是通过“烧入”代码的硬件和软件,将一段带有检测功能的正常代码“烧入”到单片机。检查两个方面:**就是能不能将目标代码正常写入单片机,不能正常写入单片机时,说明单片机已经损坏,需要更换同型号的单片机;**就是目标代码可以正常写入单片机,写入后的效果是不是就是程序设定的功能,如果是说明单片机正常。
单片机在更换时,我们*好采用同型号的单片机,然后写入公司给予的目标代码,单片机的价格目前一般比较便宜,零售价格大概也就5元左右。