先来简略说说C言语的标识符和要害字。标识符是用来标识源程序中某个目标的姓名的,这些目标可所以 句子、数据类型、函数、变量、数组等等。C言语是大小字灵敏的一种高档言语,假如咱们要界说一个定 时器1,能够写做”Timer1″,假如程序中有”TIMER1″,那么这两个是彻底不同界说的标识符。标识符由字符 串,数字和下划线等组成,留意的是榜首个字符有必要是字母或下划线,如”1Timer”是过错的,编译时便 会有过错提示。有些编译体系专用的标识符是以下划线最初,所以一般不要以下划线最初命名标识符。 标识符在命名时应当简略,含义明晰,这样有助于阅览了解程序。在C51编译器中,只支撑标识符的前 32位为有用标识,一般情况下也满足用了,除非你要写天书:P。 资亦同。在KEIL uVision2中的要害字除了有ANSI C规范的32个要害字外还依据51单片机的特色扩展了相关 的要害字。其实在KEIL uVision2的文本编辑器中编写C程序,体系能够把保存字以不同色彩显现,缺省色彩 为天蓝色。(规范和扩展要害字请看附录一中的附表1-1和附表1-2) 为char,int,short,long,float和double,而在C51编译器中int和short相同,float和double相同,这 里就不列出阐明晰。下面来看看它们的具体界说: |
|||||||||||||||||||||||||||||||||||||||
表4-1 KEIL uVision2 C51编译器所支撑的数据类型 |
|||||||||||||||||||||||||||||||||||||||
1. char字符类型 有符号字符类型signed char,默认值为signed char类型。unsigned char类型用字节中一切的位来标明数 值,所能够表达的数值规模是0~255。signed char类型用字节中最高位字节标明数据的符号,”0″标明正数 ,”1″标明负数,负数用补码标明。所能标明的数值规模是-128~+127。unsigned char常用于处理ASCII字 符或用于处理小于或等于255的整型数。 2. int整型 好了,先停一下吧,咱们来写个小程序看看unsigned char和unsigned int用于延时的不同作用,阐明它们的 长度是不同的,呵,尽管它并没有实践的运用含义,这儿咱们学习它们的用法就行。仍旧用咱们上一课的最 小化体系做试验,不过要加多一个电阻和LED,如图4-1。试验顶用D1的点亮标明正在用unsigned int数值延 时,用D2点亮标明正在用unsigned char数值延时。 |
图4-1 第4课试验用电路
|
咱们把这个项目称为TwoLED,试验程序如下: void main(void) //主函数名 do for (a=0; a<30000; a++); //空循环 for (b=0; b<255; b++) for (a=0; a<30000; a++); //空循环 相同编译烧写,上电运转您就能够看到成果了。很明显D1点亮的时刻善于D2点亮的时刻。程序中的循环延 时时刻并不是很好确认,并不太合适要求准确延时的场合,关于这方面咱们今后也会做评论。这儿有必要要 讲的是,当界说一个变量为特定的数据类型时,在程序运用该变量不该使它的值超越数据类型的值域。 如本例中的变量b不能赋超出0~255的值,如for (b=0; b<255; b++)改为for (b=0; b<256; b++),编译是 能够经过的,但运转时就会有问题呈现,便是说b的值永远都是小于256的,所以无法跳出循环履行下一句 P1_1 = 1,然后形成死循环。同理a的值不该超出0~65535。咱们能够烧片看看试验的运转成果,相同软件 仿真也是能够看到成果的。 3. long长整型 字节中最高位标明数据的符号,”0″标明正数,”1″标明负数。unsigned long标明的数值规模是 0~4294967295。 4. float浮点型 因浮点数的结构较杂乱在今后的章节中再做具体的评论。 5.* 指针型 单元,对不同的处理器长度也不尽相同,在C51中它的长度一般为1~3个字节。指针变量也具有类型,在 今后的课程中有专门一课做讨论,这儿就不多说了。 6. bit位标量 界说位数组。它的值是一个二进制位,不是0便是1,相似一些高档言语中的Boolean类型中的True和 False。 7. sfr特别功用存放器 特别功用存放器。如用sfr P1 = 0x90这一句定P1为P1端口在片内的存放器,在后面的句子中咱们 用以用P1 = 255(对P1端口的一切引脚置高电平)之类的句子来操作特别功用存放器。 8.sfr16 16位特别功用存放器 操作占两个字节的存放器,好定时器T0和T1。 9. sbit可录址位 器中的可寻址位。如从前咱们界说了 统供给的预处理文件,里边已界说好各特别功用存放器的简略姓名,直接引证能够省去一点时刻,我自己 是一向用的。当然您也能够自己写自己的界说文件,用您以为好记的姓名。 关于数据类型转化等相关操作在后面的课程或程序实例中将有所提及。咱们能够用所讲到的数据类型改 写一下这课的实例程序,加深对各类型的知道。 |