先来简单说说C言语的标识符和关键字。 标识符是用来标识源程序中某个对象的名字的, 这些对象可以是语句、数据类型、函数、变量、数组等等。 C言语是大小字敏感的一种高级言语, 如果我们要定义一个定时器1, 可以写做“Timer1”, 那么这两个是完全不同定义的标识符。 标识符由字符串, 有些编译零碎专用的标识符是以下划线开头, 所以一般不要以下划线开头命名标识符。 这样有助于阅读理解程序。 在C51编译器中,   关键字则是编程言语保存的特殊标识符, 它们具有固定名称和含义, 在程序编写中不允许标识符与关键字相同。 在KEILuVision2中的关键字除了有ANSIC标准的32个关键字外还根据51单片机的特点扩展了相关的关键字(比如for, while等标准的还有sbit, code, interrupt等扩展的, 具体列表可以在网上查到)。 零碎可以把保存字以不同颜色显示, 缺省颜色为天蓝色。   char类型的长度是一个字节, 通常用于定义处置字符数据的变量或常量。 分无符号字符类型unsignedchar和有符号字符类型signedchar, 默认值为signedchar类型。 所可以表达的数值范围是0~255。 signedchar类型用字节中最高位字节表示数据的符号, “0”表示正数, 正数用补码表示。   ????牟孤胗朐?胂嗤??负二进制数的补码等于它的绝对值按位取反后加1。   int整型长度为两个字节, 用于存放一个双字节数据。 分有符号int整型数signedint和无符号整型数unsignedint, 默认值为signedint类型。 signedint表示的数值范围是-32768~+32767, 字节中最高位表示数据的符号, “1”表示正数。   float浮点型在十进制中具有7位有效数字, 占用四个字节。   5.指针型  指针型自身就是一个变量, 在C51中它的长度一般为1~3个字节。 指针变量也具有类型,   bit位标量是C51编译器的一种扩大数据类型, 应用它可定义一个位标量, 不是0就是1,   7.sfr特殊功能寄存器  sfr也是一种扩大数据类型, 应用它可以访问51单片机内部的所有特殊功能寄存器。 值域为0~65535。 所不同的是它用于操作占两个字节的寄存器, 如定时器T0和T1。 应用它可以访问芯片内部的RAM中的可寻址位或特殊功能寄存器中的可寻址位。 因P1端口的寄存器是可位寻址的, 同样我们可以用P1. 1的地址去写, 1引脚进行读写操作了。 h, AT89X51. h), 直接援用可以省去一点时间, 当然你也可以自己写自己的定义文件, 加深了解一下C51的程序构造。 #####include<AT89X51. 如P1口定义为P1  对应硬件电路图如下:  程序中的花样数据可以自以去定义, 因这里我们的LED要AT89C51的P1引脚为低电平才会点亮, 对应连接的LED才会被点亮, P1口的八个引脚刚好对应P1口特殊寄存器的八个二进位, 如向P1口定数据0xFE, 转成二进制就是11111110, 如此类推, 大家不难算出自己想要做的效果了。 不要超过变量类型的值域就行了。 也没关系, 第一句的#include跟C言语里面的援用是一样的, 所以P1可以直接运用不会出错啦。 do-while循环保证单片机不断循环任务。   下面我们把程序换一种方式写, 以加深对寄存器的理解。