第三章 单片机C51程序设计_第1页
第三章 单片机C51程序设计_第2页
第三章 单片机C51程序设计_第3页
第三章 单片机C51程序设计_第4页
第三章 单片机C51程序设计_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章单片机C51程序设计,本章要点,了解KeilC51编译器的功能掌握C51的数据类型及变量定义掌握KeilC51编译环境的使用方法单片机常用的编程语言有汇编语言和C语言。C语言的结构性、可读性和可维护性好,已成为单片机应用系统开发的主流语言。支持MCS-51用C语言编程的编译器主要有两种:1)FranklinC51编译器2)KeilC51编译器,简称C51。其中:C51是专为MCS-51开发的一种高性能的C编译器,本章内容,C51程序结构C51的数据类型存储器类型及存储区C51对特殊功能寄存器的定义KeilC5指针与函数绝对地址访问宏定义与C51常用的头文件单片机的IO口编程,3.1C51

2、程序结构,C51程序结构与一般的C程序没有差别。C51源程序必须包含一个main()函数C51源程序文件,还可以包含若干个其他函数C51程序必须包含C51的库文件如果使用中断,需要单独编写中断函数如果使用中断、定时器和串口等外设或特殊功能模块,一般要先进行初始化设置主函数中,while(1)是必须的。,3.1C51程序结构,预处理命令:#include/全程变量定义/函数声明/函数定义charfunl()/函数定义/函数体/中断函数定义void函数名()interruptx/函数体,#includevoidmain()/主函数/局部变量定义/单片机寄存器的初始化函数while(1)/主函数体,

3、关于While(1)是单片机程序必须的部分,C51对标准ANSIC的扩展,C51除ANSIC标准的32个关键字之外,C51还扩展以下的关键字:_at_、sfr16、alien、sfridata、bdata、pdatacode、bit、sbit、interrupt,3.2C51的数据类型,表3-3存储器类型关键字,3.3存储器类型及存储区,1.DATA段unsignedchardatasys=0;unsignedintdataunit_id2;2.BDATA段unsignedcharbdatastatus_byte;unsignedintbdatastatus_word;3.IDATA段unsi

4、gnedcharidatasystem_status=0;unsignedintidataunit_id2;,3.3存储器类型及存储区,4.PDATA和XDATA段unsignedcharxdatasystem_status=0;unsignedintpdataunit_id2;charxdatainp_string16;floatpdataoutp_value;5.CODE段unsignedintcodeunit_id2=1234;,存储模式指定缺省类型,这个模式选择是在Keil开发环境中设置的,3.4C51对特殊功能寄存器(SFR)的定义,C51编译器使用sfr与sfr16两个关键词,将这

5、些特殊功能寄存器的名字与其绝对地址联系起来;将单片机的硬件与C语言编程结合起来。,1.使用“sfr”关键字定义SFR,特殊功能寄存器C51定义的一般语法格式如下:sfrname=intconstant【例3-1】使用“sfr”关键字定义SFRsfrSCON=0 x98;/声明SCON为串口控制器,地址为0 x98sfrP0=0 x80;/声明P0为特殊功能寄存器,地址为0 x80/声明TMOD为定时器器的模式寄存器,地址为0 x89sfrTMOD=0 x89;sfrPSW=0 xD0;/声明PSW为特殊功能寄存器,地址为0 xD0,这些寄存器,Keil提供的头文件默认都定义好,添加头文件REG

6、X51.H,图3-1加入REGX51.H的例子,2.使用“sbit”关键字定义SFR的每一位,语法格式如下:sbitbitname=sfrnameintconstant;【例3-2】使用“sbit”关键字定义SFR的每一位sfrPSW=0 xD0;/定义PSW寄存器地址为DOHsbitOV=PSW2;/定义0V位为PSW.2,地址为D2HsbitP2_7=P27;/定义P2.7位为P2_7,3.5KeilC51指针与函数,1.通用指针2.存储器指针3.KeilC51函数,1.通用指针,通用指针的声明和使用均与标准C相同,不过同时还可以说明指针的存储类型。如:char*s;/*字符指针*/int

7、*numptr;/*整型指针*/long*state;/*长整型指针*/通用指针总是需要三个字节来存储:第一个字节表示存储器类型,第二个字节是指针的高字节,第三个字节是指针的低字节。,2.存储器指针,存储器指针或类型确定的指针在定义时包括一个存储器类型说明,并且总是指向此说明的特定存储器空间。例如:chardata*str;/*str指向data区中char型数据*/intxdata*pow;/*pow指向外部RAM的int型整数*/。,3.KeilC51函数,格式:函数类型函数名(形式参数)reentrant函数的格式与标准C语言相同,3.6绝对地址访问,使用“include”语句即可使用其

