从零开始51单片机教程——连载5 单片机小程序

发布者:星辰古泉最新更新时间:2012-02-15 关键字:单片机  汇编 手机看文章 扫描二维码
随时随地手机看文章

动手尝试下如何使用汇编语言编个小程序

上一次我们的程序实在是没什么用,要灯亮还要重写一下片子,下面我们要让灯持续地闪烁,这就有一定的实用价值了,比如能把它当成汽车上的一个信号灯用了。怎样才能让灯持续地闪烁呢?实际上就是要灯亮一段时间,再灭一段时间,也就是说要P10持续地输出高和低电平。怎样实现这个要求呢?请考虑用下面的指令是否可行:

SETB P10

CLR P10 ……

这是不行的,有两个问题,第一,计算机执行指令的时间很快,执行完SETB P10后,灯是灭了,但在极短时间(微秒级)后,计算机又执行了CLR P10指令,灯又亮了,所以根本分辨不出灯曾灭过。第二,在执行完CLR P10后,不会再去执行SETB P10指令,所以以后再也没有机会让灭了。

为了解决这两个问题,我们能做如下设想,第一,在执行完SETB P10后,延时一段时间(几秒或零点几秒)再执行第二条指令,就能分辨出灯曾灭过了。第二在执行完第二条指令后,让计算机再去执行第一条指令,持续地在原地兜圈,我们称之为"循环",这样就能完成任务了。

以下先给出程序(后面括号中的数字是为了便于讲解而写的,实际不用输入):

;主程序:

LOOP: SETB P10     ;(1)

    LCALL DELAY   ;(2)

    CLR P10     ;(3)

    LCALL DELAY   ;(4)

    AJMP LOOP    ;(5)

;以下子程序

DELAY: MOV R7,#250  ;(6)

D1: MOV R6,#250    ;(7)

D2: DJNZ R6,D2    ;(8)

  DJNZ R7,D1     ;(9)

  RET         ;(10)

  END         ;(11)

按上面的设想分析一下前面的五条指令。

  第一条是让灯灭,第二条应当是延时,第三条是让灯亮,第四条和第二条一模一样,也是延时,第五条应当是转去执行第一条指令。第二和第四条实现的原理稍后谈,先看第五条,LJMP是一条指令,意思是转移,往什么地方转移呢?后面跟的是LOOP,看一下,什么地方还有LOOP,对了,在第一条指令的前面有一个LOOP,所以很直观地,我们能认识到,它要转到第一条指令处。这个第一条指令前面的LOOP被称之为标号,它的用途就是给这一行起一个名字,便于使用。是否一定要给它起名叫LOOP呢?当然不是,起什么名字,完全由编程序的人决定,能称它为A,X等等,当然,这个时候,第五条指令LJMP后面的名字也得跟着改了。

  第二条和第四条指令的用途是延时,它是怎样实现的呢?指令的形式是LCALL,这条指令称为调用子程序指令,看一下指令后面跟的是什么,DELAY,找一下DELAY,在第六条指令的前面,显然,这也是一个标号。这条指令的作用是这样的:当执行LCALL指令时,程序就转到LCALL后面的标号所标定的程序处执行,如果在执行指令的过程中遇到RET指令,则程序就返回到LCALL指令的下面的一条指令继续执行,从第六行开始的指令中,能看到确实有RET指令。在执行第二条指令后,将转去执行第6条指令,而在执行完6,7,8,9条指令后将遇到第10条令:RET,执行该条指令后,程序将回来执行第三条指令,即将P10清零,使灯亮,然后又是第四条指令,执行第四条指令就是转去执行第6,7,8,9,10条指令,然后回来执行第5条指令,第5条指令就是让程序回到第1条开始执行,如此周而复始,灯就在持续地亮、灭了。

  在标号DELAY标志的这一行到RET这一行中的所有程序,这是一段延时程序,大概延时零点几秒,至于具体的时间,以后我们再学习如何计算。 程序的最后一行是END,这不是一条指令,它只是告诉我们程序到此结束,它被称为"伪指令"。

