单片机实验内容把A的内容传送到P3口的操作指令怎么写

对于单片机的P0~P3端口进行读写操作是单片机应用的最基本方法。汇编语言都有哪些指令实现对P0~P_百度知道
对于单片机的P0~P3端口进行读写操作是单片机应用的最基本方法。汇编语言都有哪些指令实现对P0~P
对于单片机的P0~P3端口进行读写操作是单片机应用的最基本方法。汇编语言都有哪些指令实现对P0~P3端口数据的读写,C51又有哪些语句可以实现上述操作。对比二者的异同之处。要求举例说明。
我有更好的答案
a,p1写端口:set
p0;p0端口置1clr
p0;p0端口清零C51读端口二者不是同一类语言,不好比较:a=P2;写端口:P2=0x5a;&#47。汇编读端口
采纳率:68%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。 上传我的文档
 下载
 收藏
粉丝量:65
该文档贡献者很忙,什么也没留下。
 下载此文档
单片机复习题及答案
下载积分:0
内容提示:单片机复习题及答案
文档格式:PDF|
浏览次数:902|
上传日期: 20:53:51|
文档星级:
全文阅读已结束,此文档不支持下载
该用户还上传了这些文档
单片机复习题及答案
关注微信公众号单片机 - 搜狗百科
&&历史版本
该版本已锁定
单片机 百科名片
单片机是一种集成在芯片,是采用技术把具有数据处理能力的中央处理器CPURAM、、多种I/O口和中断系统、定时器/等功能(可能还包括显示驱动电路、电路、模拟多路转换器、等电路)集成到一块硅片上构成的一个小而完善的。目录
  单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件——存储器中。存储器由许多存储单元(最小的存储单位)组成,就像大楼房有许多房间组成一样,指令就存放在这些单元里,单元里的指令取出并执行就像大楼房的每个房间的被分配到了唯一一个房间号一样,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行。   程序通常是顺序执行的,所以程序中的指令也是一条条顺序存放的,单片机在执行程序时要能把这些指令一条条取出并加以执行,必须有一个部件能追踪指令所在的地址,这一部件就是程序计数器PC(包含在CPU中),在开始执行程序时,给PC赋以程序中第一条指令所在的地址,然后取得每一条要执行的命令,PC在中的内容就会自动增加,增加量由本条指令长度决定,可能是1、2或3,以指向下一条指令的起始地址,保证指令顺序执行。   单片机介绍   单片微型计算机简称单片机,是典型的嵌入式(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机由内仅有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和。   单片机比专用处理器更适合应用于,因此它得到了最多的应用。事实上单片机是世界上数量最多的。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、、家用电器、电子玩具、以及鼠标等电脑配件中都配有1-2部单片机。而中也会有为数不少的单片机在工作。上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。   单片机又称,它不是完成某一个逻辑功能的芯片,而是把一个到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了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的历史功绩。
嵌入式系统
  单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。
单片机发展史
     1971年研制出世界上第一个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位的微处理器年8月,霍夫等人研制出8位微处理器Intel 8080,以N沟道取代了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口功能,系统扩展方面都有了很大的提高。
  1、单片机集成度高。单片机包括CPU、4KB容量的ROM(8031 无)、128 B容量的RAM、 2个16位定时/、4个8位并行口、全双工串口行口。   2、系统结构简单,使用方便,实现模块化;   3、单片机可靠性高,可工作到10^6 ~10^7小时无故障;   4、处理功能强,速度快。
  单片机的应用   目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能,民用豪华轿车的安全保障系统,、、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。   单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:   1.在仪表上的应用   单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的,可实现诸如电压、、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或更加强大。例如精密的测量设备(,,各种分析仪)。   2.在工业控制中的应用   用单片机可以构成形式多样的控制系统、。例如工厂流水线的智能化管    理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。   3.在家用电器中的应用   可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他视频器材、再到量设备,五花八门,无所不在。   4.在计算机网络和通信领域中的应用   现代的单片机普遍具备,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,对讲机等。   5.单片机在医用设备领域中的应用   单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。   6.在各种大型电器中的模块化应用   某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。如:音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。   在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。   7.单片机在汽车设备领域中的应用   单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于CAN总线的汽车发动机智能,GPS导航系统,,制动系统等等。   此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。
  单片机学习应用的六大重要部分
一、总线:
  我们知道,一个电路总是由通过电线连接而成的,在中,连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却不一样,它是以为核心,各器件都要与微处理器相连,各器件之间的工作必须相互协调,所以需要的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线,则线的数量将多得惊人,所以在微处理机中引入了总线的概念,各个器件共同享用连线,所有器件的8根数据线全部接到8根公用的线上,即相当于各个器件并联起来,但仅这样还不行,如果有两个器件同时送出数据,一个为0,一个为1,那么,接收方接收到的究竟是什么呢?这种情况是不允许的,所以要通过控制线进行控制,使器件分时工作,任何时候只能有一个器件发送数据(可以有多个器件同时接收)。器件的数据线也就被称为,器件所有的控制线被称为。在单片机内部或者及其它器件中有,这些存储单元要被分配,才能使用,分配地址当然也是以电信号的形式给出的,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为。
二、数据、地址、指令:
  之所以将这三者放在一起,是因为这三者的本质都是一样的——数字,或者说都是一串‘0’和‘1’组成的序列。换言之,地址、指令也都是数据。指令:由单片机芯片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的一一对应关系,不可以由单片机的开发者更改。地址:是寻找单片机内部、外部的存储单元、输入输出口的依据,内部单元的地址值已由者规定好,不可更改,外部的单元可以由单片机开发者自行决定,但有一些地址单元是一定要有的(详见程序的执行过程)。数据:这是由微处理机处理的对象,在各种不同的应用电路中各不相同,一般而言,被处理的数据可能有这么几种情况:   1?地址(如MOV DPTR,1000H),即地址1000H送入。   2?方式字或控制字(如MOV TMOD,#3),3即是控制字。   3?常数(如MOV TH0,#10H)10H即定时常数。   4?实际输出值(如P1口接彩灯,要灯全亮,则执行指令:MOV P1,#0FFH,要灯全暗,则执行指令:MOV P1,#00H)这里0FFH和00H都是实际输出值。又如用于LED的字形码,也是实际输出的值。   理解了地址、指令的本质,就不难理解程序运行过程中为什么会跑飞,会把数据当成指令来执行了。
三、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,每当执一次时,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 ;结束
  目前,很多人对并不认可。可以说,掌握用C语言单片机编程很重要,可以大大提高开发的效率。不过初学者可以不了解单片机的汇编语言,但一定要了解单片机具体性能和特点,不然在单片机领域是比较致命的。如果不考虑单片机硬件资源,在KEIL中用C胡乱编程,结果只能是出了问题无法解决!可以肯定的说,最好的C语言单片机工程师都是从汇编走出来的编程者,因为虽然是高级语言,但是它不同于台式机个人电脑上的VC++什么的。单片机的硬件资源不是非常强大,不同于我们用VC、VB等高级语言在台式PC上写程序,毕竟台式电脑的硬件非常强大,所以才可以不考虑硬件资源的问题。还有就是在单片机编程中虽然编程方便,便于人们阅读,但是在执行效率上是要比汇编语言低10%到20%,所以用什么语言编写程序是要看具体用在什么场合下。总的来说做单片机编程要灵活使用汇编语言与C语言,让单片机的强大功能以最高是效率展示给用户。   以80为例讲解单片机的引脚及相关功能;   《单片机引脚图》   40个引脚按引脚功能大致可分为4个种类:电源、时钟、控制和I/O引脚。   ⒈ 电源:   ⑴ VCC - 芯片电源,接+5V;   ⑵ VSS - 接地端;   注:用万用表测试单片机引脚电压一般为0v或者5v,这是标准的。但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于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 定时计数器0   P35 T1 定时计数器1   P36 WR 外部数据存储器写选通(低电平有效)   P37 RD 外部数据存储器读选通(低电平有效)
一、传送操作
  助记符 代码 说明   MOV A,Rn E8~EF A   MOV A,direct E5 dircet 直接送A   MOV A,@Ri ER~E7 间接RAM送A   MOV A,#data 74 data 立即数送A   MOV Rn,A F8~FF A送寄存器   MOV Rn,dircet A8~AF dircet 直接字节送寄存器   MOV Rn,#data 78~7F data 立即数送寄存器   MOV dircet,A F5 dircet A送直接字节   MOV dircet,Rn 88~8F dircet 寄存器送直接字节   MOV dircet1,dircet2 85 dircet1 dircet2 直接字节送直接字节   MOV dircet,@Ro 86~87 间接RAM送直接字节   MOV dircet,#data 75 dircet data 立即数送直接字节   MOV @Ri,A F6~F7 A送间接RAM   MOV @Ri,#data 76~77 data 直接字节送间接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 dircet C0 dircet 直接字节进栈,SP加1   POP dircet D0 dircet 直接字节退栈,SP减1   XCH A,Rn C8~CF 交换A和寄存器   XCH A,dircet C5 dircet 交换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,dircet 25 dircet 直接字节加到A   ADD A,@Ri 26~27 间接RAM加到A   ADD A,#data 24data 立即数加到A   ADD A,Rn 38~3F 寄存器和进位位加到A   ADD A,dircet 35dircet 直接字节和进位位加到A   ADD A,@Ri 36~37 间接字节和进位位加到A   ADD A,data 34 data 立即数和进位位加到A   ADD A,Rn 98~9F A减去寄存器和进位位   ADD A,dircet 95 dircet A减去直接字节和进位位   ADD A,@Ri 36~37 间接RAM和进位位加到A   ADD A,data 34 data 立即数和进位位加到A   SUBB A,Rn 98~9F A减去寄存器和进位位   SUBB A,dircet 95 dircet 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 dircet 05 dircet 直接字节加1   INC @Ri 06~07 间接RAM加1   DEC A 14 A减1   DEC Rn 18~1F 寄存器减1   DEC dircet 15 dircet 直接字节减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,dircet 55 dircet 直接字节“与”到A   ANL A,@Ri 56~57 间接RAm“与”到A   ANL A,#data 54 data 立即数“与”到A   ANL dircet A 52 dircet A“与”到直接字节   ANL dircet,#data 53 dircet data 立即数“与”到直接字节   ORL A,Rn 48~4F 寄存器“或”到A   ORL A,dircet 45 dircet 直接字节“或”到A   ORL A,@Ri 46~47 间接RAM“或”到A   ORL A,#data 44 data 立即数“或”到A   ORL dircet,A 42 dircet A“或”到直接字节   ORL dircet,#data 43 dircet data 立即数“或”到直接字节   XRL A,Rn 68~6F 寄存器“异或”到A   XRL A,dircet 65 dircet 直接字节“异或”到A   XRL A,@Ri 66~67 间接RAM“异或”到A   XRL A,#data 64 data 立即数“异或”到A   XRL dircet A 62 dircet A“异或”到直接字节   XRL dircet,#data 63 dircet 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,dircet,rel B5 dircet 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 dircet,rel B5 dircet rel 直接字节减1,不为零则转移   NOP 00 空操作   *=a10a9a8l   △=a10a9a80
五、布尔变量操作
  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相对转移,然后清零该位
  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的单片机,也叫.   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、只有单片机出现后才可能实现其功能。   3嵌入式系统带动了整个电子产业   目前电子元器件产业除了微处理器、嵌入式系统器件外,大多是围绕现代电子系统配套的元器件产业,例如满足人机交互用的按键,LED/LCD显示驱动、LED/LCD显示单元、语音集成器件等,满足数据采集通道要求的、ADC、、信号调理模块等,满足伺服驱动控制的DAC、固体继电器、控制器、变频控制单元等,满足通信要求的各种总线驱动器、电平转换器等。   世界电子元器件在嵌入式系统带动下,沿着充分满足嵌入式应用的现代电子系统要求发展。这就使原来经典电子系统的天地愈来愈小。电子系统中的各类从业人员应尽早转向现代电子系统的康庄大道。   五、单片机将造就新一代电子精英   如果说五十年代起,无线电世界造就了几代精英,那么当今的单片机世界将会造就出新一代电子精英。   1单片机带你进入智能化电子领域   若将经典电子系统当作一个僵死的电子系统,那么智能化的现代电子系统则是一个具有“生命”的电子系统。单片机应用系统的硬件结构给予电子系统“身躯”,单片机应用系统的赋予其“生命”。例如,在设计智能化仪器显示器的显示功能时,可在开机时显示结果,未进入工作时显示各种待机状态,仪器运行时显示运行过程,工作结束后可显示当前结果、自检结果、原始数据、各种处理报表等。在无人值守时,可给定各种自动运行功能。   电子系统的智能化为无止境境界,常常不需硬件资源的增添就能实现各种翻新功能。这也是当前许多家用电器功能大量增设的因素之一。   2单片机带你进入计算机工控领域   21世纪是全人类进入计算机时代的世纪,许多人不是在制造计算机便是在使用计算机。在使用计算机的人们中,只有从事嵌入式系统应用的人才真正地进入到计算机系统的内部软、硬件体系中,才能真正领会计算机的智能化本质并掌握智能化设计的知识。从学习入手是当今培养计算机应用软、硬件技术人才的最佳道路之一。  3单片机带你进入最具魅力的电子世界   独具魅力的单片机能使你体会到电脑的真谛,你可以用单片机亲自动手设计智能玩具,可以设计不同的应用程序实现不同的功能。既有硬件制作又有软件设计,既动脑、又动手。初级水平可开发智能玩具,用宏指令编程。中级水平可开发一些智能控制器,如、智能车、各种遥控模型。高级水平可开发机器人,如机器人足球赛,开发工业控制单元,网络通信等,并用汇编语言或高级语言设计应用程序。围绕形成的电子产业的未来,将会为提供广阔的天地,一个比当年无线电世界更广阔、更丰富、更持久、更具魅力的电子世界。投身到单片机世界来,将使你一生受益。
  目前,攻击单片机主要有四种技术,分别是:   (1)软件攻击   该技术通常使用处理器通信接口并利用协议、加密算法或这些算法中的安全漏洞来进行攻击。软件攻击取得成功的一个典型事例是对早期ATMEL AT89C 系列单片机的攻击。攻击者利用了该系列单片机擦除操作时序设计上的漏洞,使用自编程序在擦除定位后,停止下一步擦除片内程序存储器数据的操作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。   (2) 电子探测攻击   该技术通常以高时间分辨率来监控处理器在正常操作时所有电源和接口连接的模拟特性,并通过监控它的电磁辐射特性来实施攻击。因为单片机是一个活动的电子器件,当它执行不同的指令时,对应的电源功率消耗也相应变化。这样通过使用特殊的和数学统计方法分析和检测这些变化,即可获取单片机中的特定关键信息。   (3)过错产生技术   该技术使用异常工作条件来使处理器出错,然后提供额外的访问来进行攻击。使用最广泛的过错产生攻击手段包括电压冲击和时钟冲击。低电压和高电压攻击可用来禁止工作或强制处理器执行错误操作。时钟瞬态跳变也许会复位保护电路而不会破坏受保护信息。电源和时钟瞬态跳变可以在某些处理器中影响单条指令的解码和执行。   (4)探针技术   该技术是直接暴露芯片内部连线,然后观察、操控、干扰单片机以达到攻击目的。为了方便起见,人们将以上四种攻击技术分成两类,一类是侵入型攻击(物理攻击),这类攻击需要破坏封装,然后借助半导体测试设备、显微镜和微定位器,在专门的实验室花上几小时甚至几周时间才能完成。所有的微探针技术都属于侵入型攻击。另外三种方法属于非侵入型攻击,被攻击的单片机不会被物理损坏。在某些场合非侵入型攻击是特别危险的,但是因为非侵入型攻击所需设备通常可以自制和升级,因此非常廉价。   大部分非侵入型攻击需要攻击者具备良好的处理器知识和软件知识。与之相反,侵入型的探针攻击则不需要太多的初始知识,而且通常可用一整套相似的技术对付宽范围的产品。
  科研成果保护是每一个科研人员最关心的事情,目的不使自己的辛苦劳动付注东流加密方法有软件加密,硬件加密,软硬件综合加密, 时间加密,错误引导加密,专利保护等措施有矛就有盾,有盾就有矛,有矛有盾,才促进矛盾质量水平的提高加密只讲盾,也希望网友提供更新的加密思路,现先讲一个软件加密:利用MCS-51 中A5 指令加密,(本人85 年发现的,名),其实世界上所有资料,包括英文资料都没有讲这条指令,其实这是很好的加密指令A5 功能是二字节空操作指令加密方法在A5 后加一个二字节或三字节操作码,因为所有反汇编软件都不会反汇编A5 指令,造成正常程序反汇编乱套,执行程序无问题仿制者就不能改变你的源程序,你应在程序区写上你的大名单位开发时间及仿制必究的说法,以备获得法律保护我曾抓到过一位获省优产品仿制者,我说你们为什么把我的名字也写到你的产品中?   硬件加密: 单片机就是掩模产品中的不合格产品,内部有ROM(本人85年发现的),可以把 当 来用,再扩展外部程序器,然后调用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系列   硬件加密与软件加密只是为叙说方便而分开来讲, 其实它们是分不开的,互相支撑,互相依存的软件加密:其目的是不让人读懂你的程序,不能修改程序,你可以.......   利用单片机未公开,未被利用的标志位或单元,作为软件标志位,如 有一个用户标志   位,PSW.1 位,是可以利用的程序入口地址不要用整地址,如:XX00H,XXX0H,可用整地址-1,或-2,而在整地址处加二字节或三字节操作码,在无程序的空单元也加上程序机器码,最好要加巧妙一点   用大容量芯片,用市场上仿真器不能仿真的芯片,如内部程序为64KB 或大于64KB 的器件,   如:AVR 单片机中ATmega103 的Flash 程序存储器为128KB   AT89S8252/AT89S53 中有EEPROM,关键数据存放在EEPROM 中,或程序初始化时把密码写   到EEPROM 中,程序执行时再查密码正确与否,然后....... 当然不能告说人家这是什么器件,尽量不让人家读懂程序,在这里说谎,骗人是正当防卫。   用真真假假, 假假真真,把几种不同品种的单片机放在同一设备中,如主芯片用AVR(说是MCS51),键盘显示用AT89C2051(说是GAL),I/O 口扩展驱动用PIC(说是AT90S1200)等,当然要求你知识面广一点如果你用高级语言C 编写程序就简单了,因为C 语言程序移植方便有些国家的产品能做到三年保修,三年保不坏,三年后保坏,或三年后保有故障,可能用什么技术?你去想吧例:每次开机或关机,EEPROM 某单元加1,也可二个三个单元连接起来计数,达到某值停止工作,硬件用软件代替,软件用硬件代替用大规模CPLD 可编程器件,关于单片机加密,讲到这里,就算抛砖引玉,下面请各位高手把玉亮出来吧。
1.1概述 1.1.1计算机发展概况
1. 计算机的诞生 1945年底,世界上第一台使用电子管制造的电子数字计算 机在美国宾夕法尼亚大学莫尔学院研制成功,并在1946年2月 15日举行了计算机的正式揭幕典礼。 2. 计算机的发展 第一代计算机是电子管计算机(年)。 第二代计算机是晶体管计算机(年)。 第三代计算机是集成电路计算机(年)。 第四代计算机是大规模集成电路计算机。 第五代计算机(可能)应用生物技术、纳米技术和量子技术。
使用了18000个电子管,1500个继电器,总体积约90 立方米,重达30吨,占地150平方米,需要用一间30多米 长的大房间才能存放。
1.1.2计算机分类
计算机可分为模拟计算机和数字计算机两大类。 数字计算机按用途又可分为专用计算机和通用计算机。 通用机按规模分为巨型机、大中小型机、微型机及单片机。
1.1.3单片机的特点及主要应用领域
单片机,是指在一块芯片上集成了中央处理器CPU、 随机存储器RAM、程序存储器ROM、EPROM、EEPROM、 定时/计数器、中断控制器以及串行口,并行I/O接口等部件, 构成的一个完整的微型计算机系统 。
“ SPCE061A”
1. 单片机的特点 从结构上看,单片机不但与通用微型计算机一样,是 一个有效的数据处理机,而且是一个功能很强的过程控制 机。从某种意义上讲,一块单片机就具有一台微型计算机 的功能,只需要加上所需要的输入/输出设备,就可以构成 一个完整的系统,从而满足各应用领域的需要。 单片机与通用微机的相同功能部分在具体构造中存在 许多不同。正因如此,单片机与通用微机是两个不同的发 展分支。
⑴ 通用微机的CPU主要面向数据处理,其发展主要围绕数 据处理功能、计算速度和精度的进一步提高。单片机主要面向 控制,因为控制中的数据类型和数据处理相对简单,所以单片 机的数据处理功能比通用微机相对要弱一些,计算速度和精度 也要相对低一些。 ⑵ 通用微机中存储器组织结构主要是针对增大存储容量和 CPU对数据的存取速度。单片机中存储器的组织结构比较简单, 存储器芯片直接挂接在单片机的总线上,CPU对存储器的读写 直接用物理地址来寻址存储单元,存储器的寻址空间一般都为 64KB。 ⑶ 通用微机中I/O接口主要考虑标准外设(如CRT、标准 键盘、鼠标、打印机、硬盘、光盘等)。用户通过标准总线连 接外设,达到即插即用。但单片机应用系统的外设都是非标准 的,且千差万别,种类很多。
2. 单片机的主要应用领域 因单片机具有体积小、重量轻、价格便宜、功耗低、控制 功能强及运算速度快等特点,故在国民建设、军事及家用电器 等领域均得到广泛的应用。 单机应用: 测控系统:温室控制、生产线控制。 智能仪表:生产自动化、楼宇自动化。 机电一体化:数控机床、电脑雕刻机、医疗器械。 智能接口:数据处理。 智能民用产品:家用电器、玩具、收银机。 多机应用: 智能路灯控制系统。
1.2单片机的发展历史及典型机型 1.2.1单片机的发展历史
自1971年美国Intel公司制造出第一块4位处理器以来, 在短短的20余年间,单片机技术已发展成为计算机技术中 一个非常有活力的分支,它有自己的技术特征、规范、发 展道路和应用环境。其发展十分迅猛,到目前为止,大致 可分为以下几个阶段。 4位单片机 8位单片机 16位单片机 32位单片机
1. 4位单片机 1971年11月,Intel公司设计了集成度为2000只晶体管/片的 4位微型处理器Intel4004,并配有RAM、ROM和移位寄存器, 构成第一台4位微处理器。这种微处理器虽仅用于简单控制,但 价格便宜,至今仍不断有多功能的4位机问世。4位单片机主要 用于家用电器、电子玩具等。 2. 8位单片机 1976年9月,美国Intel公司首先推出了MCS-48系列8位单片 机以后,单片机发展进入了一个新阶段,8位单片机纷纷应运而 生。随着集成电路工艺水平的提高,在1978年到1983年期间集 成度提高到几万只管/片,因而一些高性能的8为单片机相继问世, 例如MCS-51系列8位单片机。因此,把这类单片机称为高档8为 单片机。
3. 16位单片机 Intel公司于1983年推出16位单片机8096,其它公司也相继 推出了同档次的产品。由于16位单片机采用了最新的制造工艺, 其计算速度和控制功能也大幅度提高,具有很强的实时处理能 力。 4. 32位单片机 近年来,各个计算机生产厂家已经进入更高性能的32位单 片机研制、生产阶段。由于控制领域对32位单片机需求并不十 分迫切,所以32位单片机的应用并不是很多。 单片机的发展并没有出现推陈出新、以新代旧的局面。4位、 8位、16位单片机仍各有应用领域,4位单片机在一些简单家用 电器、高档玩具中仍有应用;8位单片机在中、小规模应用场合 仍占主流地位;16位单片机在比较复杂的控制系统应用。
1.2.2常用单片机的机型
目前单片机产品多达50个系列,300多种型号。国内 单片机应用中常见的有Intel公司的MCS系列,ATMEL公司 的89系列和AVR系列,Philips公司的80C51系列, MicroChip公司的PIC16系列,台湾凌阳61系列,和国内 STC等,其中对Intel公司的MCS系列产品做如下简要介绍。 MCS系列单片机是Intel公司生产的单片机的总称。 Intel公司是生产单片机的创始者,其产品在单片机的各个 发展阶段具有代表性。Intel公司生产的单片机大体上可分 为三大系列:MCS-48系列、MCS-51系列、MCS-96系列。 三大系列产品如表1-1所示。
表1-1 MCS系列单片机主要机型
片内 存储器 (字节) 片外存储器直接寻址(字节)
I/O口线 中 断源 并行 串行 定时器/计数器 (个×位)
ROM/ EPROM 35 39 1K/ /1K — 2K/ /2K —
MCS 48 (8位)
64 64 64 128 128 128
256 256 256 256 256 256
4K 4K 4K 4K 4K 4K
27 27 27 27 27 27
2 2 2 2 2 2
1×8 1×8 1×8 1×8 1×8 1×8
MCS 51 (8位)
31 32 80C51 80C31 87C51
4K/ /4K — 8K/ /8K — 4K/ — /4K
128 128 128 256 256 256 128 128 128
64K 64K 64K 64K 64K 64K 64K 64K 64K
64K 64K 64K 64K 64K 64K 64K 64K 64K
32 32 32 32 32 32 32 32 32
UART UART UART UART UART UART UART UART UART
5 5 5 6 6 6 5 5 5
2×16 2×16 2×16 3×16 3×16 3×16 2×16 2×16 2×16
MCS 96 (16位)
— — — —
232 232 232 232
64K 64K 64K 64K
64K 64K 64K 64K
32 32 48 48
UART UART UART UART
4×16 4×16 4×16 4×16
1.3计算机中的数制及相互转换 1.3.1计算机中的数的表示方法
在日常生活中人们最熟悉的是十进制数,但在计算机 中,采用二进制数“0”和“1”可以很方便地表示机内的数据 与信息。在编程时,为了便于阅读和书写,人们还常用八进 制数或十六进制数来表示二进制数。
1. BCD码的定义及运算
人们习惯使用十进制数,为使计算机能识别、存储十 进制数,并能直接识别十进制数进行运算,需要对十进制 数进行编码。将十进制数表示为二进制编码的形式,称为 二—十进制编码,即BCD(Binary Coded Decimal)码。 1位十进制数有0~9共10个不同的数码,至少需要4位 二进制数表示。4位二进制数有16种组合,取其中10种组 合代表10个十进制数码。最常用的方法是8421BCD码,其 中8、4、2、1分别为4位二进制数的位权值。表1-3给出了 十进制和8421BCD码的对应关系。
表1-2 8421BCD编码表
十进制数 0 1 2 3 4 8421BCD码 10
十进制数 5 6 7 8 9 8421BCD码 11
例如写出69.25的BCD码: 根据表 1-3, 可直接写出相应的BCD码: ? 69.25 =(00101)BCD
2. ASCII码
目前国际上比较通用的是1963年美国标准会ANSI制订 的美国国家信息交换标准字符码(American Standard Code for Information Interchange),简称ASCII码,它的编码如表 1-3所示,从表中可见,ASCII 码采用二进制编码,它包括 26个大写英文字母;26个小写英文字母;10个数字0~9; 32个通用控制符号;34个专用符号,共128个字符。
表 1-3 ASCII 码 表
3. 原码、反码和补码
原码:在符号位中用0表示正、用1表示负的二进制数,称为 原码。例如, x1=+1110111B, [x1]原=B x2=-1110111B, [x2]原=B 数0可是+0或-0。因此,0在原码中形式: [+0]原=B, [-0]原=B
反码:正数的反码=原码;负数的反码=原码的符号位不变而数 值按位取反。所谓按位取反,即将各位的1变成0,0变成1。 例如,x1=+13, 又如,x2=-13, [x1]反=[+13]原=0 0001101B 。 [x2]原=[-13]原=1 0001101B,
[x2]反=[-13]反=1 1110010B。 补码:正数的补码=原码;负数的补码=反码+1。 例如,x1=+1101101B, [x1]补=0 1101101B 。
又如, x2=-1101101B, [x2]反=1 0010010B, [x2]补=B。 在补码表示中,“0”是唯一的。即[±0]补=B
1.3.2进位计数制
按进位原则进行计数的方法,称为进位计数制。 1.十进制 有10个不同的数字符号:0、1、2…、9; 低位向高位进 位的规律是“逢十进一”。 2. 二进制数 在二进制数中,只有两个不同数码:0和1,进位规律为 “逢二进一”。 3. 八进制数 八进制数有0、1、2、…、7共8个不同的数码,采用 “逢八进一”的原则进行计数。 4. 十六进制 十六进制中有0、1、2、…9、A、B、C、D、E、F共16 个不同的数码,进位方法是“逢十六进一”。
表1-4各种进位之间的关系
十进制 0 1 2 3 4 5 6 7 二进制 0 1 10 11 100 101 110 111 八进制 0 1 2 3 4 5 6 7 十六进制 0 1 2 3 4 5 6 7 十进制 9 10 11 12 13 14 15 16 二进制 11 10
八进制 11 12 13 14 15 16 17 20 十六进制 9 A B C D E F 10
1.3.3进位计数制之间的转换
1. 二、八、十六进制数转化成十进制数 根据各进制的定义表示方式,按权展开相加,即可将二 进制数、八进制数、十六进制数转化成十进制数。 【例1-1】将数 (10.101), (46.12), (2D.A4) 转换为十进制数。
2. 十进制数转化成二、八、十六进制数 任意十进制数N转化成R进制数,需将整数部分和小数部 分分开,采用不同的方法分别进行转换,然后用小数点将两 个部分连接起来。
(1)整数部分:除基取余法。 分别用基数R不断的去除N的整数,直 到商为零为止,每次所得的余数依次排列 即为相应进制的数码。最初得到的为最低 有效数字,最后得到的位最高有效数字。 【例1-2】将(168)转换成二、八、十六进制数。
(2) 小数部分:乘基取整法。 分别用基数R(R=2、8或16)不断得去乘N的小数, 直到积的小数部分为零(或直到所要求的位数)为止,每次 乘得的整数依次排列即为相应进制的数码。最初得到的为最 高有效数字,最后得到的为最低有效数字。 【例1-3】将(0.645)转换成二、八、十六进制数(用小数点 后五位表示)
3. 二进制与八进制之间的相互转换 4. 二进制数与十六进制数之间的转换 由于2X2X2X2=16,故可采用“合四为一”的原则,每 位十六进制数分别向左、右两边各以4位为一组进行二—十 六换算;若不足4位以0补足,即可将二进制数转换为十六进 制数。反之,采用“一分为四”的原则,将每位十六进制数 用四位二进制数表示,便可将十六进制数转化为二进制数。 在程序设计中,为了区分不同进制的数,通常在数的后 面加字母作为标注。其中,字母B表示二进制数;字母D或 不加字母表示十进制数;字母H表示十六进制数。如1101B、 57Q、512D、3AH等。
1.4二进制数的运算
二进制数只有 0和1两个数字,其算术运算较为 简单,加、减法遵循“逢二进一”、“借一当二” 的原则。
1.4.1二进制数的加法
规则: 0+0=0; 0+1=1; 1+0=1; 1+1=10(有进位) 即 B=10100B
1.4.2二进制数的减法 规则: 0-0=0; 1-1=0; 1-0=1; 0-1=1(有借位) 即 B=101B
1.4.3二进制数的乘法 规则: 0×0=0; 0×1=1×0=0; 1×1=1 即 1011B×11B
1.4.4二进制数的除 法 规则: 0/1=0; 1/1=1 ? 即 11B= 1011B
1.5单片机的组成及工作过程 1.5.1单片机的组成
一个8位CPU; 4KBROM或EPROM(8031无ROM); 128字节RAM数据存储器; 21个特殊功能寄存器SFR; 4个8位并行I/O口,其中P0、P2为地址/数据线,可寻址 64K的RAM和64K的 ROM; 一个可编程全双工串行口; 具有5个中断源,两个优先级,嵌套中断结构; 两个16位定时器/计数器; 一个片内振荡器和时钟电路。
T0 时钟电路
定时/计数器
P0 P1 P2 P3
图1-1 单片机的基本组成
1.5.2单片机的工作过程
单片机的工作过程实质上是执行用户编制程序的过程。 一般程序的机器码都已固化到存储器中,因此开机复位后, 就可以执行指令。执行指令则是取指令和执行指令的周而复 始的过程。1
在提高硬件系统抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51单片机系统为例,对微机系统软件抗干扰方法进行研究。   1 软件抗干扰方法的研究   在工程实践中,软件抗干扰研究的内容主要是:一、消除模拟输入信号的噪声(如数字滤波技术);二、程序运行混乱时使程序重入正轨的方法。本文针对后者提出了几种有效的软件抗干扰方法。   1.1 指令冗余   CPU取指令过程是先取操作码,再取操作数。当PC受干扰出现错误,程序便脱离正常轨道“乱飞”,当乱飞到某双字节指令,若取指令时刻落在操作数上,误将操作数当作操作码,程序将出错。若“飞” 到了三字节指令,出错机率更大。   在关键地方人为插入一些单字节指令,或将有效单字节指令重写称为指令冗余。通常是在双字节指令和三字节指令后插入两个字节以上的NOP。这样即使乱飞程序飞到操作数上,由于空操作指令NOP的存在,避免了后面的指令被当作操作数执行,程序自动纳入正轨。   此外,对系统流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入两条NOP,也可将乱飞程序纳入正轨,确保这些重要指令的执行。   1.2 拦截技术   所谓拦截,是指将乱飞的程序引向指定位置,再进行出错处理。通常用软件陷阱来拦截乱飞的程序。因此先要合理设计陷阱,其次要将陷阱安排在适当的位置。   (1 )软件陷阱的设计   当乱飞程序进入非程序区,冗余指令便无法起作用。通过软件陷阱,拦截乱飞程序,将其引向指定位置,再进行出错处理。软件陷阱是指用来将捕获的乱飞程序引向复位入口地址0000H的指令。通常在EPROM中非程序区填入以下指令作为软件陷阱:   NOPNOPLJMP 0000H其机器码为。   (2 ) 陷阱的安排   通常在程序中未使用的EPROM空间填。最后一条应填入020000,当乱飞程序落到此区,即可自动入轨。在用户程序区各模块之间的空余单元也可填入陷阱指令。当使用的中断因干扰而开放时,在对应的中断服务程序中设置软件陷阱,能及时捕获错误的中断。如某应用系统虽未用到外部中断1,外部中断1的中断服务程序可为如下形式:   NOPNOPRETI返回指令可用“RETI”,也可用“LJMP 0000H”。如果故障诊断程序与系统自恢复程序的设计可靠、 完善,用“LJMP 0000H”作返回指令可直接进入故障诊断程序,尽早地处理故障并恢复程序的运行。   考虑到程序存贮器的容量,软件陷阱一般1K空间有2-3个就可以进行有效拦截。   1.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定时周期应予以全盘合理考虑。限于篇幅不赘述。   2 、系统故障处理、自恢复程序的设计   单片机系统因干扰复位或掉电后复位均属非正常复位,应进行故障诊断并能自动恢复非正常复位前的状态。   2.1 非正常复位的识别   程序的执行总是从0000H开始,导致程序从 0000H开始执行有四种可能:一、系统开机上电复位;二、软件故障复位;三、看门狗超时未喂狗硬件复位; 四、任务正在执行中掉电后来电复位。四种情况中除第一种情况外均属非正常复位,需加以识别。   (1 )硬件复位与软件复位的识别#p#分页标题#e#   此处硬件复位指开机复位与看门狗复位,硬件复位对寄存器有影响,如复位后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分钟的情况下,系统电压异常引起复位,此时若系统复位后又从头开始进行测控则会造成不必要的时间消耗。因此可通过一监测单元对当前系统的运行状态、系统时间予以监控,将控制过程分解为若干步或若干时间段,每执行完一步或每运行一个时间段则对监测单元置为关机允许值,不同的任务或任务的不同阶段有不同的值,若系统正在进行测控任务或正在执某时间段,则将监测单元置为非正常关机值。那么系统复位后可据此单元判系统原来的运行状态,并跳到出错处理程序中恢复系统原运行状态。   2.2 非正常复位后系统自恢复运行的程序设计   对顺序要求严格的一些过程控制系统,系统非正常复位否,一般都要求从失控的那一个模块或任务恢复运行。所以测控系统要作好重要数据单元、参数的备份,如系统运行状态、系统的进程值、当前输入、输出的值,当前时钟值、观测单元值等,这些数据既要定时备份,同时若有修改也应立即予以备份。   当在已判别出系统非正常复位的情况下,先要恢复一些必要的系统数据,如显示模块的初始化、片外扩展芯片的初始化等。其次再对测控系统的系统状态、运行参数等予以恢复,包括显示界面等的恢复。之后再把复位前的任务、参数、运行时间等恢复, 再进入系统运行状态。   应当说明的是,真实地恢复系统的运行状态需 要极为细致地对系统的重要数据予以备份,并加以数据可靠性检查,以保证恢复的数据的可靠性。   其次,对多任务、多进程测控系统,数据的恢复需考虑恢复的次序问题。   系统基本初始化是指对芯片、显示、输入输出方式等进行初始化,要注意输入输出的初始化不应造成误动作。而复位前任务的初始化是指任务的执行状态、运行时间等。   对于软件抗干扰的一些其它常用方法如数字滤波、RAM数据保护与纠错等,限于篇幅,本文未作讨论。在工程实践中通常都是几种抗干扰方法并用,互相补充 完善,才能取得较好的抗干扰效果。从根本上来说,硬件抗干扰是主动的,而软件是抗干扰是被动的。细致周到地分析干扰源,硬件与软件抗干扰相结合,完善系统监控程序,设计一稳定可靠的单片机系统是完全可行的。
第一步:基础理论知识学习   基础理论知识包括模拟电路、数字电路和C语言知识。模拟电路和数字电路属于抽象学科,要把它学好还得费点精神。在你学习单片机之前,觉得模拟电路和数字电路基础不好的话,不要急着学习单片机,应该先回顾所学过的模拟电路和数字电路知识,为学习单片机加强基础。否则,你的单片机学习之路不仅会很艰难和漫长,还可能半途而废。笔者始终认为,扎实的电子技术基础是学好单片机的关键,直接影响单片机学习入门的快慢。有些同学觉得单片机很难,越学越复杂,最后学不下去了。有的同学看书时似乎明白了,可是动起手来却一塌糊涂,究其原因就是电子技术基础没有打好,首先被表面知识给困惑了。   单片机属于数字电路,其概念、术语、硬件结构和原理都源自数字电路,如果数字电路基础扎实,对复杂的单片机硬件结构和原理就能容易理解,就能轻松地迈开学习的第一步,自信心也会树立起来。相反,基础不好,这个看不懂那个也弄不明白,越学问题越多,越学越没有信心。如果你觉得单片机很难,那就应该先放下单片机教材,去重温数字电路,搞清楚触发器、寄存器、门电路、COMS电路、时序逻辑和时序图、进制转换等理论知识。理解了这些知识之后再去看看单片机的结构和原理,我想你会大彻大悟,信心倍增。   模拟电路是电子技术最基础的学科,她让你知道什么是电阻、电容、电感、二极管、三极管、场效应管、放大器等等以及它们的工作原理和在电路中的作用,这是学习电子技术必须掌握的基础知识。一般是先学习模拟电路再去学习数字电路。扎实的模拟电路基础不仅让你容易看懂别人设计的电路,而且让你的设计的电路更可靠,提高产品质量。   C语言知识并不难,没有任何编程基础的人都可以学,在我看来,初中生、高中生、中专生、大学生都能学会。当然,数学基础好、逻辑思维好的人学起来相对轻松一些。C语言需要掌握的知识就那么3个条件判断语句、3个循环语句、3个跳转语句和1个开关语句。别小看这10个语句,用他们组合形成的逻辑要多复杂有多复杂。学习时要一条语句一条语句的学,学一条活用一条,全部学过用过这些关键语句后,相信你的C基础建立了。   当基础打好以后,你会感觉到单片机不再难学了,而且越学越起劲。当单片机乖乖的依照你的逻辑思维和算法去执行指令,实现预期控制效果的时候,成就感会让你信心十足、夜以续日、废寝忘食的投入到单片机的世界里。可以这么说,扎实的电子技术基础和C语言基础能增强学习单片机信心,较快掌握单片机技术。   第二步:单片机实践   这是真正学习单片机的过程,既让人兴奋又让人疲惫,既让人无奈又让人不服,既让人孤独又让人充实,既让人气愤又让人欣慰,既有失落感又有成就感。。。其中的酸甜苦辣只有学过的人深有体会。思想上要有刻苦学习的决心,硬件上要有一套完整的学习开发工具,软件上要注重理论和实践相结合。   1.有刻苦学习的决心   首先,明确学习目的。先认真回答两个问题:我学单片机来做什么?需要多长时间把它学会?这是你学单片机的动力。没有动力,我想你坚持不了多久。其次,端正学习心态。单片机学习过程是枯燥乏味、孤独寂寞的过程。要知道,学习知识没有捷径,只有循序渐进,脚踏实地,一步一个脚印,才能学到真功夫。再次,要多动脑勤动手。单片机的学习具有很强的实践性,是一门很注重实际动手操作的技术学科。不动手实践你是学不会单片机的。最后,虚心交流。在单片机学习过程中每个人都会遇到无数不能解决的问题,需要你向有经验的过来人虚心求教,否则,一味的自己埋头摸索会走许多弯路,浪费很多时间。   2.有一套完整的学习开发工具   学习单片机是需要成本的。必须有一台电脑、一块单片机开发板(如果开发板不能直接下载程序代码的话还得需要一个编程器)、一套视频教程、一本单片机教材和一本C语言教材。电脑是用来编写和编译程序,并将程序代码下载到单片机上;开发板用来运行单片机程序,验证实际效果;视频教程就是手把手教你单片机开发环境的使用、单片机编程和调试。对于单片机初学者来说,视频教程必须看,要不然,哪怕把教材看了几遍,还是不知道如何下手,尤其是院校里的单片机教材,学了之后,面对真正的单片机时可能还是束手无策;单片机教材和C语言教材是理论学习资料,备忘备查。不要为了节约成本不用开发板而光用Protur软件仿真调试,这和纸上谈兵没什么区别。   3. 要注重理论和实践相结合   单片机C语言编程理论知识并不深奥,光看书不动手也能明白。但在实际编程的时候就没那么简单了。一个程序的形成不仅需要有C语言知识,更多需要融入你个人的编程思路和算法。编程思路和算法决定一个程序的优劣,是单片机编程的大问题,只有在实际动手编写的时候才会有深切的感悟。一个程序能否按照你的意愿正常运行就要看你的思路和算法是否正确、合理。如果程序不正常则要反复调试(检查、修改思路和算法),直到成功。这个过程耗时、费脑、疲精神,意志不坚强者往往被绊倒在这里半途而废。   学习编写程序应该按照以下过程学习,效果会更好。看到例程题目先试着构思自己的编程思路,然后再看教材或视频教程里的代码,研究人家的编程思路,注意与自己思路的差异;接下来就照搬人家的思路亲自动手编写这个程序,领会其中每一条语句的作用;对有疑问的地方试着按照自己的思路修改程序,比较程序运行效果,领会其中的奥妙。每一个例程都坚持按照这个过程学习,你很快会找到编程的感觉,取其精华去其糟粕,久而久之会形成你独特的编程思想。当然,刚开始,看别人的程序源代码就像看天书一样,只要硬着头皮看,看到不懂的关键字和语句就翻书查阅、对照。只要能坚持下来,学习收获会事半功倍。在实践过程中不仅要学会别人的例程,还要在别人的程序上改进和拓展,让程序产生更强大的功能。同时,还要懂得通过查阅芯片数据手册(DATASHEET)里有关芯片命令和数据的读写时序来核对别人例程的可靠性,如果你觉得例程不可靠就把它修改过来,成为是你自己的程序。不仅如此,自己应该经常找些项目来做,以巩固所学的知识和积累更多的经验。   第三步:单片机硬件设计   当编写自己的程序信手拈来、阅读别人的程序能够发现问题的时候,说明你的单片机编程水平相当不错了。接下来就应该研究的硬件了。硬件设计包括电路原理设计和PCB板设计。学习做硬件要比学习做软件麻烦,成本更高,周期更长。但是,学习单片机的最终目的是做产品开发----软件和硬件相结合形成完整的控制系统。所以,做硬件也是学习单片机技术的一个必学内容。   电路原理设计涉及到各种芯片的应用,而这些芯片外围电路的设计、典型应用电路和与单片机的连接等在芯片数据手册(DATASHEET)都能找到答案,前提是要看得懂全英文的数据手册。否则,照搬别人的设计永远落在别人的后面,你做的产品就没有创意。电子技术领域的第一手资料(DATASHEET)都是英文,从第一手资料里你所获得的知识可能是在教科书、网络文档和课外读物等所没有的知识。虽然有些资料也都是在DATASHEET的基础上撰写的,但内容不全面,甚至存在翻译上的遗漏和错误。当然,阅读DATASHEET需要具备一定的英文阅读能力,这也是阻碍单片机学习者晋级的绊脚石。良好的英文阅读能力能让你在单片机技术知识的海洋里自由遨游。   做PCB板就比较简单了。只要懂得使用Protel软件或 AltimDesigner软件就没问题了。但要想做的板子布局美观、布线合理还得费一番功夫了。   娴熟的单片机C语言编程、会使用Protel软件或 AltimDesigner软件设计PCB板和具备一定的英文阅读能力,你就是一个遇强则强的单片机高手了。

我要回帖

更多关于 单片机实验内容 的文章

 

随机推荐