1、函数参数及返回类型都可用bit单片机C语言一》宏定义:1、不带参数:#define标识符常量表达式/*#define是宏定义命令,宏名(标识符)好习惯用大写*/#defineNIL0x802、带参数:/*相当于小函数*/#define宏名(参数表)字符串/*不仅要时行字任串替换还要进行参数的替换,在宏定义时,宏名与带参数的括弧之间不应该加空格,否则将空格以后的字符串都作为替代字符串的一部分,这可是很容易出错的*/如:#defineSQ(a,b)a*b使用:x=12;y=10;area=SQ(x,y);/*则area=12*10=120*/二》文件包含:#include<文件名>或#include"文件名"/*在C中用双引用形式更保险,在C51中常用物是尖括弧形式*/三》条件编译:/*一般源程序中的所有程序行都参加编译,但有时希望对其中一部分内容只在满足一定条件下才进行编译,也就是对一部分内容指定编译的条件。*/#if、#elif、#else、#endif、#ifdef、#ifndef/*选择不同的编译范围,产生不同的代码,提供通用性。*//*如对8051在6MHZ与12MHZ下有*/#ifdefcpu==8051#defineFREQ6/*程序段*/#else#defineFREQ12/*程序段*/#endif/*这样下面的原程序不用做任何修改便可以使用于两种时钟频率的单片机系统*/四》其他:1、#error:捕捉不可预料的编译条件#if(myv!=0&&myv!=1)/*假定其值必为0或1*/#errormyvmustbe1or0/*出错时显示*/#endif2、#pragma:用于在程序中向编译器传送各种编译控制命令#pragma编译命令序列/*例::*/#pragmaDBCDLA#pragmadisable/*禁止中断*/单片机C语言之二_____________________________________________________________________________________一》数据类型:charintlong1:unsinged0~2550~655350~42949672952:signed-128~127-32768~32767-2147483648~2147483647指针:*3字节位标量:sbit特殊功能寄存器:sfr16位特殊功能寄存器:sfr16占2个内存单元,0~65535可寻址位:sbit利用他可访问51单片机的内部RAM中的可寻址位或特殊功能寄存器中的可寻址位sfrP0=0x80;sbitP0_1=P0^1;/*将P0口的口地址定义为80H,*/二》━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━数据存贮类型┃与存贮空间的对应关系━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━data┃直接寻址片内数据存贮区,访速度快bdata┃可位寻址片内数据存贮区,允许位与字节混合访问idata┃间接寻址片内数据存贮区,可访问片内全部RAM地址空间pdata┃分页寻址片外数据存贮区(256字节)由******@R0访问xdata┃片外数据存贮区(64K),由******@DPTR访问code┃代码存贮区(64K),由******@DPTR访问━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━变量的存贮类型定义:chardatavar/*字符变量var被定义为data存贮类型,C51编译器将把该变量定位在51单片机片内数据区存贮区中*/bitbdataflag/*位变量flag被定义为bdata存贮类型,C51编译器将把该变量定位在51单片机片内数据区存贮区(RAM)中的位寻址区:20H--2FH*/三》typedef:重新定义数据类型typedef已有数据类型新的数据类型typedefintword;/*将word定义为整型*/wordi,j;/*将i,j定义为整型*/四》位运算符:━━━━┳━━━━━┳━━━━━┳━━━━━━┳━━━━━━┳━━━━━━~┃&┃|┃^┃<<┃>>━━━━╋━━━━━╋━━━━━╋━━━━━━╋━━━━━━╋━━━━━━按位取反┃按位与┃按位或┃按位异或┃左移┃右移━━━━┻━━━━━┻━━━━━┻━━━━━━┻━━━━━━┻━━━━━━对移位:如<<,a<<2,即为将二进制的a左移两位,若a=0x8f,即10001111,a=a<<2,将导致a=0x3c(00111100),右边补零。五》条件运算符:逻辑表达式?表达式1:表达式2六》指针与地址运算符:*取内容&取地址七》强制类型转换:(类型)=表达
单片机C语言补充 来自淘豆网m.daumloan.com转载请标明出处.