首页 > 应用 > 单片机应用
[导读]对于单片机编程软件,想必大家均有所了解。针对单片机编程软件,小编曾对keil、IAR予以介绍。本文对于单片机编程软件的讲解,同样基于keil。本文中,将介绍keil单片机编程软件变量用法下篇。如果你对单片机编程软件相关内容存在一定兴趣,不妨继续往下阅读哦。

对于单片机编程软件,想必大家均有所了解。针对单片机编程软件,小编曾对keil、IAR予以介绍。本文对于单片机编程软件的讲解,同样基于keil。本文中,将介绍keil单片机编程软件变量用法下篇。如果你对单片机编程软件相关内容存在一定兴趣,不妨继续往下阅读哦。

一、Keil C51中使用变量存储模式的必要性

在Keil C51中,变量的存储模式是一个可选项,如果不使用这个选项,则Keil C51在编译时自动进行优选分配。但这种处理方法有以下缺点:

①系统不知道各种变量的使用频度,有可能对使用频度高的变量使用了访问速度慢的片外存储方式,而对使用频高的变量使用了片内存储方式,使得程序的运行效率降低;

②在使用指针寻址时,由于不知道寻址对象的存储方式,只好使用一般指针,在Keil C51中一般指针要多占用1~2个字节,并且使用时还要对存储方式进行判断,增加了寻址操作时间。

如果能够在定义变量的同时定义其存储类型,可以高效地使用51内核单片机的存储空间,获得高质量的目标代码。

二、Keil C51变量的使用方法

2.1 全局变量和静态局部变量

全局变量一般会在多个函数中被使用,并在整个程序运行期间内有效,静态局部变量虽然只在一个函数中使用,但也是在整个程序运行期间有效。对于这些变量,应尽量选择data型,这样在目标代码中就可以用直接寻址指令访问,获得最高的访问速度,提高程序的工作效率。例如一个保存人数的全局变量n_g,在多个函数中都被经常用到,可以这样定义:

unsigned int data n_g;//对n_g赋值时使用“MOV XXH,……”指令

2.2 数组(包括全局和局部)

定义数组一般用idata存储类型,在目标代码中使用“MOV@Ri”指令进行间接寻址。如果因数组元素过多而在编译时报错,可以改用pdata和xdata存储类型。

数组定义为data存储类型意义不大,因为既然使用数组,就是希望能够根据某一自变量访问数组元素。如定义X[100],一般都是为了能够使用X(i是一个变量)来访问,这样在目标代码中就必须使用问接寻址,所以数组没有必要使用data存储类型,即便使用了data存储类型,在目标代码中也仍然要用间接寻址指令。数组定义成idata存储类型,在使用52内核且片内数据存储器不够时,会使用只能间接寻址的片内数据存储空间。这样,既不能降低处理速度,又扩大了可使用的存储空间。

2.3 供查表用的数据

这类数据的特点是需要始终保持不变,且使用时只读,因此应定义为code型。例如一个字形表:

image1.jpg

全局或局部code型变量在存储时无区别。

2.4 非静态局部变量

非静态局部变量仅在某一函数内使用,退出该函数时变量也被释放。

若系统使用small存储模式,对于这些变量可以不加存储说明,由编译软件自行按最优原则决定,因为仅在函数内使用的非静态局部变量,有可能使用工作寄存器R0~R7,这样会更快速和更节省存储空间。例如:

unsigned char i,j; //系统尽可能会用R0~R7存储i和j

若系统使用了compact或large存储模式,则应将这些变量定义为data存储模式,以防系统自行决定时被定义为pdagta或xdata模式而降低工作效率。

2.5 指针

如前所述,定义指针变量时有2个存储类型:数据存储类型,说明被寻址对象的存储类型;指针存储类型,说明指针自身的存储类型。当数据存储类型为xdata时,指针自身占用2个字节;当数据存储类型为pdata以及idata等片内存储类型时,指针自身占用1个字节;若不说明数据存储类型,指针自身就要占用3个字节。因此,在KeilC51中使用指针时,应尽量定义数据存储类型,但要特别注意指针中的数据存储类型与被寻址对象的存储类型必须一致。指针都是频繁使用的,它要不断被设置、修改和使用,因此它自身的存储类型应选择data型。例如定义一个数组时就同时定义其存储类型,以后用指针对其寻址时就将数组的存储类型添加到指针的数据类型中。方法如下:

image2.jpg

2.6 二义性变量

在标准C中如果要使用一个二义性变量,只能用枚举类型。如:

image3.jpg

以上程序在Keil C51中使用时,变量t虽然仅有0和1两种状态,但在目标代码中仍占用一个字节。此处理方法既浪费存储资源,又延长了处理时间,这对于8086内核算不上多大问题,但在资源有限、运行速度不高的51内核中就不能不考虑了。在Keil C51中可使用以下方法:

