首页 > 教育培训

看懂c51语言代码 keil2干什么用?

keil2干什么用?

keiluvision2是德国keilsoftware公司出品的51系列兼容问题单片机c语言软件开发系统,建议使用将近于民间c语言的语法来的新,与汇编两者相比,c语言在功能上、供需结构、可读性、可维护性上有明显的优势,以致界面友好,不过有所的提高了工作效率和项目开发周期,他能合成一体汇编,您这个可以在关键是的位置嵌入,使程序达到接近于汇编的工作效率。

keilc51标准c编译器为8051微控制器的软件开发提供了c语言环境,同时记录了汇编代码又高效,飞快的特点。c51编译器的功能不断提高,使你可以十分贴紧cpu本身,及其它的衍生产品。c51已被完全板载显卡到uvision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时地操作系统,项目管理器,调试器。uvision2ide可为它们可以提供每种而灵活自如的开发环境

什么软件可以查看应用代码?

看懂c51语言代码 keil2干什么用?

android代码阅读器app这是一款能飞速识别源代码的手机应用,实际安卓代码阅读器app你可快速网站查询文件源代码,浏览的网页多种主流编程语言等。

安卓代码阅读器app是一款简单源码阅读器,接受语法高亮显示包括含有主题风格没显示,能自动识别源码文件。android代码阅读器,很快阅读什么源代码,界面风格多元放弃自由选择,工程快捷便利管理。

c51中break语句的功能有?

1、首选再打开vc6.0软件,刚建一个空白区域的c语言文件,先引导出c语言的头文件和主函数:

2、然后再代码中在用两层for循环,输出5行数,每一行都比上一行多出1倍,先输出低不加break语句的程序,程序运行结果万分感谢:

3、之后不使用break语句,当柯西-黎曼方程i3的时候中止循环,控制输出j从1到5的所有循环。可以看到满足的条件条件的外围的部分循环就被进不了了,这一行的结果还没有打印进去:

c语言,单片机主要运用到那些?

在单片机的开发应用中,已逐渐就开始核心中高级语言,

c语言那是其中的一种。对用惯了汇编的人来说,总都觉得高级语言'可控性'不好,不如汇编那样的随心随遇。

不过如果能我们能够掌握了一定的c语言知识,有些东西应该很容易才能做成的,以下是笔者实际中工作中遇到的几个问题,如果能对初学c51者所帮助。

一、c51重复启动代码的编制

对于工业控制计算机,一般说来设有有看门狗电路,当看门狗动作,使计算机复位,这那是正常启动。

热启动时,一般不不能从头来,这将可能导致可以做到的已测量到或可以计算到的值复位,可能导致系统工作无比。

因而在程序可以判断是重复启动还是冷启动,具体用法的方法是:判断某内存单位为标志位(如0x7f位和0x7e位),

启动时简单的方法读该内存单元的内容,如果它4一个特定的值(例如两个内存单元的大都0xaa),就其实是重复启动,

不然那是快速暖机,程序执行重新初始化部份,并将0xaa赋与这两个内存单元。

参照以上的设计思路,编程时,可以设置一个指针,让其正指向某一特定的内存单元如0x7f,然后在程序中可以确定,程序追加:

voidmain()

