您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 述职报告 > 03MCS-51单片机C语言程序设计
--以MCS-51单片机为例讲解通信工程学院自动化系主讲人:张志成2020/6/13吉林大学通信工程学院Page2课程安排第一章MCS-51单片机概述第二章MCS-51单片机的硬件结构第三章单片机C语言程序设计第四章MCS-51单片机的中断系统第五章MCS-51单片机的定时器/计数器第六章MCS-51单片机的串行通信第七章MCS-51单片机的外围器件及扩展2020/6/13吉林大学通信工程学院Page3第三章单片机C语言程序设计3.1C语言与MCS-51单片机3.2C51的数据类型与运算3.3C51流程控制语句3.4C51构造数据类型3.5C51函数3.6模块化程序设计2020/6/13吉林大学通信工程学院Page43.1C语言与MCS-51单片机一、MCS-51的编程语言四种语言支持MCS-51单片机:BASIC、PL/M、汇编语言和C语言。汇编语言:用汇编程序设计MCS–51系列单片机应用程序时,必须要考虑其存储器结构,尤其必须考虑其片内数据存储器与特殊功能寄存器正确、合理的使用以及按实际地址处理端口数据。C语言:C语言是一种源于编写UNIX操作系统的语言,是一种结构化语言,可产生紧凑代码。2020/6/13吉林大学通信工程学院Page5与汇编语言相比,C语言有如下优点:对单片机指令系统不要求了解,仅要求对8051存储器结构有初步了解;寄存器的分配,不同存储器的寻址及数据类型等细节可由编译器管理;程序有规范的结构,分为不同的函数,使程序结构化;更符合人们的思考习惯;改善了程序的可读性;编程及程序调试时间显著缩短,从而提高效率;提供的库包含许多标准子程序,具有较强数据处理能力;很好的结构性和模块化更容易阅读和维护,而且由于有更好的可移植性很多处理器支持C编译器。2020/6/13吉林大学通信工程学院Page6二、C51编译器用C语言编写的应用程序必须经单片机的C语言编译器(简称C51),转换生成单片机可执行的代码程序。支持MCS–51系列单片机的C语言编译器有很多种。如:AmericanAutomationIARAvocetDunfieldSharewareBso/TaskingKEIL/Franklin2020/6/13吉林大学通信工程学院Page7三、C51程序结构C51源程序大体上是一个函数定义的集合,集合中仅有一个名为main的主函数。主函数是程序的入口,主函数中所有语句执行完毕,则程序执行完成。2020/6/13吉林大学通信工程学院Page8函数定义由类型,函数名,参数表和函数体组成。格式如下:类型函数名(参数表)参数说明;{数据说明部分;执行语句部分;}2020/6/13吉林大学通信工程学院Page9C51程序结构说明:1)C语言是由函数构成的。一个C源程序至少包含一个函数,也可以包含一个main函数和若干其他函数。函数是C程序的基本单位。2)函数分为2大类:一类是库函数,一类是用户自定义函数。库函数是C51在库文件中已定义的函数,其函数说明在其头文件中。用户函数是用户自己定义,自己调用的一类函数。2020/6/13吉林大学通信工程学院Page103)函数由2部分组成:函数说明部分:它包括函数名,函数类型,函数属性,函数参数名和形式参数类型。一个函数名后面必须跟一个(),函数参数可以没有。函数体部分:函数说明部分下面的大括号内的内容。函数体一般包括:变量定义和执行部分(由若干语句组成)2020/6/13吉林大学通信工程学院Page114)一个C51程序总是从main函数开始执行的,而不论main函数在整个程序中的位置如何。5)每个语句和数据定义的最后必须有一个分号。6)C语言本身没有输入/输出语句,输入和输出操作是有库函数scanf和printf等函数来完成的。7)可以用/*~~~*/对C程序中的任何部分作注释。2020/6/13吉林大学通信工程学院Page12C51程序开发过程C51源程序是一个ASCII文件,可以用任何标准的ASCII文件编辑器来编写,如:写字板,记事本等。C51程序机构与一般C语言没有什么差别,程序的书写格式自由度高,灵活性强,有较大的任意性。2020/6/13吉林大学通信工程学院Page13要点如下:1)一般情况下,每个语句占用一行。2)不同结构层次的语句,从不同的起始位置开始,即在同一结构层次中的语句,缩进同样的字数。3)表示结构层次的大括号通常写在该结构语句第一字母的下方,与机构化语句对齐,并占用一行。2020/6/13吉林大学通信工程学院Page14系统库C51源程序C51编译器EPROM编程器链接列表文件浮动目标码模块绝对定位目标码文件用户库硬件仿真器映像文件2020/6/13吉林大学通信工程学院Page15C51与标准C语言的区别C51的语法规定、程序结构及程序设计方法都与标准的C语言程序设计相同,但C51程序与标准的C程序在以下几个方面不一样:(1)C51中定义的库函数和标准C语言定义的库函数不同。标准的C语言定义的库函数是按通用微型计算机来定义的,而C51中的库函数是按MCS-51单片机相应情况来定义的;(2)C51中的数据类型与标准C的数据类型也有一定的区别,在C51中还增加了几种针对MCS-51单片机特有的数据类型;2020/6/13吉林大学通信工程学院Page16(3)C51变量的存储模式与标准C中变量的存储模式不一样,C51中变量的存储模式是与MCS-51单片机的存储器紧密相关;(4)C51与标准C的输入输出处理不一样,C51中的输入输出是通过MCS-51串行口来完成的,输入输出指令执行前必须要对串行口进行初始化;(5)C51与标准C在函数使用方面也有一定的区别,C51中有专门的中断函数。2020/6/13吉林大学通信工程学院Page173.2C51的数据类型与运算一、数据与数据类型数据:具有一定各式的数字或数值叫做数据。数据时计算机操作的对象。数据类型:数据的不同各式叫做数据类型。数据结构:数据按一定的数据类型进行的排列、组合及架构称为数据结构。2020/6/13吉林大学通信工程学院Page18C51数据类型分类数据类型基本类型构造类型指针类型空类型位型(bit)字符型(char)整型(int)长整型(long)浮点型(float)双精度浮点型(double)数组类型(array)结构体类型(struct)共用体(union)枚举(enum)2020/6/13吉林大学通信工程学院Page19KEILC51的数据类型数据类型长度(bit)长度(byte)值域bit110,1unsignedchar810~255signedchar81–128~127unsignedint1620~65535signedint162–32768~32767unsignedlong3240~4294967295signedlong324–2147483648~2147483647float324±1.176E–38~±3.40E+38(6位数字)double648±1.176E–38~±3.40E+38(10位数字)一般指针243存储空间0~655352020/6/13吉林大学通信工程学院Page20二、常量与变量常量:在程序运行的过程中,其值不能改变的量称为常量。变量:在程序运行的过程中,其值可以改变的量称为变量。一个变量主要由两部分构成——一个是变量名,一个是变量值。每个变量都有一个变量名,在内存中占据一定的存储单元(地址),并在该内存单元中存放该变量的值。2020/6/13吉林大学通信工程学院Page21C51数据在MCS-51中的存储方式(1)位变量(bit):变量的类型是位,位变量的值可以是1(true)或0(false)。与MCS-51硬件特性操作有关的可以定义成位变量必须定位在MCS-51单片机片内RAM的位寻址空间中。(2)字符变量(char):字符变量的长度为1byte即8位。这很合适MCS-51单片机,因为MCS-51单片机每次可处理8位数据。对于无符号变量(unsignedchar)的值域范围是0~255。对于有符号字符变量(signedchar),最具有重要意义的位是最高位上的符号标志位(msb)。此位为1代表“负”,为0代表“正”。有符号字符变量和无符号字符变量在表示0~127的数值时,其含义是一样的,都是0~0x7F。负数一般用补码表示。2020/6/13吉林大学通信工程学院Page22(3)整型变量(int):整型变量的长度为16位。MCS-51系列单片机将int型变量的高位字节数存放在低地址字节中,低位字节数存放在高地址字节中。可直接使用几种专用的机器指令来完成多字节的加、减、乘、除运算。整型变量值0x1234以下图所示的方式存放在内存中。…0x120x34…地址+0+12020/6/13吉林大学通信工程学院Page23(4)长整型变量(long):长整型变量的长度是32位,占用4字节(Byte),其它方面与整型变量(int)相似。长整型变量值0x12345678以下图所示的方式存放在内存中。0x120x340x560x78….+0+1+2+3地址2020/6/13吉林大学通信工程学院Page24(5)浮点型变量(float):浮点型变量为32位,占4个字节,许多复杂的数学表达式都采用浮点变量数据类型。应用符号位表示数的符号,用阶码和尾数表示数的大小。在编程时,如果只强调运算速度而不进行负数运算时,最好采用无符号(unsigned)格式。无符号字符类型的使用:无论何时,应尽可能使用无符号字符变量,因为它能直接被MCS-51所接受。基于同样的原因,也应尽量使用位变量。有符号字符变量虽然也只占用一个字节,但需要进行额外的操作来进行测试代码的符号位。这无疑会降低代码效率。2020/6/13吉林大学通信工程学院Page25在编程时,为了书写方便,经常用简化的缩写形式来定义数据类型。其方法是在源程序开头使用#define语句自定义简化的类型标识符。例如:#defineucharunsignedchar#defineuintunsignedint这样,在编程中,就可以用uchar代替unsignedchar,用uint代替unsignedint来定义变量。2020/6/13吉林大学通信工程学院Page26三、C51数据的存储类型与MCS-51存储器结构KEILC51完全支持MCS-51单片机的硬件结构,可以完全访问MCS-51硬件系统的所有部分。该编译器通过将变量、常量定义成不同的存储类型(data,bdata,idata,pdata,xdata,code)的方法,将他们定义在不同的存储区中。2020/6/13吉林大学通信工程学院Page272020/6/13吉林大学通信工程学院Page28C51存储类型与MCS-51存储空间的对应关系存储类型与存储空间的对应关系data直接寻址片内数据存储区,访问速度快(128字节)bdata可位寻址片内数据存储区,允许位与字节混合访问(16字节)idata间接寻址片内数据存储区,可访问片内全部RAM地址空间(256字节)pdata分页寻址片外数据存储区(256字节)由MOV@Ri访问(i=0,1)xdata片外数据存储区(64KB)由MOVX@DPTR访问code程序存储器64KB空间,由MOVC@DPTR访问2020/6/13吉林大学通信工程学院Page29C51存储类型及其数据长度和值域存储类型长度(bit)长度(byte)值域范围data810~255idata810~255pdata810~255xdata1620~65535code1620~655352020/6/13吉林大学通信工程学院Page30带存储类型的变量的定义的一般格式为数据类型存储类型变量名带存储类型的变量定义举例:chardatavar1;bitbdataflags;floatidatax,y,z;unsignedintpdatavar2;unsign
本文标题:03MCS-51单片机C语言程序设计
链接地址:https://www.777doc.com/doc-5856401 .html