第三章单片机C51语言程序设计基础.ppt
文本预览下载声明
第3章 单片机C51语言程序设计基础;教学提示 ;教学要求 ;3.1 语句与流程控制;3.1.1 基本语句; 在C51语言中,若函数仅进行某些操作而不返回函数值,这时函数的调用可作为一条独立的语句,称为函数调用语句。其一般形式为
函数名( 实际参数表 ) ;; 在C51语言中,把多条语句用一对大括号括起来组成的语句称为复合语句。复合语句又称为“语句块”,其一般格式为
{ 语句1;语句2;…;语句n;}; 如果一条语句只有语句结束符号“;”则称为空语句。 ;3.1.2 分支语句;1. if语句;2. if-else语句;【例3.3】 基于图3.2,编程实现下列功能:开机后,全部发光二极管不亮。只有当K1键与K2键同时按下,发光二极管才全亮;否则发光二极管全灭。;3. if-else-if语句; 图3.5给出了if-else-if语句的执行过程。可见,只要一直嵌套下去,if-else-if语句可实现多分支程序设计要求。 ;4. switch语句; 图3.6给出了switch语句的执行过程。;5. 在switch 语句中使用break 语句; 使用break 语句后,switch 语句的一般格式:
switch ( 表达式 ) {
case 常量表达式1:语句1; break;
case 常量表达式2:语句2; break;
……
case 常量表达式n:语句n; break;
default:语句n+1;
}; 使用break 语句后,switch 语句的执行过程如图3.7所示。;3.1.3 循环语句;1. while 语句 ; while 语句的执行过程如图3.8所示。while 语句的特点是:先判断,后执行。 ;2. do-while 语句; do-while 语句的执行过程如图3.9所示。do-while 语句的特点是:先执行,后判断。 ;3. for 语句; for 语句的执行过程如图3.10所示。;表达方式1(正常情况):
sum=0 ;
for( i=1;i=100;i++ ) sum+=i;
表达方式2(省略表达式1):
sum=0 ; i=1 ;
for( ;i=100;i++ ) sum+=i;
表达方式3(省略表达式3):
sum=0;
for( i=1;i=100; ) { sum+=i;i++ ;}
表达方式4(省略表达式1和表达式3):
sum=0;i=1;
for( ;i=100; ) { sum+=i;i++ ;};4. 循环的嵌套; 在进行循环嵌套时,应注意以下几点:;5. 几种循环的比较 ;3.1.4 辅助控制语句;1. break 语句;2. continue 语句;3.2 函数; C51语言中函数定义的一般格式 :; 用C51语言设计程序,就是编写函数。在构成C51语言设计程序的若干个函数中,有且仅有一个是主函数main( )。因为C51 语言程序的执行都是从main( ) 函数开始的,也是在main( ) 函数中结束整个程序运行的,其他函数只有在执行main( ) 函数的过程中被调用才能被执行。; 同变量一样,函数也必须先定义后使用。所有函数在定义时都是相互独立的,一个函数中不能再定义其他函数,但可以相互调用。函数调用的一般规则是:主函数可以调用其他普通函数;普通函数之间可以相互调用;普通函数不能调用主函数。;3.2.1 中断函数; 当CPU正在执行一个特定任务时,可能有更紧急的事情需要CPU处理,这就涉及中断优先级。高优先级中断可以中断正在处理的低优先级中断程序,因此最好给每种不同优先级程序分配不同的工作寄存器组,以达到压栈保护的目的。 ; 例如,下列程序片段为定时器/计数器0的中断服务程序,指定使用第2组工作寄存器。
……
unsigned int CNT1;
unsigned char CNT2;
? void Timer( ) interrupt 1 using 2
{
if( ++CNT1==1000 ) // CNT1计数到1000
{
CNT2++; // CNT2开始计数
CNT1=0; // CNT1
显示全部