《单片机技术与应用》课件-项目2 C语言编程基础_第1页
《单片机技术与应用》课件-项目2 C语言编程基础_第2页
《单片机技术与应用》课件-项目2 C语言编程基础_第3页
《单片机技术与应用》课件-项目2 C语言编程基础_第4页
《单片机技术与应用》课件-项目2 C语言编程基础_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

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

文档简介

单片机技术与应用了解嵌入式C语言与普通C语言的联系与区别单片机技术与应用在系统与应用编程中广泛应用C语言

嵌入式C语言丨C语言在嵌入式系统中的延伸高效灵活可移植针对需求优化和拓展C语言的特性简洁高效灵活系统编程的首选语言C语言的特性高级语言:易读性可维护汇编语言:直接控制硬件功能C语言的功能:C语言的特性层次分明,模块化管理便捷程序C语言具备结构化特性程序调试程序开发C语言的特性丨C语言的作用系统软件的编写应用软件的开发操作系统数据库编译器图形界面网络通信嵌入式C语言的定义与特点

嵌入式C语言丨定义:C语言在嵌入式系统中的应用嵌入式系统:一种专用的计算机系统,通常嵌入在设备内部,用于控制、监视或辅助该设备的运行。嵌入式C语言的定义与特点保留C语言基本语法和特性针对嵌入式系统进行扩展和优化嵌入式C语言关注点:硬件直接控制资源有效利用代码紧凑高效嵌入式C语言与普通C语言的联系语法基础相同嵌入式C语言与普通C语言在语法上基本保持一致变量声明数据类型控制结构函数定义在掌握普通C语言基础上较快过渡到嵌入式C语言嵌入式C语言与普通C语言的联系编程思想相通强调程序的清晰性和可维护性遵循结构化的编程思想广泛应用模块化编程模块化抽象模块化封装嵌入式C语言与普通C语言的联系开发兼容嵌入式C语言开发者可用已有知识和经验进行开发需要使用特定的编译器和开发环境许多嵌入式开发工具都支持C语言标准语法和特性嵌入式C语言与普通C语言的区别运行环境的差异普通式嵌入式运行在通用操作系统上:WindowsLinux提供丰富的API和库函数,方便开发者进行各种操作运行在没有操作系统中:开发者需要直接面对硬件,进行底层编程微控制器微处理器嵌入式C语言与普通C语言的区别开发环境的区别普通C语言可以选择多种通用的编译器和开发环境VisualStudioVisualC++C-Free嵌入式C语言使用专门的编译器和开发环境IARKeil针对特定硬件平台的优化和调试功能嵌入式C语言与普通C语言的区别代码书写的不同普通C语言解决的是通用计算或逻辑问题嵌入式C语言更多地涉及对硬件的直接操控数值计算数据处理LED控制传感器读取嵌入式C语言与普通C语言的区别启动过程的差异普通C语言:普通C语言编译器会自动完成启动过程,包括CPU和外设的初始化,以及main函数的调用。嵌入式C语言与普通C语言的区别启动过程的差异嵌入式C语言:启动过程需要开发者自行编写启动代码,完成硬件平台的初始化和所需数据的准备。嵌入式C语言与普通C语言的区别存储空间的分配普通C程序代码数据堆栈嵌入式C程序ROMRAM代码数据堆栈ROMRAM嵌入式C语言与普通C语言的区别硬件资源的利用普通C语言PC机OS采用普通编译器提供库函数和API,方便开发者操作嵌入式C语言采用交叉编译器开发者需更加注重程序的优化和效率自行编写资源有限嵌入式C语言开发的实践性

嵌入式C语言实践性强掌握基本语法编程思想了解硬件特性工作原理编译原理计算机技术操作系统原理了解嵌入式C语言与普通C语言的联系与区别掌握嵌入式C语言基础通过实践提升能力深入学习嵌入式知识技术艺术要求:扎实理论与丰富经验秉承匠心精神,精益求精C语言编程基础回顾数据类型编译器数据类型操作数据数据类型数据类型基本类型构造类型特征操作方式数据类型基本数据类型整型浮点型字符型构造数据类型布尔型枚举型数组指针结构体联合体typedef自定义类型数据类型字符类型使用char关键字charc='B';与整数可互换,只要值在字符范围内charc=66;整数类型默认是带符号的(signed)也可声明为无符号(unsigned)unsignedinta;数据类型浮点数的类型声明使用float、double关键字,可以用来声明浮点数变量。float类型占用4个字节(32位)布尔类型在C99之前通常用整数0表示假,非零表示真。C99后,可通过stdbool.h使用bool类型。double类型占用8个字节(64位)数据类型类型转换显式转换使用类型转换运算符,即在变量前面,使用带圆括号的指定类型(type),如(unsignedchar)ch。自动转换注释注释让代码更加易懂和易于维护注释单行注释:使用//,可放在代码后或上一行。多行注释:使用/*...*/。关键字

C语言有32个关键字

是编程世界的密码,每个关键字都有它特定的功能和用途intfloatifelse全部小写,用于特定功能常量与变量常量:程序运行的过程中,其值永远不会发生改变的数据。常量与变量变量:包含变量名、类型和值,表示内存中的一个存储区域,需先声明后使用。变量作用域分为全局(整个程序可用)和局部(函数内部可用)。流程控制语句

