单片机C语言程序设计教程与实训——张秀国第3章 单片机C51语言程序设计基础.ppt
文本预览下载声明
第3章 单片机C51语言程序设计基础 3.1 语句与流程控制 3.2 函数 3.3 本章小结 3.4 实训三 简易十字路口交通信号灯控制 教学提示 教学要求 3.1 语句与流程控制 3.1.1 基本语句 3.1.2 分支语句 3.1.3 循环语句 3.1.4 辅助控制语句 3.1.1 基本语句 3.1.2 分支语句 1. if语句 2. if-else语句 3. if-else-if语句 4. switch语句 5. 在switch 语句中使用break 语句 3.1.3 循环语句 1. while 语句 2. do-while 语句 3. for 语句 4. 循环的嵌套 5. 几种循环的比较 3.1.4 辅助控制语句 1. break 语句 2. continue 语句 3.2 函数 3.2.1 中断函数 3.2.2 重入函数 3.2.3 标准库函数 3.3 本章小结 3.4 实训三 简易十字路口交通信号灯控制 在循环过程中,有时不一定要执行完所有的循环后才终止,每次循环也不一定要执行完循环体中的所有语句,可能在一定的条件下跳出循环或进入下一轮循环。 为了方便对程序流程的控制,除了前面介绍的流程控制语句外,C51 语言还提供了两种辅助控制语句:break 和continue 语句。 【例3.11】 求其平方数小于100 的所有整数。 break 语句的一般形式: break; break 语句的功能是:① 终止所在的switch 语句;② 跳出本层循环体,从而提前结束本层循环。 【例3.12】 求1~100之间不能被3整除的数。 continue 语句的一般形式: continue; continue 语句的功能是:用于循环体内结束本次循环,接着进行下一次循环的判定。 3.2.1 中断函数 3.2.2 重入函数 3.2.3 标准库函数 C51语言程序是由一个个函数构成的。所谓函数,是指可以被其他程序调用的具有特定功能的一段相对独立的程序。引入函数的主要目的有两个:一是为了解决代码的重复;二是结构化模块化编程的需要。 C51语言中函数定义的一般格式 : 其中,大括号以外的部分称为函数头;大括号以内的部分称为函数体。如果函数体内无语句,则称之为空函数。空函数不执行任何操作,定义它的目的只是为了以后程序功能的扩充。 [return_type]funcname([args])[{small | compact | large}][reentrant][interrupt n][using n] { 局部变量定义 可执行语句 } 用C51语言设计程序,就是编写函数。在构成C51语言设计程序的若干个函数中,有且仅有一个是主函数main( )。因为C51 语言程序的执行都是从main( ) 函数开始的,也是在main( ) 函数中结束整个程序运行的,其他函数只有在执行main( ) 函数的过程中被调用才能被执行。 从函数的定义格式可以看出,C51语言在4个方面对标准C语言的函数进行了扩展:指定函数的存储模式;指定函数是可再入的;指定函数是一个中断函数;指定函数所用的工作寄存器组。 同变量一样,函数也必须先定义后使用。所有函数在定义时都是相互独立的,一个函数中不能再定义其他函数,但可以相互调用。函数调用的一般规则是:主函数可以调用其他普通函数;普通函数之间可以相互调用;普通函数不能调用主函数。 从用户使用的角度看,函数可以分成两大类:标准库函数和用户自定义函数。下面重点介绍C51语言中新增的中断函数、重入函数和常用的标准库函数。 51系列单片机通常有5个中断源,为了方便使用,C51语言对它们进行了编号,见表3-1。 表3-1 51系列单片机的中断源及其编号 当CPU正在执行一个特定任务时,可能有更紧急的事情需要CPU处理,这就涉及中断优先级。高优先级中断可以中断正在处理的低优先级中断程序,因此最好给每种不同优先级程序分配不同的工作寄存器组,以达到压栈保护的目的。 中断函数的定义格式: 函数类型 函数名()interrupt 中断编号 using 工作寄存器组编号 { 可执行语句 } 例如,下列程序片段为定时器/计数器0的中断服务程序,指定使用第2组工作寄存器。 …… unsigned int CNT1; unsigned char CNT2; ? void
显示全部