单片机内部结构分析:为了知道延时程序是如何工作的,我们必需首先了解延时程序中出现的一些符号,就从R1开始,R1被称之为工作寄存器。什么是工作寄存器呢?让我们从现实生活中来找找答案。如果出一道数学题:123+567,让你回答结果是多少,你会马上答出是690,再看下面一道题:123+567+562,要让你要上回答,就不这么不难了吧?我们会怎样做呢?如果有张纸,就不难了,我们先算出123+567=690,把690写在纸上,然后再算690+562得到结果是1552。这其中1552是我们想要的结果,而690并非我们所要的结果,但是为了得到最终结果,我们又不得不先算出690,并记下来,这其实是一个中间结果,计算机中做运算和这个类似,为了要得到最终结果,一般要做很多步的中间结果,这些中间结果要有个地方放才行,把它们放哪呢?放在前面提到过的ROM中能吗?显然不行,因为计算机要将结果写进去,而ROM是不能写的,所以在单片机中另有一个区域称为RAM区(RAM是随机存取存储器的英文缩写),它能将数据写进去。 特别地,在MCS-51单片机中,将RAM中分出一块区域,称为工作寄存器区

关键字:单片机  汇编 引用地址:从零开始51单片机教程——连载5 单片机小程序

上一篇:从零开始51单片机教程——连载4 存储器结构
下一篇:从零开始51单片机教程——连载6 延时程序分析

推荐阅读最新更新时间:2024-03-16 12:53

新能源汽车mcu的主要功能 电动汽车mcu故障怎么解决
  新能源vcm与mcu是什么意思   在新能源汽车领域,“VCM”和“MCU”是两个不同的术语,代表着不同的概念:   1. VCM(Vehicle Control Module):VCM是车辆控制模块的缩写,用于描述整车的控制单元。VCM扮演着整车系统控制和管理的角色,负责协调和控制车辆的各个子系统,包括电气子系统、动力总成、制动系统、转向系统、安全系统等。VCM是车辆的主要电子控制单元,综合处理和协调各个子系统的操作和反馈,确保整车的安全、性能和效率。   2. MCU(Motor Control Unit):MCU是电机控制单元或电动机控制单元的缩写,用于描述电动车辆中电机控制系统的核心单元。MCU负责控制电动车辆的电
[嵌入式]
一种基于MSP430单片机的日程管理系统
0 引言 日程管理系统是指在指定的时间自动实现提示、放音、录音等功能,例如清晨吹起床号和自动定时上下课响铃等。该系统广泛应用在学校、部队、工厂等部门。早期的司号仪系统存在诸多的缺点。如抗干扰能力差、播放音质不好、录音时间不长,给日常教学、工作到来极大不便。随着生活水平和需求的不断提高,人们对产品的智能化要求越来越高.老式的司号仪智能化不够高必将被淘汰,采用单片机控制的日程管理系统以其系统稳定、智能控制、操作简便、价格便宜等优点得到广泛应用。 1 系统结构及功能 系统的组成和程序流程如图l所示,整个系统共有七个部分组成,分别是:主控部件、电源部件、时钟部件、录放音部件、输入部件、显示部件、和扩展部件。主控部件选用的是MS
[单片机]
一种基于MSP430<font color='red'>单片机</font>的日程管理系统
STM32系列单片机命名规则
示例: STM32 F 100 C 6 T 6 B XXX 1 2 3 4 5 6 7 8 9 从上面的料号可以看出以下信息: ST品牌ARM Cortex-Mx系列内核32位超值型MCU,LQFP -48封装 闪存容量32KB 温度范围-40℃-85℃; 1.产品系列: STM32代表ST品牌Cortex-Mx系列内核(ARM)的32位MCU; 2.产品类型: F:通用快闪(Flash Memory); L:低电压(1.65~3.6V);F类型中F0xx和 F1xx系列为2.0~3.6V; F2xx和F4xx系列为1.8~3.6V;W:无线系统芯片,开发版. 3.产品子系列
[单片机]
STM32系列<font color='red'>单片机</font>命名规则
周立功单片机亮相IIC深圳,发力无线抄表领域
  在正在举行的第十三届国际集成电路研讨会暨展览会上,周立功单片机发展有限公司(简称周立功公司)展出了其近期开发的多类工业用M2M嵌入式产品-无线抄表模块。   这类产品所包括的种类很广,包括GSM/GPRS模块,CDMA模块等。据该公司的工程师翁树杰介绍,开发GPRS的原因是由于目前G网最为普及,可以方便地实现远程,无线和网络化通信。而开发CDMA产品的原因则是数据率要明显高于GPRS,又许多场合需要更高速率的大量数据的传输。   在目前抄表领域开发商云集的情况下,翁树杰认为,周立功公司具有几个优势。一是NXP平台的优势;二是基于该公司长期从事嵌入式系统研发的经验,同时也具有许多的工程设计经验,故能够为客户定制应用;再就是周