{chardata*hotpoint(char*)0x7f

if((*hotpoint0xaa)ampamp(*(--hotpoint)0xaa))

{/*热启动的处理*/

}

exists

{hotpoint0x7e/*快速暖机的处进

*hotpoint0xaa

*(hotpoint)0xaa

}

/*正常吗工作代码*/

}

但这实际系统的调试中发现自己,无论正常启动还是节气门积碳,开机时后所有内存单元的值都被复位为0,当然了也实现程序不了热启动的要求。这是为什么呢?原来,用c语言编程时,开机时时执行的代码并非是是从main()函数的第一句语句就开始的,在main()函数的第一句语句执行前要先想执行一段'起始代码'。正是这段脚本执行了清零的工作。c编译程序提供给了这段起始代码的源程序,名为cstartup.a51,可以打开这个文件,可以清晰的看到追加代码:

.

idatalenequ80hthelengthoftheidatamemoryacrossbytes.

.

startup1:

ifidatalenltgt0movr0,#idatalen-1

clra

idataloop:,adjnzr0,idataloopendif

.

可以说,在负责执行到判断是否是正常启动的代码之前,起始代码已将所有内存单元清零。要如何帮忙解决这个问题呢?幸好启动代码是也可以你要改的,方法是:可以修改startup.a51源文件,后再用编译程序所附带的a51.exe程序对startup.a51编译,换取startup.elem文件,后再用这段代码替代原先的起始代码。具体流程是(设c源程序名为hotstart.c):

修改startup.a51源文件(这个文件在c51lib目录下)。

负责执行追加命令:

a51startup.a51得到文件。将此文件拷入hotstart.c所在目录。

将编好的c源程序用c51.exe编译好,换取目标文件hots

tart.obj。

用l51hotstart,startup.obj命令连接上,得到绝对目标文件hotstart。

用ohs51hotstart能够得到hotstart.hex文件,再试一下。

相对于startup.a51的修改,依据什么自已的需要接受,如将idatalenequ80h中的80h替换成70h,就可以使6f到7f的16字节内存不被清零。

二、就内部函数eprom中已特性的程序

笔者是用仿真机,由6位数码管显示,在内存de00h处放总是显示子程序,只需即将总是显示的数后放总是显示缓冲区,然后把动态链接库这个子程序就这个可以不使用了,汇编指令为:

lcall0deooh

在用c语言编程时,要如何实现方法这一功能呢?c语言中有对准函数的指针这一概念,可以凭借这种指针来基于用函数指针调用函数。指向函数的指针变量的定义格式为:

类型标识符(*指针变量名)()

在定义好指针后就可以不给指针变量赋值,使其对准某个函数的开始存地址,接着用

(*指针变量名)()再试一下动态创建这个函数。追加例:

voidmain(void)

{

void(*dispbuffer)()/*定义方法对准函数指针*/

dispbuffer0xde00/*定义变量*/

for()

{key()

dispbuffer()

}

}

三、将浮点数能量转化为字符数组

笔者在编制应用程序时有这样的要求:将运算的结果(浮点数)存进eeprom中。我们知道,浮点数在c语言中是以ieee格式存储位置的,一个浮点数占用四个字节,或者浮点数34.526存为(160,26,10,66)这四个数。要将一个浮点数转存eeprom,事实上应该是要存这四个数。那你如何在程序中能得到一个浮点数的组成数呢?

浮点数在存储时,是存储位置尝试的字节中的,只要想法子找到存储位置,就可以我得到这些数了。是可以定义一个void的指针,将此指针正指向要存储的浮点数,后再将此指针强制破军转化成为char型,这样,借用指针就这个可以能得到排成该浮点数的各个字节的值了。具体详细程序::

#defineucharunsignedchar#defineuintunsignedintvoidftoc(void)

{floata

uchari,*px

ucharx

c语言,单片机主要运用到那些?

/*定义方法字符数组,准备好存储浮点数的四个字节*、

void*pf

pxx/*px指针指向数组x*/

pfampa/*void型指针指向浮点数首地址*/

a34.526

for(i0ilt4i)

{*(pxi)*((char*)pfi)/*噬灵鬼斩void型指针转成char型,毕竟*/

}/*void型指针没法除法运算*/

}

如果已将数存进eeprom,要将其接过合并,方法又是一样,可做个参考下面的程序。

#defineucharunsignedchar#defineuintunsignedint

voidctof(void)

{floata

uchari,*px

ucharx

c语言,单片机主要运用到那些?

{56,180,150,73}

void*pf

pxx

pfampa

for(i0ilt4i)

{*((char*)pfi)*(pxi)

}

}

以上所用c语言为franklinc51ver3.2。

原文标题:看懂c51语言代码 keil2干什么用?,如若转载,请注明出处:https://www.suhaipipe.com/tag/6709.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「蓝鲸百科」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。