image4.jpg

这两种方式效果是完全相同的,但在目标代码中变量t仅占用1位(即1/8字节),而且因为51内核单片机指令系统中有位处理指令,生成的目标代码占用内存少、运行速度快。

2.7 特殊功能寄存器变量(包括位变量)

特殊功能寄存器中,累加器A、寄存器B、堆栈指针SP和数据指针DPTR是归系统使用的,在C51中不提供给用户。其他的特殊功能寄存器都可以用sfr定义成变量,其中地址可以被8整除者的各位,还可以用bsfr定义成位变量。访问这些变量,就可以对特殊功能寄存器及其可以位寻址的各位进行读写,达到操作单片机内部各硬件的目的。对于标准的51内核单片机,头文件reg51.h、reg52.h或其他头文件中已对这些特殊功能寄存器变量作了定义,用户可以用#include将此头文件包含进来,然后就可以使用了。现在很多51内核兼容型单片机扩展了更多的特殊功能寄存器,这些就需要用户自行定义,具体方法可参考器件的使用说明。

2.8 外部数据存储器变量

若设置成pdata和xdata存储类型,将把变量存储在片外数据存储器中。这两种存储类型的访问速度最慢,非迫不得已不要使用。在使用这两种存储类型时,注意尽量只用它保存原始数据或最终结果,尽量减少对其访问的次数,需要频繁访问的中间结果不要用它。

2.9 用外部数据存储器地址扩展的其他硬件

在单片机外部扩展的其他硬件,一般都借用外部数据存储器地址,表现为外部数据存储器单元形式。对于这些硬件,可以用指针进行读写操作。例如:

image5.jpg

以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对本文讲解的内容具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

换一批

延伸阅读

[单片机应用] 单片机编程软件很简单(六),V5.29 keil mdk单片机编程软件新特性+烧写程序

单片机编程软件很简单(六),V5.29 keil mdk单片机编程软件新特性+烧写程序

单片机编程软件使用广泛,市场上最为流通的单片机编程软件为IAR、keil。往期中,小编曾对keil单片机编程软件带来诸多介绍,想必大家对这款单片机编程软件早已熟悉。但是大家了解keil mdk单片机编程软件吗?......

关键字:单片机编程软件 keil mdk 烧写程序

[单片机应用] 单片机编程软件很简单(四),keil单片机编程软件变量用法(上)

单片机编程软件很简单(四),keil单片机编程软件变量用法(上)

常用单片机编程软件有多款,其中keil单片机编程软件较为知名。对于keil单片机编程软件,小编曾带来3篇系列教程。本文对于单片机编程软件的讲解同样基于keil,在本文中,小编将对单片机编程软件keil c51的变量使用方法加以介绍。......

关键字:单片机编程软件 keil 变量使用方法

[单片机应用] 单片机编程软件很简单(三),keil单片机编程软件双数据指针+二进制

单片机编程软件很简单(三),keil单片机编程软件双数据指针+二进制

单片机编程软件实际使用较多,因此单片机编程软件具备很强的使用价值。对于单片机编程软件,小编曾带来诸多介绍,如单片机编程软件有哪些等。本文对单片机编程软件的讲解基于Keil C51,主要内容为介绍keil对双数据指针的支持情况以及其代码生成机......

关键字:单片机编程软件 双数据指针 二进制

[单片机应用] 单片机编程软件很简单(二),keil单片机编程软件心得秘笈

单片机编程软件很简单(二),keil单片机编程软件心得秘笈

单片机编程软件为常用软件之一,单片机开发人员均用过多款单片机编程软件。那么,用单片机编程软件进行开发时,大家是否有独特新得呢?本文对单片机编程软件的讲解基于Keil C51,主要为大家介绍使用这款单片机编程软件开发单片机时积攒的一些开发心得......

关键字:单片机编程软件 keil 心得体悟

[单片机应用] 单片机编程软件很简单(一),keil单片机编程软件忽略警告+全局替换

单片机编程软件很简单(一),keil单片机编程软件忽略警告+全局替换

单片机编程软件很多,但主要以Keil单片机编程软件和IAR单片机编程软件为主。本文对单片机编程软件的讲解基于Keil,主要内容为:keil单片机编程软件忽略特定警告的方法以及如何使用keil单片机编程软件全局替换字符串。如果你对本文即将要讲......

关键字:单片机编程软件 keil 忽略警告

[单片机教程] 如何使用单片机编程软件

如何使用单片机编程软件

简单地说,单片机就是一个小计算机系统。为了说明清楚这个问题,得要从计算机说起。提到计算机,大家可能马上会想到“显示器、鼠标、键盘”,不过,这不是一个计算机的核心和关键,计算机的核心部分在一边的机箱里呢。打开机箱,可以看到,机箱里有主板、硬盘......

关键字:单片机编程软件 Keil IAR

