一、数据类型

  在这里插入图片描述

二、寄存器

  在这里插入图片描述

   程序代码表示:
     P0= 0xFE;
     P0_1 = 0;

三、C51的sfr、sbit

   sfr(special function register):特殊功能寄存器声明

     例:sfr P0 = 0x80;
     声明P0口寄存器,物理地址为0x80

   sbit(special bit):特殊位声明

     例:sbit P0_1 = 0x81; 或 sbit P0_1 = P0^1;
     声明P0寄存器的第1位

   可位寻址/不可位寻址:

     在单片机系统中,操作任意寄存器或者某一位的数据时,必须给出其物理地址,又因为一个寄存器里有8位,所以位的数量是寄存器数量的8倍,单片机无法对所有位进行编码,故每8个寄存器中,只有一个是可以位寻址的。对不可位寻址的寄存器,若要只操作其中一位而不影响其它位时,可用“&=”、“|=”、“^=”的方法进行位操作

四、延时函数

   1、使用ISP生成延时函数

    在这里插入图片描述

     要注意配置。

   2、根据对应MCU生成的延时函数封装成带参函数。

		void Delay(unsigned int ms)                //@12.000MHz
		{
		        unsigned char data i, j;
		        while(ms--)
		        {
		                i = 2;
		                j = 239;
		                do
		                {
		                        while (--j);
		                } while (--i);
		        }
		}

五、模块化编程

   传统方式编程:

     所有的函数均放在main.c里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路

   模块化编程:

     把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#include "XXX.h"文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移植性等

   模块化编框图

Delay.h

#ifndef __DELAY_H__
#define __DELAY_H__

void Delay(unsigned int xms);

#endif

Delay.c

void Delay(unsigned int xms)
{
    unsigned char i, j;
    while(xms--)
    {
        i = 2;
        j = 239;
        do
        {
            while (--j);
        } while (--i);
    }
}

main.c

#include "Delay.h"
void main()
{
    Delay(10);
}

     注意事项:
     .c文件:函数、变量的定义
     .h文件:可被外部调用的函数、变量的声明

   任何自定义的变量、函数在调用前必须有定义或声明(同一个.c)
   使用到的自定义函数的.c文件必须添加到工程参与编译
   使用到的.h文件必须要放在编译器可寻找到的地方(工程文件夹根目录、安装目录、自定义)

   C预编译

     C语言的预编译以#开头,作用是在真正的编译开始之前,对代码做一些处理(预编译)
    在这里插入图片描述
     此外还有#ifdef,#if,#else,#elif,#undef等

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