8、中定义的宏来访问绝对地址。该文件中实际只定义了几个宏,以确定各存储空间的绝对地址,使用方法如下:1.绝对宏包括:CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD。例如:rval=CBYTE0 x0002;/指向程序存贮器的0002h地址rval=XWORD0 x0002;/指向外RAM的0004h地址,3.6绝对地址访问,2._at_关键字直接在数据定义后加上_at_const即可例如:idatastructlinklist_at_0 x40;/指定list结构从40h开始。xdatachartext25b_at_0 xE000;/指定text数组

9、从0E000H开始注意:(1)绝对变量不能被初使化;(2)bit型函数及变量不能用_at_指定。,3.7宏定义与C51中常用的头文件,C51中常用的头文件通常有reg5l.h、reg52.h、math.h、ctype.h、stdio.h、stdlib.h、absacc.h、intrins.h等。常用的却只有reg5l.h或reg52.h,math.h。例如:#include#include,3.7宏定义与C51中常用的头文件,reg5l.h和reg52.h是定义51单片机或52单片机特殊功能寄存器和位寄存器的,这两个头文件中大部分内容是一样的,52单片机比51单片机多一个定时器T2,因此,re

10、g52.h中也就比reg5l.h中多几行定义T2寄存器的内容。math.h是定义常用数学运算,比如求绝对值、求方根、求正弦和余弦等,该头文件中包含有各种数学运算函数,当我们需要使用时可以直接调用它的内部函数。平时常用如下头文件#include#include,3.8C语言的数制与常用运算符,1.C语言的数制计算机中常用的数制有三种十进制数是我们最熟悉的一种数制,基数为10,逢十进一。二进制数是计算机内的基本数制,其主要特点是:任何二进制数都只由0和1两个数码组成,其基数是2。进位规则是“逢二进一”。十六进制数是微型计算机软件编程时常采用的一种数制其主要特点:基数是16,“逢十六进一”。2.常用

11、的C语言运算符与标准C相同,表3-5常用的C语言的运算符,3.9C51的流程控制语句,1.分支结构选择语句ifswitch/case语句2.循环语句while语句do-while语句for循环语句,3.10单片机的I/O口编程语句介绍(重点),51系列单片机共有四个8位并行I/O口,分别是P0、P1、P2、P3。一条编程语句即可以操作单个引脚,也可以按字节来操作8个引脚。数字电路中只有两种电平特性,即高电平和低电平,因此单片机的引脚只有0、1两种逻辑状态。逻辑“0”的电压值是0V,逻辑“1”的电压值是5V。因为P1P3口内部有上拉电阻,所以引脚在没有外围电路时读时,单片机读端口的值是逻辑“1”

12、。,表3-6C51读写单片机的I/O端口,3.11简单控制单片机引脚输出(实训二),1.实训题目:简单发光二极管流水灯程序2.实训内容练习写单片机的I/O口编程;理解如何编程发出逻辑信息,并控制外围电路;程序1:8个发光二极管L1L8分别接在单片机的P1.0P1.7接口,程序2:LED跑马灯,利用for语句编辑一个的延时函数,并使用该延时函数让第一个发光二极管亮灭闪动。,程序3:LED移位显示,下面程序可以使8个发光二极管动起来,点亮顺序为P1.0P1.1P1.2P1.3P1.7,并重复循环。,编程方法同样:编程使单片机引脚输出“0”、“1”逻辑电平。,3.12使用C语言高级语句控制引脚输出,

13、1.实训题目:发光二极管流水灯程序2.实训内容本程序主要练习写单片机的I/O口编程,将C语言的判断、循环语句与引脚输出结合起来。,3.13KeiluVision5集成开发编程环境使用,实际操作演示,3.14KeilC51编译器使用及程序下载,1.实训题目:控制LED灯闪烁2.实训目的:熟悉KeilC51编译器的使用方法3.实训原理电路图如图2-6所示。将电源最小系统板、发光二极管板用杜邦线连接起来。发光二极管使用单片机的P1.0引脚来控制。当控制信号为低电平时(逻辑0)发光二极管亮,控制信号为高电平(逻辑1)时发光二极熄灭。,思考与练习,1、C51编程与ANSIC编程主要有什么区别?2、51单片机能直接进行处理的C51数据类型有哪些?3、简述C51存储类型与51单片机存储空间的对应关系。4、C51中51单片机的特殊功能寄存器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论