深入分析单片机软件和硬件的结合

电子常识

2611人已加入

描述

  在目前绝大多数的电子产品和电力系统中,都因内部嵌入了单片机,所以PO端E作为输入端口使用时,在读入引脚的信息之前,应先向锁而具有一定的智能化。正因为如此片机也因而得到了空前未有的发展和 存器中写入“1”,使T2截止。这样才能保证读到内部总线上的信息,能正实际应用。确代表Po端E某个引脚的变化。这样分析了它特有的硬件之后,才真正明白 单片机的广泛普及和应用,不在于它的软件有多么丰富,也不是因为它 了为什么要在读端口之前,先进行写…1 的输出操作。同时也揭示了5系的硬件结构特殊,它真正的亮点在于能将软件和硬件紧密的结合在一起,充 列的单片机4个端几为什么都叫准双向的真正内涵分发挥软件和硬件的各自优势。

  如果只有软件,我们无论如何都不能看到发 第_二、具体软硬件的结合体现在整个存储器的特点上。首先是单片机的光二极管的点亮、继电器的动作、电机的旋转等真实电路的具体变化,而要 片内存储器中,不同的硬件区域有不同的软件操作特性。想让我们的这些想法和思路成为现实,那么我们必须借助于单片机精简的硬 51系列的单片机片内有256字节的数据存储器,但是在硬件结构L却把件电路结构以及适当的辅助电路,才能完成将软件中人的思想,具体在某个 这个整体分成了两大块儿,其中的高128字节不均匀的分布T21个特殊功能特定的硬件七放射光芒。

  但是如果只靠单片机有限的硬件资源,来完成某个 寄存器,低128字节才是用户的通用编程区。而且在低128字节中又分为3个产品的具体实现过程,那么这个产品只能是功能单一,十分不灵活,难以适 不同功能的区间,在3个区间中只有20H到2F|I这16个单元共128个位可以单独应各种用户的多样需求,可是如果有了单片机软件的密切配合之后,就可以 寻址。

  在不改变硬件的前提下,通过调节、变换软件指令,即可实现多个任务的灵 如果软件编程的时候,我们不注意这些,仅仅根据指令的语法来判断指活应变,从而使相同硬件结构的产品可以满足各种用户的不同需求。单片机 令的对错,那么是根本无法排除软件程序中的错误的。

  例如:如果单一从软的软件和硬件在具体实现某个任务的过程中,已经成为一个无法分离的整 件的指令语法角度考虑,CLR IOH和CLR 20H.O两条指令,它们的功能都是体。

  如果将单片机实现某个具体的任务比喻成一个人,那么单片机的软件就 将两个由点操作符表示的一进制位清零。但是如果把这两条指令交给任何一相当于人的思想,单片机的硬件就象人的躯体。硬件是软件思想的一个有力 种能开发51系列单片机的编译系统之后,结果都是只有CLR 20H.o这一条指支撑体,而躯体这个硬件的所有行为,又受到软件思想的直接控制。二者缺令正确。那么为什么两条同样结构的指令中,前一条指令不正确而后一条指一不可。

  令正确呢?产生这种编译不通过的主要原因在于,51系列单片机片内RAM 下面以经典的51系列单片机为例,深入分析这种结合的具体体现。只有从20H到2FH这16个字节可以进行位寻址其他的地址,如这里的 第一、表现在四个并行端口的特点上。

  在整个5l系列单片机软件和硬件 IOH存储单元,就不能用点操作符的形式单独访问它的某个二进制位,只能具体结合的过程中,最应该引起注意的是:为什么在读取P0端口所连接外设 以整字节的形式访问这些单元。

  内容的时候,要用下面这样的指令组合呢? 再比如:要用软件编程实现累加器A中的内容暂时放入B中保存,然后把 MOV P0,#OFFH A中加68H的结果存入到某个直接地址中。

  有人写出如下的程序段: MOV A,PO MOV B,A‘ 如果抛开硬件结构,单一的从指令本身考虑,就是将一个立即数送到 ADD A 68HPo端口对应的寄存器中,然后马上就读它的内容到累加器A中,好象根本不能 MOV OFOH。A有任何变化,读到累加器A中的内容就应该是刚刚送去的立即数“OFF}I”。从 MOV A,B软件的表面上分析,只能说这两个指令的组合仅相当于“M0v A,#OFFH” 这段程序原本的思路是,在A没有参与加法运算之前,为了不丢失原来这样的一条指令。

  如果不了解单片机那种端口特有的硬件结构,遇到这样的 A中的数据,把A中内容先放入B寄存器暂时保存,然后把加法结果保存到一指令组合之后,根本没法用单一的软件解释清楚。

  个地址是FOH的内存单元,最后从B中取回A中原来寄存的内容。可是实际上 在B中得到的信息根本不是A中原来的内容,而是这次加法的和。这主要是是 不了解单片机的硬件结构特点,而导致的一个软件上的分析错误,最后丢失 了A中原来的数据。

  当仔细分析了存储器的内部结构特点才知道,原来在 lib 51系列单片机的内部,寄存器B的直接地址就是FOH,这样在软件指令中的 B和FOH,表面上看是两个内容,一个是寄存器名称,一个是直接地址,但实 质上它们是对应的是一个硬件宅间。

  所以在进行软件编程之前,应该首先对 存储器的这种硬件结构特点有所了解。其次是访问不同的存储器空间,系统采用了使用软件和硬件结合的方法 来区分。

