C51语言基本语法与标准C相同,是在标准C的基础上进行适合8051内核单片机硬件的扩展。
C51语言与标准C语言一些差别如下:
(1)库函数不同。标准C中不适合于嵌入式控制器系统的库函数,被排除在C51语言之外,如字符屏幕和图形函数。有些库函数必须针对8051的硬件特点来做出相应的开发。
(2)数据类型有一定区别。在C51中增加几种8051单片机的数据类型,在标准C的基础上又扩展了4种类型。例如,8051单片机包含位操作空间和丰富的位操作指令,因此,C51语言与标准C语言相比增加了位类型。
(3)C51语言变量存储模式与标准C语言中变量存储模式数据不一样。标准C最初是为通用计算机设计的,在通用计算机中只有一个程序和数据统一寻址的内存空间,而C51语言中变量的存储模式与8051单片机的各种存储器区紧密相关。
(4)数据存储类型不同。8051存储区可分为内部数据存储区、外部数据存储区以及程序存储区。
①内部数据存储区可分为3个不同的C51存储类型:data、idata和bdata。
②外部数据存储区分为2个不同的C51存储类型:xdata和pdata。
③程序存储区只能读不能写,可能在8051内部或者在外部,C51语言提供的code存储类型用来访问程序存储区。
(5)标准C语言没有处理单片机中断的定义,而C51语言中有专门的中断函数。
(6)头文件不同。C51语言头文件必须把8051单片机内部的外设硬件资源(如定时器、中断、I/O等)相应的特殊功能寄存器写入到头文件内,而标准C不用。
(7)程序结构的差异。由于8051单片机的硬件资源有限,它的编译系统不允许太多的程序嵌套。