虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

组卷目标

  • 单片机入门基础知识大全免费下载

    单片机入门基础知识大全免费下载 单片机第八课(寻址方式与指令系统) 通过前面的学习,我们已经了解了单片机内部的结构,并且也已经知道,要控制单片机,让它为我们干学,要用指令,我们已学了几条指令,但很零散,从现在开始,我们将要系统地学习8051的指令部份。 一、概述 1、指令的格式 我们已知,要让计算机做事,就得给计算机以指令,并且我们已知,计算机很“笨”,只能懂得数字,如前面我们写进机器的75H,90H,00H等等,所以指令的第一种格式就是机器码格式,也说是数字的形式。但这种形式实在是为难我们人了,太难记了,于是有另一种格式,助记符格式,如MOV P1,#0FFH,这样就好记了。 这两种格式之间的关系呢,我们不难理解,本质上它们完全等价,只是形式不一样而已。 2、汇编 我们写指令使用汇编格式,而计算机只懂机器码格式,所以要将我们写的汇编格式的指令转换为机器码格式,这种转换有两种方法:手工汇编和机器汇编。手工汇编实际上就是查表,因为这两种格式纯粹是格式不同,所以是一一对应的,查一张表格就行了。不过手工查表总是嫌麻烦,所以就有了计算机软件,用计算机软件来替代手工查表,这就是机器汇编。 二、寻址 让我们先来复习一下我们学过的一些指令:MOV P1,#0FFH,MOV R7,#0FFH这些指令都是将一些数据送到相应的位置中去,为什么要送数据呢?第一个因为送入的数可以让灯全灭掉,第二个是为了要实现延时,从这里我们可以看出来,在用单片机的编程语言编程时,经常要用到数据的传递,事实上数据传递是单片机编程时的一项重要工作,一共有28条指令(单片机共111条指令)。下面我们就从数据传递类指令开始吧。 分析一下MOV P1,#0FFH这条指令,我们不难得出结论,第一个词MOV是命令动词,也就是决定做什么事情的,MOV是MOVE少写了一个E,所以就是“传递”,这就是指令,规定做什么事情,后面还有一些参数,分析一下,数据传递必须要有一个“源”也就是你要送什么数,必须要有一个“目的”,也就是你这个数要送到什么地方去,显然在上面那条指令中,要送的数(源)就是0FFH,而要送达的地方(目的地)就是P1这个寄存器。在数据传递类指令中,均将目的地写在指令的后面,而将源写在最后。 这条指令中,送给P1是这个数本身,换言之,做完这条指令后,我们可以明确地知道,P1中的值是0FFH,但是并不是任何时候都可以直接给出数本身的。例如,在我们前面给出的延时程序例是这样写的: MAIN: SETB P1.0     ;(1)    LCALL DELAY ;(2)     CLR P1.0      ;(3)    LCALL DELAY   ;(4)     AJMP MAIN    ;(5) ;以下子程序 DELAY: MOV R7,#250   ;(6) D1: MOV R6,#250   ;(7) D2: DJNZ R6,D2    ;(8)    DJNZ R7,D1   ;(9)    RET        ;(10)    END        ;(11)     表1  MAIN: SETB P1.0     ;(1)    MOV 30H,#255     LCALL DELAY ;     CLR P1.0      ;(3)     MOV 30H,#200     LCALL DELAY   ;(4)     AJMP MAIN    ;(5) ;以下子程序 DELAY: MOV R7,30H   ;(6) D1: MOV R6,#250   ;(7) D2: DJNZ R6,D2    ;(8)    DJNZ R7,D1   ;(9)    RET        ;(10)    END        ;(11) 表2    这样一来,我每次调用延时程序延时的时间都是相同的(大致都是0.13S),如果我提出这样的要求:灯亮后延时时间为0.13S灯灭,灯灭后延时0.1秒灯亮,如此循环,这样的程序还能满足要求吗?不能,怎么办?我们可以把延时程序改成这样(见表2):调用则见表2中的主程,也就是先把一个数送入30H,在子程序中R7中的值并不固定,而是根据30H单元中传过来的数确定。这样就可以满足要求。 从这里我们可以得出结论,在数据传递中要找到被传递的数,很多时候,这个数并不能直接给出,需要变化,这就引出了一个概念:如何寻找操作数,我们把寻找操作数所在单元的地址称之为寻址。在这里我们直接使用数所在单元的地址找到了操作数,所以称这种方法为直接寻址。除了这种方法之外,还有一种,如果我们把数放在工作寄存器中,从工作寄存器中寻找数据,则称之为寄存器寻址。例:MOV A,R0就是将R0工作寄存器中的数据送到累加器A中去。提一个问题:我们知道,工作寄存器就是内存单元的一部份,如果我们选择工作寄存器组0,则R0就是RAM的00H单元,那么这样一来,MOV A,00H,和MOV A,R0不就没什么区别了吗?为什么要加以区分呢?的确,这两条指令执行的结果是完全相同的,都是将00H单元中的内容送到A中去,但是执行的过程不同,执行第一条指令需要2个周期,而第二条则只需要1个周期,第一条指令变成最终的目标码要两个字节(E5H 00H),而第二条则只要一个字节(E8h)就可以了。 这么斤斤计较!不就差了一个周期吗,如果是12M的晶振的话,也就1个微秒时间了,一个字节又能有多少? 不对,如果这条指令只执行一次,也许无所谓,但一条指令如果执行上1000次,就是1毫秒,如果要执行1000000万次,就是1S的误差,这就很可观了,单片机做的是实时控制的事,所以必须如此“斤斤计较”。字节数同样如此。 再来提一个问题,现在我们已知,寻找操作数可以通过直接给的方式(立即寻址)和直接给出数所在单元地址的方式(直接寻址),这就够了吗? 看这个问题,要求从30H单元开始,取20个数,分别送入A累加器。 就我们目前掌握的办法而言,要从30H单元取数,就用MOV A,30H,那么下一个数呢?是31H单元的,怎么取呢?还是只能用MOV A,31H,那么20个数,不是得20条指令才能写完吗?这里只有20个数,如果要送200个或2000个数,那岂不要写上200条或2000条命令?这未免太笨了吧。为什么会出现这样的状况?是因为我们只会把地址写在指令中,所以就没办法了,如果我们不是把地址直接写在指令中,而是把地址放在另外一个寄存器单元中,根据这个寄存器单元中的数值决定该到哪个单元中取数据,比如,当前这个寄存器中的值是30H,那么就到30H单元中去取,如果是31H就到31H单元中去取,就可以解决这个问题了。怎么个解决法呢?既然是看的寄存器中的值,那么我们就可以通过一定的方法让这里面的值发生变化,比如取完一个数后,将这个寄存器单元中的值加1,还是执行同一条指令,可是取数的对象却不一样了,不是吗。通过例子来说明吧。    MOV R7,#20    MOV R0,#30H LOOP:MOV A,@R0    INC R0    DJNZ R7,LOOP 这个例子中大部份指令我们是能看懂的,第一句,是将立即数20送到R7中,执行完后R7中的值应当是20。第二句是将立即数30H送入R0工作寄存器中,所以执行完后,R0单元中的值是30H,第三句,这是看一下R0单元中是什么值,把这个值作为地址,取这个地址单元的内容送入A中,此时,执行这条指令的结果就相当于MOV A,30H。第四句,没学过,就是把R0中的值加1,因此执行完后,R0中的值就是31H,第五句,学过,将R7中的值减1,看是否等于0,不等于0,则转到标号LOOP处继续执行,因此,执行完这句后,将转去执行MOV A,@R0这句话,此时相当于执行了MOV A,31H(因为此时的R0中的值已是31H了),如此,直到R7中的值逐次相减等于0,也就是循环20次为止,就实现了我们的要求:从30H单元开始将20个数据送入A中。 这也是一种寻找数据的方法,由于数据是间接地被找到的,所以就称之为间址寻址。注意,在间址寻址中,只能用R0或R1存放等寻找的数据。 二、指令 数据传递类指令 1) 以累加器为目的操作数的指令 MOV A,Rn MOV A,direct MOV A,@Ri MOV A,#data 第一条指令中,Rn代表的是R0-R7。第二条指令中,direct就是指的直接地址,而第三条指令中,就是我们刚才讲过的。第四条指令是将立即数data送到A中。 下面我们通过一些例子加以说明: MOV A,R1 ;将工作寄存器R1中的值送入A,R1中的值保持不变。 MOV A,30H ;将内存30H单元中的值送入A,30H单元中的值保持不变。 MOV A,@R1 ;先看R1中是什么值,把这个值作为地址,并将这个地址单元中的值送入A中。如执行命令前R1中的值为20H,则是将20H单元中的值送入A中。 MOV A,#34H ;将立即数34H送入A中,执行完本条指令后,A中的值是34H。 2)以寄存器Rn为目的操作的指令 MOV Rn,A   MOV Rn,direct   MOV Rn,#data 这组指令功能是把源地址单元中的内容送入工作寄存器,源操作数不变。

    标签: 单片机 免费下载 基础知识

    上传时间: 2013-10-13

    上传用户:3294322651

  • Keil工程文件的建立、设置与目标文件的获得

    单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为 CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51 单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil 软件是目前最流行开发MCS-51 系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil 即可看出。Keil 提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil 软件需要Pentium 或以上的CPU,16MB或更多RAM、20M 以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51 系列单片机的爱好者来说是十分必要的,如果你使用C 语言编程,那么Keil 几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C 语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。我们将通过一些实例来学习 Keil 软件的使用,在这一部份我们将学习如何输入源程序,建立工程、对工程进行详细的设置,以及如何将源程序变为目标代码。图1 所示电路图使用89C51 单片机作为主芯片,这种单片机性属于MCS-51 系列,其内部有4K 的FLASH ROM,可以反复擦写,非常适于做实验。89C51 的P1 引脚上接8 个发光二极管,P3.2~P3.4 引脚上接4 个按钮开关,我们的第一个任务是让接在P1 引脚上的发光二极管依次循环点亮。

    标签: Keil 工程

    上传时间: 2013-11-06

    上传用户:aesuser

  • 基于单片机的涡卷式空压机电控系统设计

    涡卷式空气压缩机是一种新型空气压缩机,具有噪声低、体积小、可靠性好等特点。本文提出了一种基于ATMEL 89C52 单片机的涡卷式空气压缩机电气控制系统的实现方案,详细说明了总体方案设计、硬件设计与软件设计,并给出了关键元器件的选型。实际结果表明:该系统具有可靠性好、控制精度高、操作简便、配置灵活、直观的故障指示及完善的自保护等特点,完全满足了涡卷式空气压缩机现场控制的要求,是涡卷式空气压缩机的理想配套产品。常规的涡卷式空压机电控系统主要采用继电器加压力开关的方式进行控制,故障率高,可靠性低,控制参数的修改非常不便。本文提出了一种采用智能化微电脑集成设计技术的电控系统实现方案,它通过对关键点各种传感器进行实时检测来控制整个系统的工作状态,减少了常规控制方式下的电器元件及执行机构数量,提高了可靠性,降低了运行成本;清晰的实时状态指示,灵活的控制参数设置,完善的故障诊断,直观的故障显示,是空压机的理想配套产品。

    标签: 单片机 空压机 电控 系统设计

    上传时间: 2013-10-21

    上传用户:ysystc670

  • 多运动目标跟踪及连通域标记方法

    介绍了一种多运动目标检测算法及序列图像的仿真效果,同时对多运动目标检测后的二值图像进行了连通成分标记袁最后根据标记结果在原图像中准确地框定了各运动目标。关键字 多运动目标 跟踪 序列图像 连通成分标记

    标签: 运动目标跟踪 标记

    上传时间: 2013-10-29

    上传用户:nanfeicui

  • 新版交通灯模组(包括PCB图、使用说明书和产品说明书)

    新版交通灯模组范例代码、电路原理图、PCB图、使用说明书和产品说明书(快速上手)。

    标签: PCB 交通灯 模组 使用说明书

    上传时间: 2013-10-20

    上传用户:edward_0608

  • 数字信号处理选择指南pdf

    德州仪器 (TI) 处理器几乎能满足您所能想到的各种应用需求。我们阵营强大的处理器系列拥有各种价位、性能及功耗的产品可供选择,能满足几乎任何数字电子设计的要求。利用 TI 广博的系统专业知识、针对外设设计的全方位支持以及随时可方便获得的全套软件与配套模拟组件,您能够实现无穷无尽的设计方案。德州仪器 2008 年第二季度 数字信号处理选择指南TI 数字信号处理技术介绍1Ô数字媒体处理器OMAP应用处理器C6000数字信号处理器C5000数字信号处理器C2000数字信号处理器MSP430微控制器音频汽车通信工业医疗安全监控视频无线主要特性完整的定制型视频解决方案低功耗与高性能高性能低功耗与高性能结合高性能与高集成度可实现更环保的工业应用超低功耗达芬奇数字媒体处理器:针对数字视频而精心优化达芬奇 (DaVinci) 技术包括可扩展的可编程信号处理片上系统 (SoC)、加速器与外设,专为满足各种视频终端设备在性价比与特性方面的要求进行了优化。最新的 OMAP™ 应用处理器:最佳的通用多媒体与图形功能TI 高度可扩展的 OMAP 平台能够以任何单芯片组合实现业界通用多媒体与图形处理功能的最佳组合。最新推出的四款 OMAP35x 器件的目标应用非常广泛,其中包括便携式导航设备、因特网设备、便携式媒体播放器以及个人医疗设备等。最高性能:TMS320C6000™ DSP平台C6000™ DSP 平台可提供业界最高性能的定点与浮点 DSP,理想适用于视频、影像、宽带基础局端以及高性能音频等应用领域。低功耗与高性能相结合:TMS320C5000™ DSP 平台C5000™ DSP 平台不仅可提供业界最低的待机功耗,同时还支持高级自动化电源管理,能够充分满足诸如数字音乐播放器、VoIP、免提终端附件、GPS 接收机以及便携式医疗设备等个人及便携式产品的需求。结合类似 MCU 的控制功能与DSP 的高性能:TMS320C2000™数字信号控制器C2000™ 数字信号控制器 (DSC) 平台融合了控制外设的集成功能与微控制器 (MCU) 的易用性,以及 TI 先进DSP 技术的处理能力和 C 语言编程效率。C2000 DSC 理想适用于嵌入式工业应用,如数字马达控制、数字电源以及智能传感器等。MSP430 超低功耗微控制器平台TI MSP430 系列超低功耗 16 位 RISC 混合信号处理器可为电池供电的测量应用提供具有终极性能的解决方案。TI充分发挥自身在混合信号与数字技术领域卓越的领先优势, 推出的MSP430 使系统设计人员不仅能够同时实现与模拟信号、传感器与数字组件的接口相连,而且还能实现无与伦比的低功耗。轻松易用的软件与开发工具对于加速 DSP 产品开发而言,TMS320™ DSP 获得了 eXpressDSP™ 软件与开发工具的支持,其中包括Code Composer Studio™ IDE、DSP/BIOS™内核、TMS320 DSP 算法标准以及众多可重复使用的模块化软件等,均来自业界最大规模开发商网络。配套模拟产品TI 可提供各种配套的数据转换器、电源管理、放大器、接口与逻辑产品,能够充分满足您设计的整体需求。

    标签: 数字信号处理 选择指南

    上传时间: 2013-10-14

    上传用户:jasson5678

  • 基于MCGS组态技术的PLC实践教学改革

        针对目前PLC实践教学中存在的问题, 如设备投入不足、学生学习兴趣不高等, 提出将MCGS组态软件与PLC控制技术相结合来设计监控系统,并以混料简易控制为例,讲解组态控制系统的构造过程。实践证明,该上位机监控系统可以模拟现场自动设备系统的工艺流程,可以与PLC实施信息交互,可以实时监控PLC工作。此改革既可缓解高校PLC实践教学设备投入不足的困难,又可提高学生的学习兴趣,培养学生PLC控制系统的综合开发能力。  

    标签: MCGS PLC 组态技术 实践教学

    上传时间: 2013-11-22

    上传用户:mqien

  • 基于S3C6410的智能泵组控制器设计

    设计并实现了一种基于S3C6410的智能泵组控制器。该控制器是网络技术与消防系统、远程监控的综合运用,具备采集消防系统中泵组的多信息源、通过网络实时报告状态、自动诊断故障、记录工作时间和异常报警等功能,从而实现了远程监控和管理,提高了消防系统的可靠性和安全性。

    标签: S3C6410 制器设计

    上传时间: 2013-10-27

    上传用户:xcsx1945

  • 基于协同神经网络的导弹攻击目标识别方法研究

    针对目标识别问题,采取了基于协同学的模式识别理论,引入了协同神经网络并对其稳定性进行了分析,提出了基于协同神经网络对军事目标进行识别的方法,并通过仿真验证了该方法的有效性。

    标签: 神经网络 导弹 攻击 目标识别

    上传时间: 2013-11-02

    上传用户:gxmm

  • 通过力控组态软件发送短信的模块及方案说明DTP_S09C

    通过力控组态软件发送短信的模块及方案说明

    标签: DTP_S 09 力控组态 软件

    上传时间: 2013-12-15

    上传用户:shizhanincc