(单片机原理及接口技术)第8章单片机C程序设计及应用.ppt

(单片机原理及接口技术)第8章单片机C程序设计及应用.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 单片机C程序设计及应用    8.1 单片机C51程序设计 8.1.1 单片机C程序的基本概念   目前仍在使用的单片机开发设计语言大致有两类:汇编语言和C语言。C语言由于其结构化、移植性好和高效性的特点,是进行单片机开发的一种利器。C语言是一种源于编写UNIX操作系统的语言,与汇编语言相比,有以下优点:   (1) 不需要了解51单片机的指令系统,仅仅要求初步了解存储器结构。   (2) 程序有规范的结构,可分为不同的函数,使程序结构化。   (3) 程序可读性好。   (4) 提供很多标准库函数,数据处理能力强。   (5) 程序易于做到模块化,移植性好。 8.1.2 单片机C程序的基本结构   C语言是一种通用性很强的结构化程序设计语言。从程序流程的角度来看,单片机C程序可以分为3种基本结构:顺序结构、选择结构和循环结构。这3种基本结构可以组成各种复杂程序。   1.顺序结构   顺序结构程序是仅包含一个main( )函数的简单程序,适当运用表达式语句就能设计出具有某特定功能的顺序结构C51程序。这是一种最简单的基本结构,程序只由低地址向高地址顺序执行指令代码,如图8-1所示。虽然该程序设计方法简单,但在具体运用中的算法仍然采用自顶向下逐步求精的方法进行设计。 图8-1 顺序结构   2.选择结构   使单片机具有决策能力的是选择结构,这种结构也称为分支结构,如图8-2(a)所示。选择结构中包含一个判断框,执行流程根据判断条件P的成立与否,选择执行其中的一路分支。图8-2(b)所示的是特殊的选择结构,即一路为空的选择结构。这种选择结构中,当P条件成立时,执行A操作,然后脱离选择结构;如果P条件不成立,则直接脱离选择结构。它包括if语句结构和switch语句结构两种。 图8-2 选择结构   1) ?if语句结构   C语言的if语句有3种形式:基本if形式、if-else形式、if-else-if形式。   基本if形式语法结构如下:     if(表达式)  处理程序;   处理机理是:如果表达式的值为“真”,则执行“处理程序”的语句内容,否则不执行该语句内容。例如:     void main( )   { uchar sp0=0, buffer0[2]={0, 0}; if (sp0 == 0) buffer0[sp0]=RXBUF0; //接收串口数据 }  if-else形式语法结构如下: if(表达式) 处理程序1; else 处理程序2;   处理机理是:如果if表达式的值为“真”,则执行“处理程序1”的语句内容,否则执行“处理程序2”语句内容。例如:   void main( )   {   uchar end,rev_flag;  if (end == 1)   rev_flag0=1;  else    rev_flag0=0;    }    if-else-if形式语法结构如下:      if(表达式1)       处理程序1;      else if (表达式2)       处理程序2;      …      else (表达式n)     处理程序n;   处理机理是:如果表达式1的值为“真”,则执行与之相对应的“处理程序1”的语句内容;如果表达式2的值为“真”,则执行与之相对应的“处理程序2”的语句内容,依次判断表达式“x”是否为“真”,如果为“真”则执行与之相对应的“处理程序x”语句内容。例如:   void main( )    {   uchar sp0=0, rev_byte0, buffer0[2]={0, 0},             receive_frame[10];   if (sp0 == 0) {     buffer0[sp0]=RXBUF0; //接收串口数据    if (buffer0[0] == 0xEB ) sp0++; }    /* 判断第二个字节 */ else if (sp0 == 1) { buffer0[sp0]=RXBUF0;

文档评论(0)

autohhh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档