[工业控制]
周立功<font color='red'>单片机</font>亮相IIC深圳,发力无线抄表领域
基于MSP430单片机的PID参数整定仪
  PID控制是最常的控制策略,在工业过程控制中90%以上的控制回路具有PID结构。PID控制之所以被广泛应用主要是因为它算法简单,在实际中容易被理解和实现,而且许多高级控制都以PID控制为基础。但是由于环境的变化,使被控对象具有时变性,参数经过一段时间以后会出现性能欠佳、适应性变差、控制效果下降等情况。因此,寻求参数自动整定技术,以适应复杂工况及高性能指标的控制要求,是实现节能优化控制的重要手段,具有重大的工程实践意义。   1 自整定过程原理   本文主要研究了一种手持式的PID参数整定仪器,此整定仪具有整定单变量和双变量的双重功能,控制系统主要采用低能耗的MSP430微控制器,软件部分采用的软件开发平台是IAR MSP4
[单片机]
基于MSP430<font color='red'>单片机</font>的PID参数整定仪
试编写MCS-51单片机程序,计算∑i,I=1~100
试编写MCS-51单片机程序,计算∑i,I=1~100。 参考单片机汇编语言程序: org 000h ljmp main org 030h main: mov 45h,#011h mov 46h,#022h mov 47h,#033h mov 48h,#044h mov 49h,#00h mov r0,#45h mov r7,#5 mov r6,#4 acall yiwei sjmp $ yiwei: clr c loop2: mov a,@r0 rrc a mov @r0,a
[单片机]
采用ADS1293和MSP430单片机的心电信号采集系统的设计与应用
心电信号是一种由心肌收缩而产生,并可提供心脏生理功能变化信息的生物电信号,将测量电极放在身体的不同部位,把不同体表的电位差变化记录下来,就得到了心电图(Electro Cardio Gram,ECG)。由于易于检测且直观性较好,在临床医学中得到较为广泛的应用)。然而传统心电信号采集设备体积较大,不便于实时获取心电信号。因此研究便携式、低功耗的心电信号采集系统有重要意义。本文以低功耗模拟前端ADS1293为基础,结合MSP430系列低功耗单片机设计了一种可用于超低功耗和微型化的心电信号采集系统。 1 系统硬件设计 心电信号采集系统主要由信号采集前端ADS1293和MSP430单片机控制电路组成。工作原理如下:电极提取的人体心电信
[单片机]
采用ADS1293和MSP430<font color='red'>单片机</font>的心电信号采集系统的设计与应用
单片机电路中掉电保护及保护方法
掉电保护(Power Fail Safeguard),当此项设置为可用时,在重构过程中(非重建),所有的数据将一直保存在磁盘上,直到重构完成后才删除。这样如果在重构过程中发生掉电,将不会发生数据丢失的危险情况。 指在正常供电电源掉电时,迅速用备用直流电源供电,以保证在一段时间内信息不会丢失,当主电源恢复供电时,又自动切换为主电源供电。 掉电保护的方法,包括以下步骤:当数据传输终端掉电前,将电源电压降压为超级电容的额定电压;将所述超级电容的额定电压升压为数据传输终端的工作电压,为所述数据传输终端供电;当数据传输终端掉电后,所述超级电容放电,将所述超级电容放电的电压升压为所述数据传输终端的工作电压,为所述数据传输终端供
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved