基于C语言的MCS-51单片机教程 课件 1单元3:C51程序设计基础_第1页
基于C语言的MCS-51单片机教程 课件 1单元3:C51程序设计基础_第2页
基于C语言的MCS-51单片机教程 课件 1单元3:C51程序设计基础_第3页
基于C语言的MCS-51单片机教程 课件 1单元3:C51程序设计基础_第4页
基于C语言的MCS-51单片机教程 课件 1单元3:C51程序设计基础_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

单元3:C51程序设计基础知识与能力目标了解C51的特点、关键字1掌握C51的数据类型(尤其是扩展数据类型)2掌握C51的基本运算、语句3掌握C51的函数、预处理指令4

单元3:C51程序设计基础1对单片机的指令系统不要求了解,仅要求对8051的存贮器结构有初步了解寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理23程序有规范的结构,可分成不同的函数,这种方式可使程序结构化具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读45提供的库包含许多标准子程序,具有较强的数据处理能力6由于具有方便的模块化编程技术,使已编好程序可容易地移植C51的优点基本数据类型类型符号关键字数的表示范围所占位数整型字符型实型有无(signed)int16-32768~32767(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsignedint0~65535320~4294967295unsignedlongintunsignedshortint160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127无unsignedchar80~255单元3:C51程序设计基础2、C51的数据类型扩展数据类型单元3:C51程序设计基础2、C51的数据类型1)sfr:定义特殊功能寄存器地址。其定义的语法规则如下:sfr

特殊功能寄存器名称=字节地址常数;例如:sfrP0=0x80;//定义一个特殊功能寄存器变量P02)sfr16:定义双字节特殊功能寄存器地址,其定义的语法规则如下:sfr16双字节特殊功能寄存器名称=字节地址常数;例如:sfr16DPTR=0x82;//定义DPTR低端地址82H扩展数据类型单元3:C51程序设计基础2、C51的数据类型3)sbit:定义能够按位寻址的特殊功能寄存器中的位变量,其定义的语法规则如下:sbit

位变量名=位地址表达式;这里的位地址表达式有三种形式:直接地址、特殊功能寄存器名带位号、字节地址带位号,所以这里的定义方式有三种,分别如下:sbit

位变量名=位地址常数;(位地址常数:特殊功能寄存器内的绝对位地址)sbit

位变量名=特殊功能寄存器名^位号;sbit

位变量名=特殊功能寄存器字节地址^位号;例:特殊功能寄存器P0口的名称及各位的分布如下:以特殊功能寄存器P0口的P0.0位定义为例,三种定义方法如下:方法1:sbitP0_0=0x80;方法2:sbitP0_0=P0^0;方法3:sibtP0_0=0x80^0;扩展数据类型单元3:C51程序设计基础2、C51的数据类型4)bit:定义片内RAM的位变量。其值只有0或1。但注意不能用它定义指针,也用其不能定义数组。例:bitN3_4;//定义一个片内RAM位变量N3_4补充说明:1、C51编译器在头文件“reg51.h”中定义了全部sfr、sfr16和sbit变量,因此当我们程序中如果需要使用这些,可以用一条预处理命令#include<reg51.h>把这个头文件包含到C51程序中,无须重新定义即可使用。2、使用sbit的几点说明:用sbit定义的位变量必须能够按位操作,而不能对无位操作功能的位定义位变量。用sbit定义的位变量必须放在函数外面作为全局变量,而不能在函数内部定义。用sbit每次只能定义一个位变量。单元3:C51程序设计基础3、标识符和关键字1)C语言中标识符是指软件开发者在程序中自定义的字符序列,用来命名程序中需要辨认的对象,包括:符号常量、变量、数组及函数等。标识符的定义注意事项如下:由字母、数字、下划线构成。首字符必须是字母或下划线。长度不得大于32个字符,通常是8个字符。严格区分大小写字母。不应该使用C语言中的保留标识符来做自定义的变量或函数等的标识符。单元3:C51程序设计基础3、标识符和关键字2)下面列出了C语言的所有关键字,在使用时应慎用这些关键字,不要将其作为标识符来用:Auto、enum、restrict、unsigned、break、extern、return、void、case、float、short、volatile、char、for、signed、while、const、goto、sizeof、Bool、continue、if、static、default、inline、struct、_Imaginary、do、int、switch、double、long、typedef、else、register、union等。1)算术运算符12注意:“/”:参与运算的变量都是整数时,结果也为整数,舍去小数;若除数或被除数中一个为负数,则结果随机器而定。、“%”:参与运算的变量必须都是整数。4、C51的基本运算单元3:C51程序设计基础2)自增、自减运算符:“++”、“--”13++i与i++的区别:举例:i的初值为3j=++i;//先i=3+1=4,再将4赋值给jj=i++;//先将i的值3赋值给j,再将i的值加1,变为4前置运算和后置运算的区别:前置运算是变量的值先加1或减1,然后再以该变量变化后额值参加其它运算。后置运算是变量的值先参加有关运算,然后变量的值再加1或减1。相关知识点3)关系运算符:14关系表达式一般形式:表达式关系运算符表达式关系表达式的值:真(成立)用“1”表示

假(不成立)用“0”表示4)逻辑运算符:15逻辑表达式一般形式:表达式逻辑运算符表达式逻辑表达式的值:真(成立)用“1”表示

假(不成立)用“0”表示5)位运算符:16举例:设下列程序执行前,value已经定义为unsignedchar,且