[单片机应用] 单片机编程软件实践篇,Keil 5单片机编程软件有关MDK的小技巧

单片机编程软件实践篇,Keil 5单片机编程软件有关MDK的小技巧

单片机编程软件的重要性不言而喻,而Keil单片机编程软件更是诸多单片机编程软件中的佼佼者之一。本文对Keil单片机编程软件的讲解基于Keil 5版本,主要为大家介绍这款单片机编程软件中有关MDK的一些功能小技巧,以帮助大家提高对Keil的掌......

关键字:单片机编程软件 Keil MDK

[单片机应用] Keil单片机编程软件高级篇,Keil单片机编程软件单片机变量用法

Keil单片机编程软件高级篇,Keil单片机编程软件单片机变量用法

单片机编程软件是老生常谈的话题,往期文章中,小编主要讲解IAR单片机编程软件的教程。而此次,将带来Keil单片机编程软件教程,主要内容为Keil单片机编程软件中C51变量方法,以此帮助大家更好掌握Keil单片机编程软件。......

关键字:Keil 单片机编程软件 变量用法

[单片机应用] 单片机编程软件keil 4、5的区别,keil 5单片机编程软件安装破解教程

单片机编程软件keil 4、5的区别,keil 5单片机编程软件安装破解教程

单片机编程软件是单片机开发不可缺少的工具,缺少单片机编程软件便如同回到原始社会。单片机编程软件目前使用较多的为keil单片机编程软件和IAR单片机编程软件。本文中,主要为大家讲解keil4与keil5的区别以及keil5的安装激活方法,以帮......

关键字:单片机编程软甲 IAR keil

[单片机应用] IAR单片机编程软件很简单,轻松搞定IAR单片机编程软件3大问题

IAR单片机编程软件很简单,轻松搞定IAR单片机编程软件3大问题

对于单片机编程软件,小编个人较为推崇IAR。本文将基于3大方面介绍IAR单片机编程软件:一、IAR单片机编程软件开发环境界面设置,二、IAR单片机编程软件快捷键,三、IAR单片机编程软件使用小技巧。通过IAR单片机编程软件3方面内容介绍,希......

关键字:IAR 单片机编程软件 快捷键

[单片机应用] 单片机编程软件经验贴,搞定IAR单片机编程软件设置问题

单片机编程软件经验贴,搞定IAR单片机编程软件设置问题

目前,流通度较大的单片机编程软件为KEIL、IAR。其中,IAR单片机编程软件深受用户喜爱。初接触IAR单片机编程软件时,很多用户对其设置充满疑惑。故本文将对IAR单片机编程软件设置加以介绍,帮助大家掌握这款单片机编程软件的使用过程。......

关键字:IAR 单片机编程软件 设置

[单片机应用] IAR单片机编程软件高级篇,IAR单片机编程软件编译优化过程

IAR单片机编程软件高级篇,IAR单片机编程软件编译优化过程

单片机编程软件是单片机开发不可缺少的工具之一,目前市场流通的单片机编程软件主要为IAR单片机编程软件和KEIL单片机编程软件。本文中,将为大家讲解IAR单片机编程软件编译优化问题,一起来了解下吧。......

关键字:IAR 单片机编程软件 编译优化

[单片机应用] 搞定单片机编程软件,窥探IAR单片机编程软件

搞定单片机编程软件,窥探IAR单片机编程软件

单片机编程软件在实际工程中具备诸多应用,每一款单片机编程软件乃至不同版本的单片机编程软件皆兼具自身特色。本文将涉及两方面内容,一是IAR单片机编程软件的简单介绍,二是阐述IAR单片机编程软件从建立工程到烧录程序的过程。如果你对这两方面内容存......

关键字:单片机编程软件 IAR 烧录程序

[单片机应用] 吃透单片机编程软件,IAR单片机编程软件创建stm32工程

吃透单片机编程软件,IAR单片机编程软件创建stm32工程

Keil和IAR单片机编程软件,是当前流通度庞大的两款单片机编程软件。而对于单片机编程软件的使用,各自存在一定区别。本文中,将为大家讲解IAR单片机编程软件建立stm32工程的详细方法,希望大家通过本文能够有所收获哦。......

关键字:单片机编程软件 IAR stm32

[单片机应用] 单片机编程软件一点通,IAR单片机编程软件工程调试方法

单片机编程软件一点通,IAR单片机编程软件工程调试方法

单片机编程软件通常以Keil和IAR为主,大家在选择适合自己的单片机编程软件时可依据工程要求而定。本文内容针对IAR单片机编程软件,主要讲解该单片机编程软件的工程调试使用方法。如果你对本文将要讲解的内容存在疑惑,不妨一起来学习下哦。......

关键字:单片机编程软件 IAR 工程调试

我 要 评 论

网友评论

技术子站

更多

项目外包

更多

推荐博客