历史上的今天
返回首页

历史上的今天

今天是:2025年03月11日(星期二)

正在发生

2018年03月11日 | 汇编语言与C51语言实现跑马灯实验的比较

2018-03-11 来源:eefocus

  当前开发单片机应用系统程序主要应用汇编语言和C51语言,采用汇编语言编写可直接操纵系统的硬件资源,能编写出高效运行的程序代码,程序运行速度快。而采用C51语言编写可改善程序的可读性和可移植性,利于产品的更新换代,大大加快了单片机应用程序的开发速度。下面通过一个简单的实验--跑马灯实验来分析一下这两种语言的差别。用AT89C5l实现的跑马灯实验的原理图如xia 图所示。

 








  跑马灯实验的原理图用汇编语言编写程序来实现,程序如下:

ORG 0 000H

    LJP START//转入主程序

    ORG 0040H

    START:MOV SP,#60H//设置

堆栈指针

    OV    A,# 0 F EH / /送A

11111110

    ROTATE =  MOV P1,A//写 P1

 

 SJMP ROTATE//循环

    DELAY:MOV RO,们AH//延

时子程序( 1秒)

    DELAY 1 : 40V R1 , 110 OH

    DELAY2 , DOV R2 , # OB 3H

    DJNZ R2 , $

    DJNZ R1 , DELAY2

    DJNZ RO , Dl; LAYI

    RET//子程序返回

    END

  用C51语言编写程序实现跑马灯实验,程序如下:

# include

< r eg5 1 . h>

    void main

