欢迎来到天天文库
浏览记录
ID:59207415
大小:964.50 KB
页数:38页
时间:2020-09-26
《第4讲 单片机C51基础及编程ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四讲单片机C51基础及编程C51编程语言简介C51语言的基本语法C51语言的函数C51程序设计实例在单片机应用开发中,软件编程占有非常重要的地位。要求编程人员在短时间内编写出执行效率高、运行可靠的程序代码。同时,由于实际系统的日趋复杂,对程序的可读性、升级与维护以及模块化的要求越来越高,以方便多个工程师协同开发。C51语言是近年来在国内外的51单片机开发中,普遍使用的一种程序设计语言。C51能直接对单片机硬件进行操作,既有高级语言的特点,又有汇编语言的特点,因此在单片机应用的程序设计中,得到非常广泛
2、的使用。C51语言在标准C基础上针对51单片机硬件特点进行扩展,是用于51单片机编程的C语言。C51语言与标准C语言一些差别如下:(1)头文件不同。(2)库函数不同。标准C中不适合于嵌入式控制器系统的库函数,被排除在C51语言之外,如字符屏幕和图形函数。(3)数据类型不同。在C51在标准C的基础上又扩展了4种类型。(4)数据存储类型不同。51单片机存储区可分为内部数据存储区、外部数据存储区以及程序存储区。内部数据存储区可分为3个不同的C51存储类型:data、idata和bdata。外部数据存储区分为
3、2个不同的C51存储类型:xdata和pdata。C51语言提供的code存储类型用来访问程序存储区。4.1C51编程语言简介(5)标准C语言没有处理单片机中断的定义,而C51语言中有专门的中断函数。(6)C51语言与标准C的输入/输出处理不一样。C51中输入/输出是通过8051单片机的串口来完成的,输入/输出指令执行前必须对串行口初始化。(7)程序结构的差异。由于8051单片机的硬件资源有限,它的编译系统不允许太多的程序嵌套。其次,标准C语言所具备的递归特性不被C51语言支持。从数据运算操作、程序控
4、制语句以及函数的使用上来说,C51与标准C几乎没有什么明显差别。如果程序设计者具备了有关标准C语言的编程基础,只要注意C51与标准C不同之处,并熟悉51单片机的硬件结构,就能较快掌握C51编程。44.2.1数据类型4.2C51语言的基本语法表4-2KeilC51支持的数据类型5C51的扩展数据类型(1)位变量bit(2)特殊功能寄存器sfr。特殊功能寄存器分布在片内数据存储区的地址单元80H~FFH之间,“sfr”数据类型占用一个内存单元。利用它可以访问AT89S51单片机内部的所有特殊功能寄存器。(
5、3)特殊功能寄存器sfr16。“sfr16”数据类型占两个内存单元。它用于操作占两个字节的特殊功能寄存器。(4)特殊功能位sbit。sbit—片内特殊功能寄存器的可寻址位。64.2.2数据存储类型一、存储器种类在讨论C51数据类型时,须同时提及它的存储类型,以及它与51单片机存储器结构的关系,因为C51定义的任何数据类型必须以一定的方式,定位在51单片机的某一存储区中,否则没有任何实际意义。51单片机有片内、片外数据存储区,还有程序存储区。内部数据存储区可分为3个不同的数据存储类型:data、idat
6、a和bdata。访问片外数据存储区比访问片内数据存储区慢,因为访问片外数据存储区要通过对数据指针加载地址来间接寻址访问。C51提供两种不同的数据存储类型xdata和pdata来访问片外数据存储区。程序存储区只能读不能写,可能在8051单片机内部或者外部,或外部和内部都有,由8051单片机硬件决定,C51提供了code存储类型来访问程序存储区。78表4-3C51语言存储类型与51单片机存储空间的对应关系下面对表4-3各种存储区作以说明。(1)DATA区。寻址是最快的,应把常使用的变量放在该区,但该区存储
7、空间有限,DATA区除了包含程序变量外,还包含了堆栈和寄存器组。DATA区声明中的存储类型标识符为data,通常指片内RAM128字节的内部数据存储的变量,可直接寻址。声明举例:unsignedchardataa=0;unsignedintdatab[8];chardatac[20];标准变量和用户自声明变量都可存储在DATA区中,只要不超过DATA区的范围即可,由于C51用默认的寄存器组来传递参数,这样DATA区至少失去8字节空间。9(2)BDATA区。DATA中的位寻址区,在该区中声明变量就可进行
8、位寻址。BDATA区声明中的存储类型标识符为bdata,指的是片内RAM可位寻址的16字节存储区(字节地址为20H~2FH)中的128个位。下面是在BDATA区中声明的位变量和使用位变量的例子:unsignedcharbdataa;unsignedintbdatab;sbitc=a^4;if(b^15){……}c=1;C51编译器不允许在BDATA区中声明float和double型变量。10(3)IDATA区。该区使用寄存器作为指针来进行间接寻址,常用来
此文档下载收益归作者所有