value=0x83,分析每一条语句执行后value的值。value|=0x17; //value=value&=0x34; //value=value^=0x0f; //value=value=~value; //value=value=value>>1; //value=value=value<<2;//value=0x970x14

0x1B

0xe4

0x72

0xc8

6)赋值运算符:181)基本赋值运算符“=”:其功能是把某个常量、变量或表达式的值赋值给另外一个变量。2)复合赋值运算符复合赋值运算符有:“+=”、“-=”、“*=”、“/=”、“%=”、“^=”、“~=”、“&=”、“|=”、“<<=”、“>>=”。例如:i+=2;等价于i=i+2;a%=5;等价于a=a%5;7)强制类型转换运算符:19其一般形式为:(类型说明符)(表达式)其功能是:把表达式的运算结果强制转换为类型说明符所表示的类型。单元3:C51程序设计基础4、C51的基本语句if语句第一种形式:if(表达式)语句举例:输出两个整数中的较大者21if语句第二种形式:if(表达式)语句1;else语句2;22举例:输出两个整数中的较大者23if语句第三种形式:if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3……elseif(表达式n)语句nelse语句n+124举例:输入1~7转换为对应的星期英文switch语句switch语句的一般格式是:switch(变量){ case常量1:语句1; case常量2:语句2;case常量3:语句3;…….case常量n:语句n;default:语句n+1;}执行switch语句时,将变量逐个与case后的常量进行比较,若与其中一个相等,则执行该常量后的语句;若都不相等,则执行default后的语句。举例:自动售货机商品价格的查询任务描述:自动售货机可以售出薯片3.0元,爆米花2.5元,巧克力4.0元,可乐3.5元四种商品。在屏幕上显示菜单。当用户输入编号1~4时,显示相应商品的价格;输入其它编号,显示价格为0。解决方案:(1)定义整型变量x用于存放用户输入编号(2)定义双精度实型变量y用于存放价钱(3)根据x值使用switch语句判断用户选择商品价格y的值(4)输出商品价格y程序while语句一般格式:while(表达式)

循环体语句;执行过程:30任务描述:小张的行李箱密码忘记,密码是四位,每位密码是由0~9之间的数字构成。请编写模拟小张寻找密码的过程。举例:寻找密码任务分析:密码是一个四位整数,而四位整数的取值范围是0000~9999,共计10000个,那么我们需要在这10000个四位整数中逐个寻找,直到找到与密码符合的四位整数为止。32解决方案:(1)定义整形变量password用于存放密码(2)定义整形变量value,赋初值0,用于存放每次比较的四位整数(3)用value的值与password的值进行比较,若不相等则修改value的值(value++)继续进行比较,直到找到为止(4)输出找到的四位密码(5)返回程序do-while语句一般格式:do{

循环体语句;}while(表达式);执行过程:35请用do-while语句改写上面寻找密码的函数。for语句一般格式:for(表达式1;表达式2;表达式3){

循环体语句;}执行过程:37表达式1:初值表达式,对循环变量赋初值表达式2:条件表达式,给出循环的条件循环体语句:被反复执行的语句表达式3:步长表达式,改变循环变量的值任务描述:由计算机随机生成100以内的一个整数,用键盘输入你猜的整数(假定1~99内),与计算机产生的被猜数比较,若相等,显示猜中;若不相等,显示与被猜数的大小关系,最多允许猜5次,如果用户猜的次数大于5次,则提示游戏结束。案例四:猜数字游戏任务分析:要求计算机随机产生一个0~99的一个整数,设置一个计数器控制猜的次数,最多5次。39解决方案:(1)本例要使用随机函数,这些函数包含在头文件:stdlib.h和timen.h中(2)定义整形变量key用于存放随机数(3)定义整形变量temp存放用户猜的数字(4)定义整形变量i作为循环变量(5)调用srand()设置随机数种子(6)调用rand()函数产生1~100之间的随机数(7)使用循环让用户进行猜数字游戏,用计数循环语句for语句控制循环5次。如果不到5次猜对,则利用break语句,提前结束程序;如果用户猜的次数达到5次仍没猜对,则循环正常结束。程序相关知识点42break语句break语句用在switch语句中,使程序跳出switch语句,执行switch语句后的语句。break语句用于while、do-while、for语句中使程序终止循环,而执行循环体后面的其他语句相关知识点43continue语句只用于while、do-while、for语句中,跳过循环中剩下的语句,而强制执行下一次循环。44C程序是由函数构成,函数是C语言程序的基本模块,通过对函数模块的调用实现特定的功能。1)函数的定义:一般形式:函数返回值类型函数名(形式参数列表){

声明部分

执行部分}474、C51函数相关知识点—函数2)函数的分类:从用户角度分:标准函数和用户自定义函数。从参数形式分:无参函数和有参函数。从函数返回值来分:无返回值函数和有返回值函数。483)函数的声明:

C语言程序,对函数实行“先定义,后调用”的原则。即:如果函数定义在调用前,则可以直接调用,无需声明;但如果函数定义在调用之后,则先声明才能调用。标准库函数的声明:程序开头部分用#include进行文件包含。用户自定义函数的声明:函数返回值类型函数名(形式参数列表);4)函数的调用:一般来说,按照函数在程序中出现的位置来划分,C语言有三种常用的函数调用方式:函数表达式。函数作为表达式中的一项出现在表达式中,以函数的返回值参与表达式的运算。函数语句。把函数调用作为一个语句。函数参数。函数作为另

温馨提示

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

评论

0/150

提交评论