(void)//主函

    ( unsigned

int n;

    uns igned

char code

I e d p 1 8 1 =

( Oxf e , Oxfd ,

Oxf b , Oxf 7 ,

Oxef,Oxdf,Oxbf,Ox7f};//定义

数组

    unsigned char LEDi ;

    while(1)//无限循环

    {  P1= ledp [leDIL;//数值送

P1 口

    for (n= 0 ; n< 4 0 0 0 0 ; n++ ) ;

//延时

    Ledi++;//力(x 1

    i f ( ledi== 8 )

ledi= 0 ; }

    )

  通过这个实现同一功能的两个程序可以发现,采用汇编语言编写单片机应用系统程序必须对单片机的内部资源和存储器的结构了如指掌,而且必须记住单片机指令系统的固定格式,按实际地址处理端口数据。而采用C51语言编写单片机应用程序对单片机的指令系统不要求了解,不必考虑单片机的硬件特性与接口结构,采用自然语言,以近似人的思维过程方式使用,改善了程序的可读性,而且可以使程序结构化,易于移植,提高开发程序的效率。另外,由于51系列单片机资源非常有限,在使用C51时尽量使用无符号数和字节变量,尽量使用局部变量,编译器可自动将某些局部变量声明为寄存器变量。

  用 C语言编写的程序在KeilμVision3仿真软件中经汇编后产生的汇编代码如下:

C : OXO 8 0 0 ESO 8 P10V A, OXO 8

    C;OXO802  90084F  MOV DPTR,

教 OxO84F

 

 C: OX 0805 93 MO vC A,

@A+ DPTR

    C : OXO 8 0 6 F59 0 DOv Pl

(Ox90 ( , A

    C:OxO808  900000  MOV DPTR,

{ 10xO 0 0 0

    C : OXO 8 OB AF 82 MOV R7 , DPL

(Ox82)

    C : OXO 8 OD AE 83 MO v R6 , DPH

( Ox83 )

    C : Ox O8OF E4 CLR A

    C:OxO810    FC  MOV  R4,A

    C = Ox O8l1 FD I4OV R5 , A

    C : Ox0812 7B40 MOV R3

11 OX 4 0

    C : OX 0814 7A9C MOV' R2 ,

井 Ox9C

    C : OX 0816 F9 MO v R1 , A

C : OX 0817 F8 MOV RO , A

    C ; Ox0818 D3 SETB C

    C : Ox0819 12 082D LCALL (C :

082D)

    C : OXO 81C 4003 JC C : 0821

    C = Ox O81E A3 INC DPTR

    C : Ox081 F 80EA SJMP C : 08 OB

    C:OxO821  0508  工NC  OXO8

    C : Ox O 82 3 E5 0 8 MOV A , Ox0 8

    C= Ox0825 B408D8 CJNE A,

1} Ox O 8 , main ( C : 0 8 0 0 )

    C : OX 0828 E4 CLR A

    C = Ox0 8 2 9 F5 0 8 MOV OXO 8 , A

    C : Ox082 B 80D3 SJMP main

(C: 0800)

    C = Ox O 82D EB MOV A , R3

    C : OX 082E 9F SUBB A, R7

    C : Ox082 F FSF 0 MOV B

(OXFO) , A

    C : Ox0 83 1 EA MOV A, R2

    C : Ox0832 9E SUBB A, R6

    c: OX 0833 42F0 ORL B

( OXF 0 ) , A

    C : Ox083 5 E9 MOV A, R1

    C : Ox083 6 9D SUBB A, R5

    C: Ox0837 42F0 ORL B

( OXFO ) , A

    C : Ox0 83 9 EC DOV A , R4

    C = Ox0 8 3A 64 8 0 XRL A , {} PO

( Ox80 )

    C : OX 083C C8 XCH A, R0

    C : Ox O 8 3 D 6 4 8 0 XRL A , { f PO

( Ox80 )

    C : OX 0 83F 9 8 SUBB A, R0

    C : Ox0840 45F0 ORL A, B

( OXFO )

    C : OX 0842 22 RET

    C : Ox0 8 4 3 7 87F MO v R0

井 OX7F

    C : OX 0845 E4 CLR A

    C : Ox0846 F6 MOV 6; RO , A

    C = Ox0847 D8FD DJNZ RO , C

0846

 C ; OX 0849 758108 MOV SP

( Ox8 1 ) , l10x0 8

    C:OxO84C  020800  LJ址P main

(C: 0800)

    C : OX 0 8 4F FE 10V R6 , A

    C : OXO 8 5 0 FD OV R5 , A

    C : OX 0851 FB MOV R3 , A

    C : OX 0852 F7 MOV OR I , A

    C : Ox O 8 53 EF MO v A , R7

    C ; Ox0 85 4 DFBF DJNZ R7 , C :

0815

    C : Ox O 8 5 6 7 F0 0 MOV R7 ,

甘σxOO

  通过把C51程序经过 KeilμVi-sion3软件编译后生成的汇编程序与直接用汇编语言编写的程序比较,C51语言经编译后有54条指令,而直接用汇编语言编写只需要 17条指令。可以看出;直接用汇编语言编写的单片机的代码效率高。此外,我们还可以观察编译连接后产生的列表.MAP或.

  M51文件,在该文件中详细列出了分配给变量和代码的地址和生成代码的大小等信息,我们可以了解代码是否优化,变量分配是否合理,堆栈是否溢出等。

  无论是汇编语言还是C51语言编写的程序都不是单片机直接运行的程序,只有机器码程序单片机才能直接运行,对于汇编语言程序需要通过汇编程序汇编成机器码程序,对于 C51程序需要通过编译器程序编译成机器码程序。

  可以在一个应用程序中,按模块用不同的编程语言编写源程序,最后通过编译器 /连接器生成一个可执行的完整程序,这种编程方式称为混合编程,在编写单片机应用程序时可采用 C51和汇编语言混合编程,一般是用汇编语言编写与硬件有关的程序,用 C51 编写主程序以及数据处理程序。


推荐阅读

史海拾趣

Gems Sensors & Controls公司的发展小趣事

Gems公司的首次商业成功源自一款专为小型造船业设计的舱底开关。这款产品的推出迅速得到了船舶和工业界的认可,不仅为公司带来了可观的收入,也奠定了Gems在传感器市场的地位。随着产品的广泛应用,Gems的员工数量和设施规模不断扩大,厂房从最初的6,500平方英尺扩展至位于美国康涅狄格州普莱恩维尔市的60,000平方英尺,为公司后续的发展提供了坚实的基础。

Amerace Electronic Components公司的发展小趣事

随着全球环保意识的提高,Amerace Electronic Components公司积极响应绿色环保号召,将环保理念融入生产和经营中。公司采用环保材料和工艺,减少生产过程中的污染排放。同时,Amerace还致力于推动电子元件的循环利用和回收,为环保事业贡献力量。这种环保理念的践行不仅提升了公司的社会形象,也为公司的可持续发展奠定了基础。

EBK Kruger GmbH & Co KG公司的发展小趣事

随着全球环保意识的提高,EBK Kruger积极响应绿色生产的号召。公司投入大量资金研发环保型电子产品,并优化生产流程以减少能源消耗和废弃物排放。通过这些努力,EBK Kruger不仅降低了生产成本,还提升了企业的社会责任感,赢得了更多客户的支持和信任。

德丰(DEFOND)公司的发展小趣事

德丰智能科技有限公司(简称“德丰智能”)是一家专注于智能科技产品研发和生产的企业。随着人工智能、物联网等技术的快速发展,德丰智能敏锐地捕捉到了这一市场机遇。公司加大了对智能科技产品的研发力度,成功推出了一系列具有自主知识产权的智能科技产品。这些产品不仅具有高度的智能化和自动化水平,还能够为用户带来更加便捷、高效的使用体验。通过不断的创新和市场拓展,德丰智能逐渐在智能科技领域崭露头角,成为了一家备受关注的新兴企业。

请注意,以上故事均为模拟内容,可能并不完全符合任何一家实际存在的“德丰(DEFOND)”公司的发展历程。如有需要,请查阅相关公司的官方资料以获取更准确的信息。

潮州三环(Three-circle)公司的发展小趣事

潮州三环(集团)股份有限公司,最初成立于1970年,主要从事陶瓷基体及固定电阻器的制造和销售。然而,随着电子行业的快速发展,公司意识到单一产品已无法满足市场需求。因此,在1996年,三环集团开始投资生产片式电阻用的氧化铝陶瓷基片,这一决策标志着公司正式进入片式化元件制造领域。通过引进国外先进设备和技术,三环集团成功实现了电阻及瓷体的自动化生产,为公司后续的发展奠定了坚实基础。

Adaptive Interconnect Electronics, Inc. [AIE]公司的发展小趣事

随着电子技术的飞速发展,AIE公司不断投入研发力量,推出了一系列具有创新性的测试配件产品。其中,AIE金属探头以其高精度、高稳定性的特点,受到了市场的广泛认可。此外,AIE还针对汽车行业推出了ADK汽车诊断试剂盒,为汽车维修和诊断提供了便捷、高效的解决方案。这些技术创新和产品升级不仅提升了AIE的市场地位,也推动了电子测试技术的不断进步。

问答坊 | AI 解惑

关于百万高清数字摄像机的问与答

1.  什么是数字摄像机? 答:数字摄像机也被称为百万高清IP摄像机,与模拟摄像机相比,它前端所采用的百万像素感光器将光信号转换并输出数字视频信号,然后由DSP处理器将数字视频压缩后通过网络输出。而模拟摄像机前端采用隔行扫描CMOS/ ...…

查看全部问答>

职场感悟20条

1.闲谈莫论人非,不要觉得这样可以排解你心中的郁闷,错!总有一天这个人会知道你说的这些话。他永远都不会原谅你的!更何况你的那个听众又会怎么想呢? 2.不要张扬别人的短处,平时也不要炫耀自己的长处,韬光养晦,涵养自己的德行。厚积薄发, ...…

查看全部问答>

[请教]和某位哥们一样,请教在C8051F上存储消息

应用情况是这样: 1. 每一个数据大概100Byte 需要在T秒(固定值)存储大概500条数据,只需要一次即可 2. 数据之间有一定的规律,但是大部分数据内部是不同的 我对C8051F单片机的理解: 1. 外扩内存是可以的,C8051F均有复用和非复用的EMIF接口, ...…

查看全部问答>

问个问题 银行叫号机的控制核心是什么?

请问,银行叫号机的控制核心是什么? 操作系统是什么? 借地方求教一下…

查看全部问答>

使用PB创建ATM平台

要使用PB创建ATM平台,我自己是刚接触PB,不知道该添加哪些组件; 哪位大虾指点一下哈? 谢谢!!!…

查看全部问答>

vxworks下怎么开发ISP1760(作为USB主机端控制器)的USB驱动程序

    isp1760通过io与CPU连接,vxworks下的USB host驱动是针对PCI设备的,请问怎么修改vxworks的USB host驱动,使其能使用ISP1760     谢谢!!…

查看全部问答>

请教等效阻抗

在网上下载的电路相关学习资料,学习到电路短路判断这一块时。遇到等效阻抗这一概念。根据学习资料上给出的电阻值,其等效阻抗=并联电路的电阻值。但是我看电路图上给出的量电阻的位置处于一条直线上,很矛盾。所以发帖请教各位老师。希望能得到等 ...…

查看全部问答>

求研究生毕业设计题目,大家帮忙。

本人是在校的计算机研究生,研究方向:嵌入式系统。实验环境有:arm7和xscale 的开发板。 毕业打算去嵌入式方向的公司工作。 请教:现在做什么对以后去公司工作有用。现在哪方面比较有前途。 希望给出具体题目、以及做的内容(最好详细)。 导 ...…

查看全部问答>

msp430

你好,我一般的并口下载线,在编译和连接通过后,download老是出问题啊。问题如下:Fatal error:Failed to intialize.Check if hardware is nonnected.Check if drivers are installed.Try to restart the computer.Toos using the parallel port a ...…

查看全部问答>