C51是为51系列单片机设计的一种C语言,其特点:
结构化语言,代码紧凑——效率可与汇编语言媲美;接近真实语言,程序可读性强——易于调试、维护;库函数丰富,编程工作量小——产品开发周期短;机器级控制能力,功能很强——适合于嵌入式系统开发;与汇编指令无关,易于掌握——在单片机基础上上手快。
image.png
image.png
1. C51的变量
image.png
C51变量定义的四要素:
【存储种类】 数据类型 【存储类型】   变量名
存储种类用于说明变量的作用范围:
1、auto(自动型)——变量的作用范围在定义它的函数体或语句块内。执行结束后,变量所占内存即被释放。
2、extern(外部型) ——在一个源文件中被定义为外部型的变量,在其它源文件中需要通过extern说明方可使用。
3、static(静态型) ——利用static可使变量定义所在的函数或语句块执行结束后,其分配的内存单元继续保留。
4、register(寄存器型) ——目前已不推荐使用。
缺省存储种类为auto (自动)型变量
数据类型用于表示数据存放格式:

image.png
C51扩充的3种数据类型:bit、sfr或sfr16、sbit :
image.png
image.png
image.png
image.png
存储类型体现了变量的存放区域。51系列单片机共有6个存储类型(分布在3个逻辑存储空间中)。

image.png
image.png
变量名可以由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线,变量名长度随编译系统而定。
变量名具有字母大小写的敏感性,如SUM和sum代表不同的变量。
强调:头文件中定义的变量都是大写的,若程序采取小写变量则需要重新定义。

image.png
image.png
2. C51的指针
1)C语言指针的一般定义形式为:数据类型  *指针变量名 [= &被指向变量名];
其中,指针变量指向一个由“数据类型”说明的变量。被指向变量和指针变量都位于C编译器默认的内存区中。
例如:  int a =’A’;
            int *p1= &a;
这表示p1是一个指向int型变量的指针变量,此时p1的值为int型变量a的地址,而a和p1两个变量都位于C编译器默认的内存区中。

2)C51指针的一般定义形式:数据类型 [存储类型1] * [存储类型2] 变量名  [=&被指向变量名];
数据类型——被指向变量的类型,如int型或char型
存储类型1——被指向变量所在的存储区,缺省时由地址赋值关系决定
存储类型2——指针变量所在的存储区,缺省时为编译器默认的存储区
例1 若采用SMALL编译模式,试解释下述定义的含义。
       char xdata a = ‘A’;
          char *ptr = &a;
解:ptr是一个指向char型变量的指针,它本身位于SMALL编译模式默认的data存储区里,此时它指向位于xdata存储区里的char型变量a的地址。
例2:试解释以下指针定义的含义。
        char xdata a = ‘A’;
         char xdata *ptr = &a;
解:ptr是位于data存储区且固定指向xdata存储区的char型变量的指针变量,此时ptr的值为变量a的地址。
例3:试解释以下指针定义的含义。
        char xdata a = ‘A’;
        char xdata *idata ptr = &a;
解:ptr是固定指向xdata存储区的char型变量的指针变量, 它自身存放在idata存储区中,此时ptr指向位于xdata存储区中的char型变量a的地址。

3. 在C51中调用汇编程序
C51程序中调用汇编语言,需要解决三个问题:程序的寻址,main.c中调用的max函数,如何与汇编文件中的相应代码对应起来;参数传递,main.c中传递给max()函数的参数a和b,存放在何处可使汇编程序能够获取到它们的值; 返回值传递,汇编语言计算得到的结果,存放在何处可使C语言程序能够获取到。
1)程序的寻址问题

image.png
2)参数传递问题  
image.png
3)返回值传递问题
image.png
4. C51中嵌入汇编代码
image.png
5. Keil的编译环境 μVision3
Keil是德国Keil Software公司的51单片机开发软件包,包括C编译器、汇编编译器、连接器、库管理及仿真调试器,通过一个windows下的uVisoin3集成开发环境组合起来。
image.png
在uVisoin3可以通过建立工程文件,将多个不同源程序文件组合起来(包括.ASM和.C文件),而Proteus中只能有1个.ASM源程序。
image.png
μVision3的软件界面包括4大组成部分,即菜单工具栏,工程管理窗口,文件窗口和输出窗口。

image.png
μVision3中共有11个下拉菜单。工具栏的位置和数量可以通过设置选定和移动。

image.png
工程管理窗口:工程管理窗口用于管理工程文件目录,它由5个子窗口组成:文件窗口,寄存器窗口,帮助窗口,函数窗口,模版窗口。
image.png
输出窗口:输出窗口用于编译过程中的信息交互作用,由3个子窗口组成:编译窗口,命令窗口,搜寻窗口。

image.png
信息窗口:观察窗口(Watch & Call Stack Windows)输出窗口(Output Windows)存储器窗口(Memory Window)反汇编窗口(Dissambly Window)串行窗口(Serial Window)
image.png
6、μVision3的基本使用方法
建立工程→输入源程序→添加源程序→ 【工程设置】→编译源程序→【动态调试 】→ 运行。
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
7、基本输入输出单元与编程
输出电路:
基本输出元件:发光二极管(Light Emitting Diode)

image.png
输入电路:        
基本输入元件:按钮(Button)或开关(Switch)

image.png
实例:独立按键识别
【要求】采用独立按键方式实现下述功能:开机时LED全熄,然后根据按键动作使相应灯亮,并将亮灯状态保持到按压其它键时为止。

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png