资源描述
C51编程常用语句总结编程常用语句总结一、一、一、一、C51C51定义定义定义定义SFRSFR定义方法:两个关键字:定义方法:两个关键字:定义方法:两个关键字:定义方法:两个关键字:sfrsfr和和和和sbitsbit1.1.定义特殊功能寄存器用定义特殊功能寄存器用定义特殊功能寄存器用定义特殊功能寄存器用sfrsfr例如:例如:例如:例如:sfr PSW=0 xD0sfr PSW=0 xD0;/*/*定义程序状态字定义程序状态字定义程序状态字定义程序状态字PSWPSW的地址为的地址为的地址为的地址为D0H*/D0H*/sfr TMOD=0 x89sfr TMOD=0 x89;/*/*定义定时器定义定时器定义定时器定义定时器/计数器方式控制寄存器计数器方式控制寄存器计数器方式控制寄存器计数器方式控制寄存器TMODTMOD的地址为的地址为的地址为的地址为89H*/89H*/sfr P1=0 x90sfr P1=0 x90;/*/*定义定义定义定义P1P1口的地址为口的地址为口的地址为口的地址为90H*/90H*/2.2.定义可位寻址的特殊功能寄存器的位用定义可位寻址的特殊功能寄存器的位用定义可位寻址的特殊功能寄存器的位用定义可位寻址的特殊功能寄存器的位用sbitsbit例如:例如:例如:例如:sbit CY=0 xD7sbit CY=0 xD7;/*/*定义进位标志定义进位标志定义进位标志定义进位标志CYCY的地址为的地址为的地址为的地址为D7H*/D7H*/sbit AC=0 xD06sbit AC=0 xD06;/*/*定义辅助进位标志定义辅助进位标志定义辅助进位标志定义辅助进位标志ACAC的地址为的地址为的地址为的地址为D6H*/D6H*/sbit RS0=0 xD03sbit RS0=0 xD03;/*/*定义定义定义定义RS0RS0的地址为的地址为的地址为的地址为D3H*/D3H*/1 1.标准标准标准标准SFRSFR在在在在reg51.hreg51.h、reg52.h reg52.h 等头文件中等头文件中等头文件中等头文件中已经被定义,只要用文件包含做出声明即可使已经被定义,只要用文件包含做出声明即可使已经被定义,只要用文件包含做出声明即可使已经被定义,只要用文件包含做出声明即可使用。用。用。用。例如:例如:例如:例如:#include#include sbit P10=P10;sbit P10=P10;sbit P12=P12;sbit P12=P12;main()main()P10=1;P10=1;P12=0;P12=0;PSW=0 x08;PSW=0 x08;2 2.二、二、二、二、C51C51定义位变量定义位变量定义位变量定义位变量使用关键字使用关键字使用关键字使用关键字bitbit例如:例如:例如:例如:bit lockbit lock;/*/*将将将将locklock定义为位变量定义为位变量定义为位变量定义为位变量*/*/bit directionbit direction;/*/*将将将将directiondirection定义为位变定义为位变定义为位变定义为位变量量量量*/*/注意:不能定义位变量指针;也不能定义位变注意:不能定义位变量指针;也不能定义位变注意:不能定义位变量指针;也不能定义位变注意:不能定义位变量指针;也不能定义位变量数组。量数组。量数组。量数组。C51编程常用语句总结编程常用语句总结3 3.C51流程控制语句流程控制语句 一、选择语句一、选择语句一、选择语句一、选择语句1.if1.if语句语句语句语句以下三种形式:以下三种形式:以下三种形式:以下三种形式:ifif(表达式)(表达式)(表达式)(表达式)语句;语句;语句;语句;ifif(表达式)(表达式)(表达式)(表达式)语句语句语句语句1 1;else else 语句语句语句语句2 2;ifif(表达式(表达式(表达式(表达式1 1)语句语句语句语句1 1;else ifelse if(表达式(表达式(表达式(表达式2 2)语句语句语句语句2 2;else if else if(表达式(表达式(表达式(表达式3 3)语句语句语句语句3 3;else ifelse if(表达式(表达式(表达式(表达式n n)语句语句语句语句n n;else else 语句语句语句语句n+1n+1;4 4.C51流程控制语句流程控制语句例例例例1 1:if(p1!=0)if(p1!=0)c=20;c=20;例例例例2 2:if(p1!=0)if(p1!=0)c=20;c=20;elseelse c=0;c=0;例例例例3 3:if(a=1)c=10;if(a=1)c=10;else if(a=2)c=20;else if(a=2)c=20;else if(a=3)c=30;else if(a=3)c=30;else if(a=4)c=40;else if(a=4)c=40;else c=0;else c=0;5 5.C51流程控制语句流程控制语句 switch/case switch/case语句语句语句语句switch/caseswitch/case语句的一般形式如下:语句的一般形式如下:语句的一般形式如下:语句的一般形式如下:switchswitch(表达式)(表达式)(表达式)(表达式)case case 常量表达式常量表达式常量表达式常量表达式1 1:语句:语句:语句:语句1 1;break break;case case 常量表达式常量表达式常量表达式常量表达式2 2:语句:语句:语句:语句2 2;break break;case case 常量表达式常量表达式常量表达式常量表达式n n:语句:语句:语句:语句n n;break break;default default:语句:语句:语句:语句n+1n+1;6 6.C51流程控制语句流程控制语句例:单片机例:单片机例:单片机例:单片机P1P1口的口的口的口的P1.0P1.0和和和和P1.1P1.1各接一个开关各接一个开关各接一个开关各接一个开关K1K1、K2K2,P1.4P1.4、P1.5P1.5、P1.6P1.6和和和和P1.7P1.7各接各接各接各接一只发光二极管。有一只发光二极管。有一只发光二极管。有一只发光二极管。有K1K1和和和和K2K2的不同状态来确的不同状态来确的不同状态来确的不同状态来确定哪个发光二极管被点亮。定哪个发光二极管被点亮。定哪个发光二极管被点亮。定哪个发光二极管被点亮。K2K2K1K1亮的二极管亮的二极管0 00 0L1L10 01 1L2L21 10 0L3L31 11 1L4L47 7.C51流程控制语句流程控制语句方法一:用方法一:用方法一:用方法一:用ifif语句实现语句实现语句实现语句实现#include#include void main()void main()char a;char a;a=P1;a=P1;a=a&0 x03;a=a&0 x03;/*/*屏蔽高屏蔽高屏蔽高屏蔽高6 6位位位位*/*/if(a=3)P1=0 x83if(a=3)P1=0 x83;else if(a=2)P1=0 x43 else if(a=2)P1=0 x43;else if(a=1)P1=0 x23else if(a=1)P1=0 x23;else P1=0 x13 else P1=0 x13;8 8.C51流程控制语句流程控制语句方法二:用方法二:用方法二:用方法二:用switch/caseswitch/case语句实现语句实现语句实现语句实现#include#include void main()void main()char a;char a;a=P1;a=P1;a=a&0 x03;a=a&0 x03;/*/*屏蔽高屏蔽高屏蔽高屏蔽高6 6位位位位*/*/switch(a)switch(a)case 3case 3:P1=0 x83P1=0 x83;breakbreak;case 2case 2:P1=0 x43P1=0 x43;breakbreak;case 1case 1:P1=0 x23P1=0 x23;breakbreak;case 0case 0:P1=0 x13P1=0 x13;9 9.C51流程控制语句流程控制语句二、循环语句二、循环语句二、循环语句二、循环语句 if if语句和语句和语句和语句和gotogoto语句语句语句语句gotogoto语句只能构成简单循环,与语句只能构成简单循环,与语句只能构成简单循环,与语句只能构成简单循环,与ifif语句一起可语句一起可语句一起可语句一起可以实现当型和直到型循环。以实现当型和直到型循环。以实现当型和直到型循环。以实现当型和直到型循环。构成当型循环构成当型循环构成当型循环构成当型循环looploop:ifif(表达式)(表达式)(表达式)(表达式)语句语句语句语句goto loopgoto loop;构成直到型循环构成直到型循环构成直到型循环构成直到型循环looploop:语句语句语句语句 if if(表达式)(表达式)(表达式)(表达式)goto loopgoto loop;1010.C51流程控制语句流程控制语句 while while语句语句语句语句whilewhile语句的一般格式:语句的一般格式:语句的一般格式:语句的一般格式:whilewhile(表达式)语句(表达式)语句(表达式)语句(表达式)语句 do-while do-while语句语句语句语句do-whiledo-while语句一般格式:语句一般格式:语句一般格式:语句一般格式:do do 语句语句语句语句 while while(表达式);(表达式);(表达式);(表达式);for for语句语句语句语句forfor语句的一般形式:语句的一般形式:语句的一般形式:语句的一般形式:for for(表达式(表达式(表达式(表达式1 1;表达式;表达式;表达式;表达式2 2;表达式;表达式;表达式;表达式3 3)语句)语句)语句)语句先计算表达式的值,若其值先计算表达式的值,若其值为非为非0,则执行内嵌语句,则执行内嵌语句(循环),若其值为(循环),若其值为0,则,则退出退出while循环循环。先执行内嵌的语句,先执行内嵌的语句,若若表达式的值为非表达式的值为非0时,则时,则循环;当表达式的值为循环;当表达式的值为0时,则结束循环,执行时,则结束循环,执行do-while语句下面的语句。语句下面的语句。1111.举例:例按键的程序只能执行一遍,使用循环程序使举例:例按键的程序只能执行一遍,使用循环程序使举例:例按键的程序只能执行一遍,使用循环程序使举例:例按键的程序只能执行一遍,使用循环程序使其无穷循环下去。其无穷循环下去。其无穷循环下去。其无穷循环下去。用用用用gotogoto语句实现语句实现语句实现语句实现#include#include void main()void main()char a;char a;looploop:a=P1;a=P1;a=a&0 x03;a=a&0 x03;/*/*屏蔽高屏蔽高屏蔽高屏蔽高6 6位位位位*/*/switch(a)switch(a)case 3case 3:P1=0 x83P1=0 x83;breakbreak;case 2case 2:P1=0 x43P1=0 x43;breakbreak;case 1case 1:P1=0 x23P1=0 x23;breakbreak;case 0case 0:P1=0 x13P1=0 x13;goto loopgoto loop;1212.用用用用whilewhile语句实现语句实现语句实现语句实现#include#include void main()void main()char a;char a;while(1)while(1)a=P1;a=P1;a=a&0 x03;a=a&0 x03;/*/*屏蔽高屏蔽高屏蔽高屏蔽高6 6位位位位*/switch(a)switch(a)case 3case 3:P1=0 x83P1=0 x83;breakbreak;case 2case 2:P1=0 x43P1=0 x43;breakbreak;case 1case 1:P1=0 x23P1=0 x23;breakbreak;case 0case 0:P1=0 x13P1=0 x13;While中的条件恒为中的条件恒为1,表示,表示死循环。死循环。1313.用用用用do-whiledo-while语句实现语句实现语句实现语句实现#include#include void main()void main()char a;char a;do do a=P1;a=P1;a=a&0 x03;a=a&0 x03;/*/*屏蔽高屏蔽高屏蔽高屏蔽高6 6位位位位*/switch(a)switch(a)case 3case 3:P1=0 x83P1=0 x83;breakbreak;case 2case 2:P1=0 x43P1=0 x43;breakbreak;case 1case 1:P1=0 x23P1=0 x23;breakbreak;case 0case 0:P1=0 x13P1=0 x13;while(1);while(1);While中的条件恒为中的条件恒为1,表示死循环。表示死循环。1414.用用用用forfor语句实现语句实现语句实现语句实现#include#include void main()void main()char a;char a;for(for(;)a=P1;a=P1;a=a&0 x03;a=a&0 x03;/*/*屏蔽高屏蔽高屏蔽高屏蔽高6 6位位位位*/switch(a)switch(a)case 3case 3:P1=0 x83P1=0 x83;breakbreak;case 2case 2:P1=0 x43P1=0 x43;breakbreak;case 1case 1:P1=0 x23P1=0 x23;breakbreak;case 0case 0:P1=0 x13P1=0 x13;for中的条件恒为真,表示中的条件恒为真,表示死循环。死循环。1515.C51构造数据类型构造数据类型一、数组一、数组一、数组一、数组 一维数组一维数组一维数组一维数组 一维数组的定义一维数组的定义一维数组的定义一维数组的定义 类型说明符类型说明符类型说明符类型说明符 数组名数组名数组名数组名 元素个数元素个数元素个数元素个数;如:如:如:如:int a50int a50;一维数组的初始化一维数组的初始化一维数组的初始化一维数组的初始化 int a5=1int a5=1,2 2,3 3,4 4,55;/*/*给全部给全部给全部给全部元素赋值元素赋值元素赋值元素赋值*/*/int b6=1int b6=1,2 2,66;/*/*给部分元素赋值给部分元素赋值给部分元素赋值给部分元素赋值*/*/int d10int d10;d0=4d0=4;d1=d1=6 6;/*/*定义完后再赋值定义完后再赋值定义完后再赋值定义完后再赋值*/*/1616.二维数组二维数组二维数组二维数组 二维数组的定义二维数组的定义二维数组的定义二维数组的定义类型说明符类型说明符类型说明符类型说明符 数组名数组名数组名数组名 行数行数行数行数 列数列数列数列数;如:如:如:如:float a34float a34;二维数组的初始化二维数组的初始化二维数组的初始化二维数组的初始化int a34=1int a34=1,2 2,3 3,44,55,6 6,7 7,88,99,1010,1111,1212;/*/*全部初始化全部初始化全部初始化全部初始化*/*/int a34=1int a34=1,2 2,3 3,44,55,6 6,7 7,88,;/*/*部分初始化,部分初始化,部分初始化,部分初始化,a20=a21=a20=a21=a22=a23=0*/a22=a23=0*/C51C51还可以定义多维数组,也可以定义字符型数组。还可以定义多维数组,也可以定义字符型数组。还可以定义多维数组,也可以定义字符型数组。还可以定义多维数组,也可以定义字符型数组。数组是十分有用的数据类型,用它可以形成容易查找的数组是十分有用的数据类型,用它可以形成容易查找的数组是十分有用的数据类型,用它可以形成容易查找的数组是十分有用的数据类型,用它可以形成容易查找的数据表格。数据表格。数据表格。数据表格。1717.C51函数函数一、函数的定义与分类一、函数的定义与分类一、函数的定义与分类一、函数的定义与分类 函数的分类函数的分类函数的分类函数的分类 标准库函数标准库函数标准库函数标准库函数 用户自定义函数用户自定义函数用户自定义函数用户自定义函数n n用户自定义函数是用户根据自己的需要而编写的函数。用户自定义函数是用户根据自己的需要而编写的函数。用户自定义函数是用户根据自己的需要而编写的函数。用户自定义函数是用户根据自己的需要而编写的函数。n n从函数定义的形式上划分:无参数函数、有参数函数从函数定义的形式上划分:无参数函数、有参数函数从函数定义的形式上划分:无参数函数、有参数函数从函数定义的形式上划分:无参数函数、有参数函数和空函数。和空函数。和空函数。和空函数。函数的定义函数的定义函数的定义函数的定义 返回值类型返回值类型返回值类型返回值类型 函数名(形式参数列表)函数名(形式参数列表)函数名(形式参数列表)函数名(形式参数列表)函数体函数体函数体函数体 例如:例如:例如:例如:int maxint max(int xint x,int yint y,int zint z)返回值的数据类型为整型,函数名为返回值的数据类型为整型,函数名为返回值的数据类型为整型,函数名为返回值的数据类型为整型,函数名为maxmax,x x、y y、z z为个整型入口参数。为个整型入口参数。为个整型入口参数。为个整型入口参数。1818.C51函数函数二、二、二、二、C51C51的库函数的库函数的库函数的库函数C51C51编译器提供了丰富的库函数,使用这些库函数编译器提供了丰富的库函数,使用这些库函数编译器提供了丰富的库函数,使用这些库函数编译器提供了丰富的库函数,使用这些库函数大大提高了编程效率,用户可以根据需要随时调用。每大大提高了编程效率,用户可以根据需要随时调用。每大大提高了编程效率,用户可以根据需要随时调用。每大大提高了编程效率,用户可以根据需要随时调用。每个库函数都在相应的头文件中给出了函数的原型,个库函数都在相应的头文件中给出了函数的原型,个库函数都在相应的头文件中给出了函数的原型,个库函数都在相应的头文件中给出了函数的原型,使用使用使用使用时只需在源程序的开头用编译预处理命令时只需在源程序的开头用编译预处理命令时只需在源程序的开头用编译预处理命令时只需在源程序的开头用编译预处理命令#include#include将将将将相关的头文件包含进来即可。相关的头文件包含进来即可。相关的头文件包含进来即可。相关的头文件包含进来即可。例如,要使用数学公式,只需要在程序开头使用例如,要使用数学公式,只需要在程序开头使用例如,要使用数学公式,只需要在程序开头使用例如,要使用数学公式,只需要在程序开头使用#include#include 文件包含就可以了。要访问文件包含就可以了。要访问文件包含就可以了。要访问文件包含就可以了。要访问SFRSFR和和和和SFRSFR的位,则只需要在程序开头使用的位,则只需要在程序开头使用的位,则只需要在程序开头使用的位,则只需要在程序开头使用#include#include 或或或或#include#include 文件包含。文件包含。文件包含。文件包含。1919.C51应用编程实例应用编程实例例:例:外部中断外部中断0 0引脚(引脚(P3.2P3.2)接一个开关,)接一个开关,P1.0P1.0接一个发光二极管。开关闭合一次,接一个发光二极管。开关闭合一次,发光二极管改变一次状态。发光二极管改变一次状态。本例解决外部中断如何应用。本例解决外部中断如何应用。要求:编程实现此功能。要求:编程实现此功能。2020.#include sbit P10=P10;int i;void main()()EA=1;EX0=1;while(1););void int_srv()interrupt 0 using 1while(INT0=0)for(i=0,i220;i+);while(INT0=0)P10=!P10;while(INT0=0);2121.小小 结结本章要求:本章要求:本章要求:本章要求:掌握掌握掌握掌握C51C51的数据类型、的数据类型、的数据类型、的数据类型、C51C51的数据存储类型、的数据存储类型、的数据存储类型、的数据存储类型、C51C51的的的的存储模式、存储模式、存储模式、存储模式、C51C51对对对对SFRSFR的定义、的定义、的定义、的定义、C51C51对位变量的定义,对位变量的定义,对位变量的定义,对位变量的定义,在这些方面与标准在这些方面与标准在这些方面与标准在这些方面与标准C C语言有很大不同,至于其他规则与语言有很大不同,至于其他规则与语言有很大不同,至于其他规则与语言有很大不同,至于其他规则与标准标准标准标准C C语言是基本一致的;语言是基本一致的;语言是基本一致的;语言是基本一致的;了解了解了解了解C51C51的库函数;的库函数;的库函数;的库函数;学习时应特别强调学习时应特别强调学习时应特别强调学习时应特别强调C51C51如何操作基本如何操作基本如何操作基本如何操作基本I/OI/O口,如何进口,如何进口,如何进口,如何进行位操作和对特殊功能寄存器的操作,掌握行位操作和对特殊功能寄存器的操作,掌握行位操作和对特殊功能寄存器的操作,掌握行位操作和对特殊功能寄存器的操作,掌握C51C51下定下定下定下定时器时器时器时器/计数器的应用及中断的使用方法。计数器的应用及中断的使用方法。计数器的应用及中断的使用方法。计数器的应用及中断的使用方法。2222.
展开阅读全文