单片机编程软件很简单_四,keil单片机编程软件变量用法(上)
常用单片机编程软件有多款,其中keil单片机编程软件较为知名 。对于keil单片机编程软件,小编曾带来3篇系列教程 。本文对于单片机编程软件的讲解同样基于keil,在本文中,小编将对单片机编程软件keilc51的变量使用方法加以介绍 。
8051内核单片机是一种通用单片机,在国内占有较大的市场份额 。在将C语言用于51内核单片机的研究方面,Keil公司做得最为成功 。由于51内核单片机的存储结构的特殊性,KeilC51中变量的使用与标准C有所不同 。正确地使用变量,有利于获得高效的目标代码 。
一、CPU存储结构与变量的关系
变量都需要有存储空间,存储空间的不同使得变量使用时的工作效率也不同 。
标准C的典型运行环境是8086(含IA-32系列)内核,其存储结构是CPU内部有寄存器,外部有存储器,寄存器的访问速度大大高于存储器的访问速度 。在标准C中,不加特别定义的变量是放在存储器中的,使用register可以强制变量存储在寄存器中,对于使用特别频繁且数量不多的变量可以选用这种存储模式,以获得更高的工作效率 。
相比之下,51内核单片机的存储结构则显得有些怪异,它的存储空间有3个:程序存储器空间(64KB含片内、片外)、片外数据存储器空间(64KB)、片内数据存储器及特殊功能寄存器空间 。它没有真正意义上的寄存器,它的寄存器其实是片内数据存储器(如R0~R7)和特殊功能寄存器(如A、B等)中的一部分 。因此,在KeilC51中使用变量就和标准C有很大不同 。
二、Keil C51变量分析
Keil C51支持标准C原有的大多数变量类型,但为这些变量新增了多种存储类型,也新增了一些标准C没有的变量 。
2.1 Keil C51新增的变量存储类型
Keil C51中定义变量的格式如下:
[存储种类]数据类型[存储类型]变量名表;
其中,[存储类型]是标准C中没有的,[存储类型]共有6种,分别介绍如下:
①data 。将变量存储在片内可直接寻址的数据存储器中 。使用这种存储模式,目标代码中对变量的访问速度最快 。
②bdata 。将变量存储在片内可位寻址的数据存储器中 。在目标代码中变量可以方便地进行位处理,在不进行位处理时与data相同 。
③idata 。将变量存储在片内间接寻址的数据存储器中 。在52内核中,当片内直接寻址数据存储器不够用时,可以使用128字节间接寻址数据存储器,访问速度一般较data要慢一些,但具有最大的片内数据存储器空间;在51内核中因无单独的间接寻址数据存储器区,idata与data无区别 。
④xdata 。将变量存储在片外数据存储器中 。目标代码中只能使用“MOVXA,@DPTR”和“MOVX@DPTR,A”指令访问变量,访问速度最慢,但存储空间最大(64KB) 。
⑤pdata 。将变量存储在片外数据存储器中的第一页(00H~FFH)中 。目标代码中可以使用“MOVXA,@Ri”和“MOVX@Ri,A”指令访问变量,访问速度与xdata相同,存储空间为256字节 。
⑥code 。将变量存储在程序存储器中 。目标代码中只能使用MOVC指令访问变量,因变量存储在程序存储器中,具有非易失性且为只读 。
2.2 Keil C51新增的指针变量存储类型
Keil C51中的指针变量形式如下:
数据类型[数据存储类型]*[指针存储类型]标识符;
其中,[数据存储类型]和[指针存储类型]都是标准C中没有的 。[数据存储类型]定义数据(即寻址对象)存储的空间,[指针存储类型]定义指针自身存储的空间 。若不使用[数据存储类型],则指针为一般指针,占用3个字节;若使用[数据存储类型]则指针为基于存储器的指针,占用1~2个字节 。
2.3 Keil C51新增的变量类型
bit:位变量 。存储在片内数据存储器的可位寻址字节(20H~2FH)的某个位上,这个变量在实时控制中具有很高的实用价值 。
sfr:特殊功能寄存器变量 。存储在片内特殊功能寄存器中,用来对特殊功能寄存器进行读写操作 。
sbit:特殊功能寄存器位变量 。存储在片内特殊功能寄存器的可位寻址字节(地址可以被8整除者)的某个位上,用来对特殊功能寄存器的可位寻址位进行读写操作 。
sbitl6:16位特殊功能寄存器变量 。存储在片内特殊功能寄存器的连续2个字节的低地址上,这个变量类型很少使用 。
以上这些Keil C51中新增的变量类型,不支持数组和指针操作 。
【单片机编程软件很简单_四,keil单片机编程软件变量用法(上)】以上便是此次小编带来的“单片机编程软件”相关内容,通过本文,希望大家对单片机编程软件KeilC51变量的使用具备一定的了解 。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容 。最后,十分感谢大家的阅读,have a niceday!
推荐阅读
- 单片机编程软件很简单_五,keil单片机编程软件变量用法(下)
- Microchip发布业界首款宇航级基于COTS的耐辐射以太网收发器和嵌入式单片机
- PWR系列高性能可编程交流电源的波形编辑功能及应用
- 10款超实用化工科研必备软件,快收藏!
- 电脑录屏软件哪个好_录屏软件哪个好?
- Aspen软件怎么用?化工人用经验告诉你
- 化工专业的研究会用到什么软件应用?
- 化工人必备软件,你知道几个?
- 安森美推出互联照明平台
- 分享7款化学领域常用软件给你