硬件

  图1 PO端口某个引脚的内部结构 在51系列的单片机中,对于8051的存储器加上外部可以扩展的,一共有 但是当仔细分析图1中PO端口的内部硬件机构之后,发现P0端口某个引 4#-相对独立的模块,即片内256字节的RAM、片外可扩展的最多64K字节的脚的输入,既加到了T1和T2的公共端上,同时也加到了“读引脚”的三态缓 R删、片内4K字节的R删、片外可扩展的最多64K字节的ROM。

  如果由D触发器构成的锁存器Q输出端为“0”,则T2导通,那么 如果想知道单片机所执行的指令对应的机器码。

  到底存放到片内程序存P0口上的电位就被钳制在低电平,这样如果从引脚输入数据“1”,就无法 储器还是片外程序存储器了,要借助硬件的巨X引脚外围电路连接情况来判20 I井援博苋 万方数据 焉烹黑烹息!===}蔫啊I 科学论坛断,如果这个引脚连接的是高电平,那么8051单片机的指令是首先从片内 题中,被广泛采用的方法大致有常见的3种处理方法,单纯软件、单纯硬4l【程序存储器中取出,然后自动调到片外的1000}Ij也址单元,继续访问片外 件、软硬结合。

  其中软件的延时很简单,只要利用某种程序控制某些指令的程序存储器中的其它指令。相反假设这个引脚连接的是一个低电平,那么所 反复运行多次,即可实现延时操作的要求,但是它的最大缺点是时间不精有的指令的机器码都来自单片机外扩的程序存储器。

  只有掌握了这个硬件的 确、大量占用了CPU的执行时间,使CPU的工作效率变得很低;硬件的延时需特点之后,才能对8031这种片内没有程序存储器的单片机,做出正确硬件设 要专门的硬件芯片搭接恰当的电路,当电路做好之后。

  想重新调整延时时间计——将它的i五引脚唯一只能设计成低电平的电路结构。只能重新改变电路的参数和结构,这样使设计在灵活性上失去了实用性;如 上面是采用了单片机豆X引脚,不同的硬件连接方式,访问不同的程序 果能采用单片机的软件和硬件的定时器相结合的方式,处理关于时间的问存储器空间。

  可是如果我们按照相同的规律,去分析如何用硬件再次区分数 题,利用这种软件和硬件配合的方式,能很好的克服由单一的软件或硬件带据存储器的片内、片外时,开始千方百计的寻找另外一个,用来区分数据存 来的种种缺点和不足,集软件和硬件的优点于一身。

  这主要是因为,单片机储器是在片内还是在片外的硬件引脚时,却根本没有任何结论。

  原因在于此 有一个能独立工作的硬件定时器,它在得到了单片机的软件初始化命令字之时单片机的软件和硬件又一次开始交换了它们的功能和使命,硬件不能完成 后,就可以单独的和CPU同步并行工作,这样不但能实现精确的定时。而且就改用了软件来实现。软件和硬件已经开始相互融合、渗透。那么如果存 还可以充分提高CPU的工作效率。

  这种软件和硬件结合于一体的设计思路,储运算结果时,想把这些数据指定存放到片内还是片外,或者从数据存储器 为我们的实际应用带来了方便。

  中读来的数据想知道是来自片内还是片外,我们怎样来区分呢?此时单片机 第七、软硬件结合,还能通过掉电保护和待机的工作方式中得到具体的给我们提供的操作方法是用软件不同的指令来区分数据存储器访问的是片内 体现。

  为了让单片机功耗降到最低。在实际工作时我们可以让单片机工作在还是片外。具体用MOVX的操作码代表访问片外数据存储器,用MOV操作码代 特定的节电工作方式之下。51系列单片机典型的节电工作方式有2种,它们表访问片内的数据存储器。是待机的工作方式和掉电保护的工作方式,分别由Pc0N寄存器的编程位 第三、软硬件的结合可以从分析单片机的定时器溢出处理过程中得到结 IDL和PD位控制。

  如果在单片机的硬件开始动作之前,用软件将IDL位置“论。这里用定时器Tl为例,分析这种软件和硬件的具体结合。单片机的定时 1”,即可让单片机的硬件电路进入待机工作方式;可是如果软件是设置了器控制寄存器TCON中,TF是溢出标志位。当T产生溢出时,由硬件自动使 PD位置“1”,则单片机立刻出现掉电的方式,此时送入时钟电路的振荡信TFl置l。

  这时如果软件程序设计是采用中断的编程方式处理溢出,那么当 号被封锁,不产生时钟信号,片内的一切工作都停止,只有片内R心的数据CPU响应该中断请求时,是由系统中特定的内部硬件自动将TFI清零。

  但是如过保留。这里我们看到利用软件可以直接改变硬件的工作状态。

  如果此时我们利用的是软件查询方式编程,来处理这次溢出,那么刚才由硬件 如果我们继续分析待机的工作方式,我们还可以继续发现这种软件自动置l的TFl标志位,这时就要用~条相应的软件指令来清除,也就是需要 和硬件的具体结合。

  如果在单片机的硬件开始动作之前,用软件将IDL位你用软件将这种硬件的自动变化,调整回去,以便下次重新判断定时器是否 置“1”,即进入待机工作方式,这时在程序运行过程中,如果CPU在等待有新的溢出产生。

  由此可以看出。

  同样一个定时器的溢出的问题,如果采用 某个外设的结束丽没有具体任务时,那么此时单片机的工作电流仅为中断和查询两种不同的编程方法去处理,单片机就会用不同的硬件和软件来 1.7mA一5mA,而正常的工作电流为1ImA-20mA。

  此时CPU的工作“暂停”,处理标志位的复位。

  通过这一点可以看到,单片机的软硬件结合,确实达到 但是内部时钟发生器仍然工作,并向中断系统、串行IEI和定时器提供工了密不可分的程度。

  作时钟信号,但向CPU提供时钟的电路被封锁,CPUI作停止。

  这里因为软 第四、主要体现在对外部中断源的处理过程上。

  当5系列单片机在处理 件从而改变了单片机内部的电路工作状态发生了不同的变化。

  而且如果外部中断的过程中,如果负责检测中断的硬件电路,想判断某个外部中断源 我们能了解这种特性之后,就可以大大降低单片机的功耗。

  那么现在我是否有中断产生之前,首先要判断~下,软件编程设定位IT0或ITl的当前状 们最关心的是,这种由软件改变的硬件工作方式,怎样才能再次使它恢态,被软件程序设置成什么样的初始值,从而使硬件电路得到了外部中断源 复到正常的工作状态上来呢?这里有非常恰当的方法,而且是软件和硬的触发方式是边沿触发方式还是电平触发方式,如果设定位是高电平,则中 件分别可以恢复的2种方法。

  方法之一是软件中断激活,另一种方法是硬断硬件电路会以边沿的触发方式,去检测雨而或雨而引脚上的下降沿,来 件复位法。

  在软件中断激活的方法中把软件和硬件再次紧密的结合在一作为对应外部中断源有中断申请的标志;相反,如果是将设定位用软件设定 起,在待机的工作方式之下,任何一个开放的中断源发出的中断请求,成了低电平,那么中断硬件电路就会用电平的触发方式,这次就不会去检测 都能利用硬件对IDL清零,使单片机退出待机方式进入正常工作方式。硬INTO或祈i引脚上的F降沿了。而是用引脚上有没有低电平,作为判断中 件复位法的工作原理是,因为单片机在待机方式下时钟发生器仍然工断源是否有中断申请的标志。

  这时体现了因软件设定方式不同,从而直接决 作,所以只要在RsT引脚上送一个脉宽大于两个机器周期的正脉冲,就能定了硬件电路的工作情况软件改变了硬件的工作。

  接下来当外部引脚有硬 完成对单片机的复位操作,然后使之退出待机方式,但这次是让单片机件的电平变化之后,单片机会将标志位IEO或IEI自动置“1”,硬件变化直 重新从头开始工作,而不是在原来的基础上继续工作。接产生了软件标志位的状态变化。这样硬件又返回来改变了软件的状态。

  以上这些事实的列举不能不说明单片机的软件和硬件结合得如此之难舍 在这一点上,我们不仅看到了因单片机软件设定不同,而导致硬件电路 难分,而且如果我们掌握了这些软件和硬件结合的特点之后,能根据具体设的工作情况有所改变,而且同时也看到了硬件自动改变软件标志位的真实所 计要求,可以方便地利用软件和硬件各自的优势,在它们之间进行灵活的自在。

  单片机软件和硬件的结合已经到了密不可分的地步了。由切换,充分发挥软件和硬件的特长,达到最终满意的理想设计效果。这也 第五、我们可以在串行口收发数据上,找到这种软件和硬件结合的紧密 是单片机能具有广泛应用的魅力之所在。但同时也给单片机的设计人员提出之处。我们知道,51系列的单片机有一个全双工的串行口。

  当我们要想利用 了即要精通软件的设计精髓.同时也要合理的设计出容易控制的硬件电路,它的串行口发送数据时,软件编程时只要写出MOV SBUF,A这样的核心指令 软件和硬件都要学,而且两样都要精通,这样单片机才能真正发挥它强大的就可以,剩下的任务就交给了硬件来完成。

  当串行口的硬件电路将累加器中 内在潜力.要发送数据的一个字节,所有二进制位一位一位的经过几个时间片在T)D引脚上,发送成功之后,软件又开始接受硬件电路的变化了。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分