单片机C语言九个重要的知识点总结

一、概述


1、结合8051介绍单片机C语言的优越性:
   ·无须懂得单片机的具体硬件,也能够编出符合硬件实际的专业水平的程序;
   ·不懂得单片机的指令集,也能够编写完美的单片机程序;
   ·不同函数的数据实行覆盖,有效利用片上有限的RAM空间;
   ·提供auto、static、const等存储类型和专门针对8051单片机的data、idata、pdata、xdata、code等存储类型,自动为变量合理地分配地址;
   ·C语言提供复杂的数据类型(数组、结构、联合、枚举、指针等),极大地增强了程序处理能力和灵活性;
   ·提供small、compact、large等编译模式,以适应片上存储器的大小;
   ·中断服务程序的现场保护和恢复,中断向量表的填写,是直接与单片机相关的,都由C编译器代办;
   ·程序具有坚固性:数据被破坏是导致程序运行异常的重要因素。C语言对数据进行了许多专业性的处理,避免了运行中间非异步的破坏
   ·提供常用的标准函数库,以供用户直接使用;
   ·有严格的句法检查,错误很少,可容易地在高级语言的水平上迅速地被排掉;
   ·可方便地接受多种实用程序的服务:如片上资源的初始化有专门的实用程序自动生成;再如,有实时多任务操作系统可调度多道任务,简化用户编程,提高运行的安全性等等。
   ·头文件中定义宏、说明复杂数据类型和函数原型,有利于程序的移植和支持单片机的系列化产品的开发;
2、HEX文件
  建立了第一个单片机C语言项目,但为了让编译好的程序能通过编程器写入51芯 片中,要先用编译器生成HEX文件
3、C 编译器所支持的注释语句:   一种是以“//”符号开始的语句,符号之后 的语句都被视为注释,直到有回车换行。另一种是在“/*”和“*/”符号之内的为注释。注 释不会被 C 编译器所编译。
4、main函数:
   一个 C 应用程序中应有一个 main 主函数,main 函数能调用别的功能函数,但其它功能函数不允许调用 main 函数。不论 main 函数放在程序中的那个位置, 总是先被执行。
5、最小系统
   其中加了一个电阻和一个 LED,用以显示它的状态,晶体震荡器能根据自己的情况使用, 一般实验板上是用 11.0592MHz 或 12MHz,使用前者的好外是能产生标准的串行口波特率,后 者则一个机器周期为 1 微秒,便于做精确定时。

二、C51常量


1、常量数据类型说明:
   (1)整型常量能表示为十进制如 123,0,-89 等。十六进制则以 0x 开头如 0x34,-0x3B 等。长整型就在数字后面加字母 L,如 104L,034L,0xF340 等。
   (2)浮点型常量可分为 十进 制和指数表示形式。指数表 示形式为[±]数字[.数字]e[±]数字,[]中的内容为可选项,其中内容根据具体情 况可有可无,但其余部分必须有,如125e3,7e9,-3.0e-3。
   (3)字符型常量是单引号内的字符,如‘a’,‘d’等,不能显示的控制字符,能 在该字符前面加一个反斜杠“\”组成专用转义字符。常用转义字符表请看表

转义字符 含义 ASCII 码(16/10 进制)
\o 空字符(NULL) 00H/0
\n 换行符(LF) 0AH/10
\r 回车符(CR) 0DH/13
\t 水平制表符(HT) 09H/9
\b 退格符(BS) 08H/8
\f 换页符(FF) 0CH/12
\' 单引号 27H/39

\" 双引号 22H/34
\\ 反斜杠 5CH/92

  (4)字符串型常量由双引号内的字符组成,如“test”,“OK”等。当引号内的没有字 符时,为空字符串。在使用特殊字符时同样要使用转义字符如双引号。在 C 中字符 串常量是做为字符类型数组来处理的,在存储字符串时系统会在字符串尾部加上\o 转义字符以作为该字符串的结束符。字符串常量“A”和字符常量‘A’是不一样的, 前者在存储时多占用一个字节的字间。
   (5)位标量,它的值是一个二进制。
2、应用
  常量可用在不必改变值的场合,如固定的数据表,字库等。常量的定义方式有几种,下面来加以说明。
  #difine False 0x0;//用预定义语句能定义常量
  #difine True 0x1;//这里定义 False 为 0,True 为 1
  //在程序中用到 False 编译时自动用 0 替换,同理 True 替换为 1
  unsigned int code a=100;//这一句用 code 把 a 定义在程序存储器中并赋值
  const unsigned int c=100;//用 const 定义 c 为无符号 int 常量并赋值 以上两句它们的值都保存在程序存储器中,而程序存储器在运行中是不允许被修改的,所以如果在这两句后面用了类似 a=110,a++这样的赋值语句,编译时将会出错。

三、C51变量


1、变量格式
  [存储种类] 数据类型 [存储器类型] 变量名表
  在定义格式中除了数据类型和变量名表是必要的,其它都是可选项。
2、存储种类    
  存储种类有四种:自动(auto),外部(extern),静态(static)和寄存器(register),缺省类型为自动(auto)。
(1)static(静态局部)变量
   在程序整个运行期间都不会释放内存。如果定义局部变量的时候不赋值,则编译的时候自动赋值为0。而对于自动变量而言,定义的时候不赋值,则是一个不确定的值。其他函数不能引用。
(2)用extern声明外部变量
   一个程序能由多个源程序文件组成。如果一个程序中需要引用另外一个文件中已经定义的外部变量,就需要使用extern来声明。
    例: 一个文件中:   int abc;
       另外一个文件中: extern abc;
3、数据类型
(1)数据类型

数据类型

长    度

值    域

unsigned  char

单字节

0~255

signed  char

单字节

-128~+127

unsigned  int

双字节

0~65535

signed  int

双字节

-32768~+32767

unsigned  long

四字节

0~4294967295

signed  long

四字节

-2147483648~+2147483647

float

四字节

±1.175494E-38~±3.402823E+38

*

1~3 字节

对象的地址

bit

0 或 1

你可能感兴趣的:(单片机,c语言,嵌入式硬件)