分支结构:if语句:根据条件结果执行不同代码块。

单分支:if(条件){...}

双分支:if(条件){...}else{...}

多分支:if(条件1){...}elseif(条件2){...}else{...}switch语句:用于条件结果判断,通过case匹配结果值,break跳出语句结构。流程控制语句

循环结构:while循环:while(条件){循环体语句}for循环:for(变量初始化;条件;变量调整){循环体语句}do-while循环:for(变量初始化;条件;变量调整){循环体语句}流程控制语句

循环控制:goto语句:跳转到指定标号处执行。continue语句:跳过当前循环,执行下一次循环。break语句:⽤于永久地终⽌并跳出循环。C语言的特性C语言中的函数库函数自定义函数函数C语言的基础库特定功能的库函数printf()函数使用库函数前要包含对应的头文件(因为此头文件中声明了这些库函数)方便程序员进行软件开发printf()函数程序中要包含stdio.h的头文件,即#include<stdio.h>函数支持的库函数只是基本的一些常用功能的函数不可能提供所有功能的函数需要程序员自定义函数函数函数函数名形参列表函数体

返回值(类型)函数函数的参数调用函数时传递给函数的实际参数在进行函数调用时,实参必须具有确定的值,以便把值传送给形参。函数定义时放在函数名后面括号中的形式参数用于接收实参的值,并在函数内部进行计算或处理,只在函数内有效,因此是形式参数。函数函数的调用传值调用中函数的形参和实参分别占用不同内存块形参是实参的一种临时拷贝,对形参的修改不会影响实参。传址调用中将实际参数的地址传递给被调用函数的形式参数对形式参数的操作实际上是对实际参数所指向的内存空间的操作,从而可以改变实际参数的值,如同给地址让人找到目的地并操作其中内容,这种方式建立了函数与实际参数的直接联系。C语言的特性注意&a表示取a的地址*x表示指针x指向的内容函数函数的声明与定义声明函数的存在定义函数的具体实现数组连续存储的类型相同的元素集合组成变量称为数组元素或下标变量以数组名命名通过下标区分访问各元素从0开始sizeof()用于获取数组大小(以字节为单位)。数组C语言的基础库一维数组:intarr[5]二维数组:可以看作是一个由多个一维数组组成的数组,它在逻辑上可以理解为

一个表格,有行和列的概念定义了一个名为arr的一维数组,它可以存储5个int类型的元素。intarr[3][4];可以在一维数组定义的同时进行初始化赋值。函数建议丨使用TAB缩进丨花括号{}对齐丨添加足够注释丨适当空行分隔代码块代码书写规范化具体书写格式见示例:使C语言程序更加清晰易于维护和理解了解嵌入式C语言与普通C语言的联系与区别每行代码皆是智慧结晶不忘初心,牢记使命规范书写彰显严谨态度进制转换进制的基本概念进制的基础知识简而言之数值表示的方法它决定了我们如何书写和理解数字进制的基本概念十进制取0到9之间的数逢十进一日常生活中系统编程的首选语言但在计算机的世界里进制的基本概念二进制八进制十六进制它们以更简洁的方式表达数据为什么需要进制转换需要进制转换进制转换:就像是一把钥匙,它让我们能够在不同进制间自由穿梭,利用每种进制的优势来解决问题。人类在阅读和书写大数据时更加高效为什么需要进制转换十六进制则二进制便于计算机处理进制转换的方法十进制转二进制/八进制/十六进制采用除基数取余法:以二进制为例,将十进制数不断除以2,记录每次的余数,最后将这些余数从下到上排列即可得到二进制数。进制转换的方法

二进制/八进制/十六进制转十进制采用位权展开相加求和法:以二进制数为例,从右往左,每位上的数字乘以2的相应次方(从0开始),然后求和;进制转换的方法4.数制转换关系表如图所示,熟记此表,可以快速完成各进制之间的互换二进制(B)八进制(O)

十进制(D)

十六进制(H)

000011111022211333100444101555110666111777100010881001119910101210A10111311B11001412C11011513D11101614E11111715F实践环节将十进制数255转换为二进制、八进制与十六进制转换二进制:用除2取余法,

