单片机C语言编程.ppt
《单片机C语言编程.ppt》由会员分享,可在线阅读,更多相关《单片机C语言编程.ppt(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机C51编程一、C51与标准C的差异1、库函数不同2、头文件不同3、数据类型有一定区别4、增加了存储模式5、增加了中断函数6、输入、输出不同,C51通过串口进行。二、C语言与汇编语言 单片机C语言编程与汇编语言编程的差异:1、用汇编语言编写单片机程序必须要考虑其存储器结构,资源分配是汇编语言编程中的一大负担。而且不同的存储器操作对象寻址方式不同,访问的指令也不同。3、汇编语言编程,子程序调用要考虑现场的保护与恢复,要考虑工作寄存器的分组使用,避免资源冲突。C语言编译系统自动完成这些工作。如MOV,MOVC,MOVX访问的空间不同。2、汇编语言中的指令繁多,功能单一。如单片机中大量的转移类指
2、令在C语言中均由分支程序实现。4、汇编语言编写中的循环程序是通过转移指令重复执行来现实的,C语言则通过循环语句来实现。6、用C语言编写的单片机应用程序:(1)所有操作对象都可以看成变量或常量,没有寻址方式(数据传送由赋值语句实现,所有运算都通过表达式实现)。(2)不用像汇编语言那样须具体组织、分配存储器资源和处理端口数据.(3)子程序调用时,C语言程序的编译系统自动进行现场的保护。(5)C语言语法简单,语句紧凑,容易理解和掌握。(4)在C语言编程中,对数据类型与变量的定义,必须要与单片机的存储结构相关联,否则编译器不能正确地映射定位。5、汇编语言编程中使用大量的算术逻辑运算指令在单片机C语言编
3、程中全部由相应的运算表达式实现。三、C51的数据类型数数 据据 类类 型型长长 度度大大 小小unsigned charunsigned char1 1字节字节0 0255255charchar1 1字节字节-128-128+127+127unsigned intunsigned int2 2字节字节0 06553565535intint2 2字节字节-32768-32768+32767+32767unsigned longunsigned long4 4字节字节0 042949672954294967295longlong4 4字节字节-2147483648-2147483648+21474
4、83647+2147483647floatfloat4 4字节字节1.75494E-381.75494E-383.402823E+383.402823E+38*1 13 3字节字节对象的地址对象的地址bitbit位位0 0或或1 1sfrsfr1 1字节字节0 0255255sfr16sfr162 2字节字节0 06553565535sbitsbit位位0 0或或1 1 1 1、特殊功能寄存器类型:特殊功能寄存器类型:在在C51C51中对特殊功能寄存器的访问必须先用中对特殊功能寄存器的访问必须先用sfrsfr或或sfr16sfr16进行声明。进行声明。sfr P0=0 x80;sfr P0=0
5、 x80;/*P0/*P0口的寄存器地址为口的寄存器地址为0 x80*/0 x80*/两种使用特殊功能寄存器的方法:1)、先定义再使用:2)、包含51单片机的头文件:#include void main(void)void main(void)uchar var1;uchar var1;var1=P1=P1 .while(1);while(1);2 2、位类型、位类型 这也是这也是C51C51中扩充的数据类型,用于访问中扩充的数据类型,用于访问MCS-51MCS-51单片机单片机中的可寻址的位单元。在中的可寻址的位单元。在C51C51中,支持两种位类型:中,支持两种位类型:bitbit型和型和
6、sbitsbit型。它们在内存中都只占一个二进制位,其值可以是型。它们在内存中都只占一个二进制位,其值可以是“1 1”或或“0 0”。bit flags;/*bit flags;/*在在bdatabdata区定义一个位变量区定义一个位变量*/*/sfr P0=0 x80;sfr P0=0 x80;/*/*因因P0P0口的寄存器是可位寻址的口的寄存器是可位寻址的*/sbit P0_0=P00;sbit P0_0=P00;/*/*所以所以P0_0P0_0为为P0P0中的中的P0.0P0.0引脚引脚*/除了以上定义方式外,还可以用除了以上定义方式外,还可以用P0.0P0.0的地址去写,如:的地址去写
7、,如:sbit P0_0=0 x80;sbit P0_0=0 x80;区别:区别:用用bitbit定义的位变量定义的位变量在在C51C51编译器编译时,在不同的时编译器编译时,在不同的时候位地址是可以变化的,候位地址是可以变化的,而用而用sbitsbit定义的位变量定义的位变量必须与必须与5151单单片机的一个可以寻址位单元或可位寻址的字节单元中的某一片机的一个可以寻址位单元或可位寻址的字节单元中的某一位联系在一起,在位联系在一起,在C51C51编译器编译时,其对应的位地址是编译器编译时,其对应的位地址是不可不可变化的。变化的。四、新增存贮类型四、新增存贮类型 变量是在程序运行过程中其值可以改
8、变的量。一个变量是在程序运行过程中其值可以改变的量。一个变量由两部分组成:变量名和变量值。变量由两部分组成:变量名和变量值。在在C51C51中,中,变量在使用前必须对变量进行定义,指出变量在使用前必须对变量进行定义,指出变量的数据类型和存储模式变量的数据类型和存储模式。以便编译系统为它分配。以便编译系统为它分配相应的存储单元。定义的格式如下:相应的存储单元。定义的格式如下:数据类型说明符数据类型说明符 存储器类型存储器类型 变量名变量名1=1=初值初值,变量,变量名名2=2=初值初值;存储器类型存储器类型描描 述述 data data直接寻址的片内直接寻址的片内RAMRAM低低128B128B
9、,访问速度快,访问速度快 bdata bdata片内片内RAMRAM的可位寻址区(的可位寻址区(20H2FH20H2FH),允许字节),允许字节和位混合访问和位混合访问 idata idata间接寻址访问的片内间接寻址访问的片内RAMRAM,允许访问全部片内,允许访问全部片内RAMRAM pdata pdata用用RiRi间接访问的片外间接访问的片外RAMRAM的低的低256B256B xdata xdata用用DPTRDPTR间接访问的片外间接访问的片外RAMRAM,允许访问全部,允许访问全部64k64k片外片外RAMRAM code code程序存储器程序存储器ROM 64kROM 64k
10、空间空间2 2、六种存储器类型:、六种存储器类型:【例例】变量定义存储种类和存储器类型相关情况。变量定义存储种类和存储器类型相关情况。char data varlchar data varl;/*/*在片内在片内RAMRAM低低128B128B定义用直接寻址方定义用直接寻址方式访问的字符型变量式访问的字符型变量var1*/var1*/int idata var2 int idata var2;/*/*在片内在片内RAM256BRAM256B定义用间接寻址方式访定义用间接寻址方式访问的整型变量问的整型变量var2*/var2*/unsigned long data var3unsigned lo
11、ng data var3;/*/*在片内在片内RAM128BRAM128B定义用直接寻定义用直接寻址方式访问的自动无符号长整型变量址方式访问的自动无符号长整型变量var3*/var3*/float xdata var4float xdata var4;/*/*在片外在片外RAM64KBRAM64KB空间定义用间接寻空间定义用间接寻址方式访问的外部实型变量址方式访问的外部实型变量var4*/var4*/int code var5 int code var5;/*/*在在ROMROM空间定义整型变量空间定义整型变量var5*/var5*/unsign char bdata var6unsign c
12、har bdata var6;/*/*在片内在片内RAMRAM位寻址区位寻址区20H2FH20H2FH单元定义可字节处理和位处理的无符号字符型变量单元定义可字节处理和位处理的无符号字符型变量var6*/var6*/五、五、存储模式存储模式 C51C51编译器支持三种存储模式:编译器支持三种存储模式:SMALLSMALL模式、模式、COMPACTCOMPACT模式和模式和LARGELARGE模式。不同的存储模式对变量默认的存储器类模式。不同的存储模式对变量默认的存储器类型不一样。型不一样。(1 1)SMALLSMALL模式。模式。SMALLSMALL模式称为小编译模式,在模式称为小编译模式,在S
13、MA-SMA-LLLL模式下,编译时,函数参数和变量被默认在片内模式下,编译时,函数参数和变量被默认在片内RAMRAM中,中,存储器类型为存储器类型为datadata。(2 2)COMPACTCOMPACT模式。模式。COMPACTCOMPACT模式称为紧凑编译模式,模式称为紧凑编译模式,在在COMPACTCOMPACT模式下,编译时,函数参数和变量被默认在片模式下,编译时,函数参数和变量被默认在片外外RAMRAM的低的低256256字节空间,存储器类型为字节空间,存储器类型为pdatapdata。(3 3)LARGELARGE模式。模式。LARGELARGE模式称为大编译模式,在模式称为大编
14、译模式,在LARGELARGE模式下,编译时函数参数和变量被默认在片外模式下,编译时函数参数和变量被默认在片外RAMRAM的的64K64K字节空间,存储器类型为字节空间,存储器类型为xdataxdata。六、六、绝对地址访问绝对地址访问1.1.使用指针使用指针 采用指针的方法,可实现在采用指针的方法,可实现在C51C51程序中对任意指定的存储器地址进程序中对任意指定的存储器地址进行操作。例如:行操作。例如:#define#define uchar uchar unsigned charunsigned char#define#define uintuint unsigned int unsig
15、ned intvoid test_memory(void)void test_memory(void)uchar uchar idata idata ivar1;ivar1;uchar uchar xdataxdata*xdp;/*xdp;/*定义一个指向定义一个指向xdataxdata存储器空间的指针存储器空间的指针*/char char datadata *dp;/*dp;/*定义一个指向定义一个指向datadata存储器空间的指针存储器空间的指针*/uchar uchar idataidata *idp;/*idp;/*定义一个指向定义一个指向idataidata存储器空间的指针存储器空
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 语言 编程
限制150内