Ⅰ 单片机变量定义类型
C语言中,变量一般有两种属性,分别是:存储类别、数据类型。
例如定义一个变量:static unsigned char var = 0; 上述语句中,static(静态的)为变量的存储类别,unsigned char(无符号字符型)为变量的数据类型,var为变量名,初始化值为0。
下面给你说明几点。
存储类别:即变量在代码运行期间的存储方式。c语言提供了4种,分别是:auto(自动的)、static(静态的)、extern(外部的)、register(寄存器的)。
默认情况下,如果不加存储类别,则该变量是auto类的,该关键字可以省略,其它三个不能省。static的用法是,定义一个局部变量,该变量只进行一次初始化,在程序运行期间一直占用着内存,每次调用完毕都保持本次调用完后得到的值(而auto调用完一次即释放内存,下次调用用从新进行初始化)。extern:一个变量被定义成全局变量,加上该关键字,意思是提醒编译器,该变量是在别的C文件中(即你想再一个C文件中调用另外一个C文件的变量,需用该关键字进行引入)。register:定义一个变量为该存储类型,建议编译器将该变量存放在CUP内部寄存器中,以便该变量频繁调用而提高代码运行速度。注意,它是建议型的,一般用在循环次数多的地方,因为变量一般存放在内存中,每次CUP访问它都得跑到内存去提取,次数多了,影响运行速度。放在内部寄存器就快多了(当然放不放我们不知道,只是建议编译器这么做),这种变量也是用完就释放。
数据类型:C语言提供了三种基本数据类型:char型 int型 float型。
默认情况下,char/int/float是指有符号的,即前面都省略了signed关键字,如果需要定义成无符号型的,需在前面加上不可省略的unsigned关键字。char占一个字节,int占2个字节(在有的环境下是4个字节),float占4个。表示的数据范围也比较明确,char一个字节8位,共256种状态,有符号的最高位表示符号,0为正,1为负,其余7位表示数字位,2的7次方。int型16位 的,一样。float型的数据必须要有小数点,一般float能表示6~7位有效数字。上述的数据类型中,如果范围还不够大,还可以定义成long型,即长整型,占4个字节,而浮点型可以定义成double型,可以表示16~17为小数,当然,它也只占四个字节。
Ⅱ 单片机 定义bit bdata是什么意思
在单片机C语言中,bit是新增的一个关键词,它是用来定义一个“位变量”
bdata是把变量定义到数据RAM的可位寻址区,即51系列的20H~2FH单元中,最后bitflag应该是bit flag(和关键字bit中间有个空格)表示定义一个位变量flag,这个flag变量只能是0或者1。
Ⅲ 51单片机中位地址和位变量是什么意思呢
位地址是指可以对某些寄存器或存储器的某一位直接操作,这时这些寄存器的某一位都有一个地址,就叫位地址。编程时用不到位地址,直接写该位的名称即可,如 C语言编程直接写TR0=1,TR0=0,EA=0等 汇编语言写SET B P1.0 CLR EX0. TR0 EA P1.0 等即是特殊功能寄存器中的某一位,是位变量。
位变量一位二进制变量,如bit A 结果只能 是1或0,当然它是保存在可位寻址的存储器区域
如R0 到 R7中的某一位。
Ⅳ 51单片机有没有位变量
51有位操作指令,自然有位变量。
有些单片机没有为变量,不过可以通过构建位域来实现位操作。或者是直接用C的位运算符实现。
###################################################################
51单片机中有可位寻址区,位变量就是定义在这一存储区。在汇编里要指定地址,C中只要在定义变量的时候使用idata关键字就可以定义了。
Ⅳ STM单片机定义定义标志位变量
是宏定义吧!
比如#define uchar unsigned char
后面的程序就可以用uchar来定义 无符号的字符了
Ⅵ 单片机数据类型
单片机数据类型有bit,sbit,sfr,sfr16都用于单片机的C语言编程。
bit—定义位变量,定义位变量时可以为变量赋值,但不能指定变量的地址。定义格式:bit 变量名=变量值。
sbit—此类型变量只要用于访问可位寻址的特殊功能寄存器中的某个位。定义格式:sbit 变量名=位地址;sbit 变量名=SFR地址^位序号;sbit 变量名=sfr16变量^位序号。
sfr—此类型变量可以访问指定的8位特殊功能寄存器,地址范围为0x80~0xFF。定义格式:sfr 变量名=变量地址。
Ⅶ 单片机(仅有一位的那种)怎么声明位变量
是的,对于C51单片机来说,以下有以下类型变量:
bit a 1位
unsigned char a,或者char a 8位
unsigned short a 或者 short a 16位
unsigned long a或者 long a 32位
unsigned int a 或者 int a 16位,注意,int是与编译器有关的,对于 C51,int等效于short
float 或者 double 对于 51来说,都是一样的,32位。
Ⅷ 为什么对51单片机的I/O口操作要定义位变量
1.51单片机可以进行位寻址
2. reg5x.h中没有预先定义io口的位符号
3.定义位后,方便操作,可以修改一个位的值而不影响同一io口的其它位