汇编写51单片机之循环点亮LED

发布时间:2023-01-11  

二话不说,先上代码:

ORG 0000H

AJMP MAIN

MAIN:SETB P1.0

LCALL DELAY

CLR P1.0

LCALL DELAYA

AJMP MAIN


DELAY: MOV R7,#255

D1: MOV R6,#255

D2: DJNZ R6,D2

DJNZ R7,D1

RET


DELAYA: MOV R7,#100

K1: MOV R6,#100

K2: DJNZ R6,K2

DJNZ R7,K1

RET

END

让我从头到尾来分析这整个程序:首先,这段程序是用于循环点亮P1.0这个灯的。

ORG 0000H ;这句话我们说过他的作用了,不懂的往前看。

AJMP MAIN ;这句话分成两个部分,AJMP和MAIN。AJMP是一个绝对转移指令,英文为absolute jump,类似的转移指令还有ljmp和sjmp,jmp。这里大概啰嗦一下,ljmp就是长转移,就是可以跳转的距离比较长,sjmp是短跳转,JMP就是一个跳转,由于我现在不打算学那么深,所以不打算深入探讨,只要能达到目标即可。 MAIN是一个标号,表示跳到main这个标号所在的程序运行,标号就相当于一个地址。


MAIN:SETB P1.0 ;这就是MAIN标号里面的内容,用分号隔离开标号和程序,程序setb就是置位,把p1.0这个位变为高电平,就是set bit


LCALL DELAY ;这里得好好说一下,lcall是长的调用函数的指令,就是long call组成的,call就是调用函数的语句,函数名是DELAY,这个类似于转移指令,但是函数是一个块,它的后面有返回RET,而转移就是转到那个标号的内容去执行,不管什么返回不返回的。这个函数的作用就是一个延时。


CLR P1.0 ; 延时结束之后,就对p1.0清0,clear。

LCALL DELAYA ;然后继续执行下一个延时

AJMP MAIN ;这里又是一个跳转指令,跳回到main标号中,就相当于是不断的重复执行这里面的代码了


DELAY: MOV R7,#255 ;这是延时函数,r7是一个8位的工作寄存器,所以它最大可以放255,指令的作用就是把255放进r7这个寄存器当中去。


D1: MOV R6,#255;d1是标号,指令的作用同上

D2: DJNZ R6,D2 ;D2也是标号,DJNZ相当于c语言中的if else,让我仔细说一下他的作用,减一不为零转移指令(dec 1 jump if not zero),就是把r6中的内容减去一,然后判断它是否等于0,如果不等于0,就跳转到后面的标号的内容继续执行,如果等于0就继续执行下一条指令,然后由于后面的标号还是D2,所以就一直在执行这条指令,直到r6等于0


DJNZ R7,D1 ;这条指令和上面的也是一样,只不过他是跳回到D1这里,所以他又回到d1那里,不断的重复。

RET ;这个是函数的返回,表示结束这个函数。

我写一段c语言的代码来表示这个汇编里面的延时函数吧,不然怕你们看不懂。

public void delay()

for(int i=255;i>0;i--)

{

for(int j=255;j>0;j--)

{}

}

就是里面先有255次的减法运算,然后在外面包围一个255的减法运算,所以总的就是255*255次减法运算。我们知道单片机的运行速度比较快,所以可能你的单片机这样运行的延时还是不够,你可以再加上一个包围,只是这层包围10次左右就差不多了。


DELAYA: MOV R7,#100 ;这是短一点的延时函数

K1: MOV R6,#100

K2: DJNZ R6,K2

DJNZ R7,K1

RET

END ;记住后面要加上程序的结尾


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    51单片机学习:LED流水灯实验;实验名称:LED流水灯实验接线说明:实验现象:下载程序后“LED模块”的D1-D8指示左右点亮......
    为主控芯片和流水灯模块的原理图。流水灯模块接在单片机的P1口,由原理图可以知道,在P1口给一个低电平即可点亮LED灯。相反,如果要LED灯熄灭,就要把P1口的电平变为高电平即可。要实现流水灯功能,我们......
    单片机点灯(点亮、闪烁、流水灯);一、点亮 工作原理: 如图,二极管阳极连接电阻,二极管阴极连接单片机引脚。D0对应P20,D1对应P21,,,,,,,都通过P2孔进行控制。 二极管: 电源......
    使用STM32单片机点亮LED;有一人,登场于金庸先生的《神雕侠侣》,以大理段氏“一阳指”自成一派,武学修为登峰造极,“天下五绝”之一,号称“南帝”,他就是“一灯大师”。如今,武林......
    以便验证自己的思路是否正确 五、点亮一颗LEDLED灯实物(摘自爱上单片机LED灯其实我们平时到处都可以看到,不同的LED灯的驱动电压有区别,这个我就不多说了,百度上一大堆,大家......
    闪烁{if(k1 == 0){L1 = 0; //低电平有效,输入0led灯点亮}else{L1 = 1; //否则熄灭}}}如上就是我们的第一个任务,要用单片机点亮一只发光二极管LED,这个LED必须要和单片机......
    51单片机点亮一盏LED灯的原理解析;首先应该了解51单片机最小系统:51最小系统也称为51最小应用系统,是指用最少的元件组成的51单片机可以工作的系统。如图2.1.1所示,51最小......
    对应上图中三角形箭头剑尖所指向的左边方向就是负极,反之右边就是正极。 使用51单片机点亮LED,我们可以选择用单片机IO端连接LED的负极或正极,如果接LED的负极,那么IO端默认电平需要设置为高电平,LED另一个引脚需要接+5V......
    80C51单片机-LED流水灯效果;本文将介绍一个基于8051单片机的跑马灯实验,通过编写代码实现LED流水灯效果。这个实验将使用8051单片机的P2口来控制8个LED灯,实现流水灯效果。 实验......
    80C51单片机-LED流水灯效果(汇编版);本文将介绍一个基于8051单片机的跑马灯实验,通过编写汇编代码实现LED流水灯效果。这个实验将使用8051单片机的P2口来控制8个LED灯,实现......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>