依次除2得到商与余数:127余1、63余1、31余1、15余1、7余1、3余1、1余1、0余1,余数从下往上取值,得到结果:11111111。实践环节将十进制数255转换为二进制、八进制与十六进制转换八进制:可直接除8取余,或先将十进制数转成二进制数后再分组转换。除8取余法:255÷8=31余7,31÷8=3余7,3÷8=0余3,余数从下往上取值,得到结果:377;二进制分组转换法就是将上面所得的二进制结果11111111从右至左每三位一组分割为011111111,分组转换得到377。实践环节将十进制数255转换为二进制、八进制与十六进制转换十六进制:可直接除16取余,或先将十进制数转成二进制数后再分组转换。除16取余法:255÷16=15余15(即F),15÷16=0余15(即F),余数从下往上取得到结果:FF;二进制转换法是将11111111每四位一组分割为11111111,分组转换得到FF。实践环节将十进制数255转换为二进制、八进制与十六进制二进制数11111111八进制377十六进制数FF分别通过位权展开相加求和法,最终均得到结果255。实践环节是每个技术人的必修课位操作在嵌入式系统的世界里单片机技术与应用丨每一寸资源都显得尤为珍贵位操作作为高效利用硬件资源的重要手段在嵌入式系统编程性能优化等领域:发挥着不可替代的作用,是我们必须掌握的技能位操作简介二进制数最左边的位称为最高位最右边的位称为第0位再依次从右向左称第1位、第2位、...,就是对二进制位进行运算操作位操作简介也称为位运算位操作位操作简介在C语言中位操作主要通过一组特定的运算符来实现这些运算符允许我们直接对整数类型的二进制数表示进行操作按位与(&)按位或(|)按位异或(^)按位取反(~)位左移(<<)位右移(>>)位操作详解按位与(&)按位与(&)用法核心在于,当两个二进制操作数在对应位上都为1时,该对应位的“按位与”的结果才为1,否则为0,即运算规则:0&0=00&1=01&0=01&1=1。这一特性使得按位与运算在屏蔽(即清零)特定位或检查某一位状态方面极具价值。通过位与运算,可以保留或清零原数中的某些位,而不影响其他位。位操作详解按位或(|)按位或(|)其核心逻辑是,只要两个二进制操作数在对应位上有一个为1,该对应位的“按位或”的结果就为1,即运算规则:0|0=00|1=11|0=11|1=1。这一特性使得按位或运算在设置(置1)特定位方面非常有用。通过位或运算,可以轻松地将原数中的某些位设置为1,而不影响其他位。位操作详解

按位异或(^)其特殊性在于:当两个二进制操作数在对应位上不同值时,该对应位的“按位异或”的结果就为1;相同时,结果为0。即运算规则:0^0=00^1=11^0=11^1=0。这种特性使得异或运算符在翻转(取反)特定位或实现某些加密算法时非常有用。位操作详解按位取反(~)简单而直接,它将每一个二进制位都取反,即0变1,1变0。这一操作对某些位进行取反操作,以实现特定的逻辑功能。位操作详解位左移(<<)和位右移(>>)即是将二进制数位按要求左移(或右移)若干位,亦可通过移动二进制数的位来快速实现乘法或除法操作,位左移相当于将数值乘以2的幂次方,而位右移则相当于将数值除以2的幂次方。位操作详解复合赋值位运算:位操作运算符可以和赋值运算符“=”一起组成复合运算符,如“&=、|=、 >>= 、<<=、^=”,以“&=”

为例,“a&=b”等同于“a=a&b”。这些复合运算符可以简化代码,提高编程效率。可以利用位操作来实现精确控制位操作在编程中的应用可能会影响到其他位的状态直接赋值位操作在编程中的应用//假设TEST寄存器当前值为10101010defineBIT0_MASK0x01//定义掩码TEST|=BIT0_MASK;//通过位或运算,完成设置bit0为1,其他位保持不变,TEST寄存器的值变为10101011位操作在编程中的应用通过上面示例丨使用按位或复合赋值运算符“|=”和掩码可以只改变TEST寄存器的第0位,而不影响其他位这种精确控制的能力代价实现对硬件资源的精确配置在嵌入式系统中至关重要位操作的优缺点‌优点‌缺点‌高效‌:位操作通常具有较低的时间复杂度,适合对性能要求较高的场景。‌可读性差‌:位操作可能会降低代码的可读性和可维护性,需要程序员对二进制操作有深入的理解。‌灵活‌:能够直接对二进制位的每一位进行操作,实现高效的数据处理。总结它们在嵌入式编程中的应用:还体会到了位操作作为嵌入式系统优化利器的重要性。位操作就像是一把精细的雕刻刀,允许我们在二进制的世界里精雕细琢,实现对硬件资源的最大化利用。编译与预处理单片机技术与应用高效灵活软硬件的

桥梁单片机技术与应用编译预处理源代码到可执行文件转化过程预处理编译过程的前奏预处理文本编辑条件筛选预处理头文件包含#includeC语言对模块化编程的支持头文件中的声明、定义等搬运进源代码中,构建起程序的骨架系统头文件(如<stdio.h>)与用户自定义头文件(如"myheader.h")预处理宏定义#defineC语言强大的文本替换能力预处理常量表达式代码块定义宏预处理可读性可维护性定义宏嵌入式C语言的定义与特点

嵌入式C语言丨定义:C语言在嵌入式系统中的应用嵌入式系统:一种专用的计算机系统,通常嵌入在设备内部,用于控制、监视或辅助该设备的运行。预处理带参宏定义更是让代码复用变得灵活多变丨注意事项宏替换是简单的文本替换,不进行类型检查,因此使用时需谨慎,避免潜在的运算顺序问题预处理条件编译嵌入式开发不同硬件平台、不同功能需求往往要求代码具有高度的可配置性条件编译指令(如#ifdef、#ifndef等)预处理编译或忽略代码

温馨提示

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

评论

0/150

提交评论