首页 01B03---- C语言介绍

01B03---- C语言介绍

举报
开通vip

01B03---- C语言介绍 11 作者:利尔达技术部 MSP430 C语言程序设计 利尔达技术部利尔达技术部 22 作者:利尔达技术部 ™C语言的基础知识 ™C语言的开发调试环境 ™C语言的程序设计实例 33 作者:利尔达技术部 C语言基础知识 • 基本数据类型与输入输出 • 表达式和语句 • 过程化语句 • 函数 • 程序结构 44 作者:利尔达技术部 关键字与标识符 关键字:关键字是一种已经被编译器定义过的标识符,具有特定的含义,因此也称作保留 字,意思是不可以再被用户定义了。 标识符:标识符...

01B03---- C语言介绍
11 作者:利尔达技术部 MSP430 C语言程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 利尔达技术部利尔达技术部 22 作者:利尔达技术部 ™C语言的基础知识 ™C语言的开发调试环境 ™C语言的程序设计实例 33 作者:利尔达技术部 C语言基础知识 • 基本数据类型与输入输出 • 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式和语句 • 过程化语句 • 函数 • 程序结构 44 作者:利尔达技术部 关键字与标识符 关键字:关键字是一种已经被编译器定义过的标识符,具有特定的含义,因此也称作保留 字,意思是不可以再被用户定义了。 标识符:标识符用来定义变量、函数、标号以及用户定义对象的名称。标识符由字母和数 字组成,但第一个字符必须是字母或下划线。 标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人 产生误解。 命名中若使用特殊约定或缩写,则要有注释说明。 自己特有的命名风格,要自始至终保持一致,不可来回变化。 对于变量命名,禁止取单个字符(如i、j、k...), 建议 关于小区增设电动车充电建议给教师的建议PDF智慧城市建议书pdf给教师的36条建议下载税则修订调整建议表下载 除了要有具体含义外,还能表明其变量类型、数 据类型等,但i、j、k作局部循环变量是允许的。 命名 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 必须与所使用的系统风格保持一致,并在同一项目中统一,比如采用UNIX的全小写加下划线 的风格或大小写混排的方式,不要使用大小写与下划线混排的方式,用作特殊标识如标识成员变量或全 局变量的m_和g_,其后加上大小写混排的方式是允许的。 基本数据类型与输入输出 55 作者:利尔达技术部 数据基本类型 数据类型 字节 数值范围 Char 1 -128~127 Unsigned char 1 0~255 Short 2 -32768~32767 Unsigned short 2 0~65535 Int 2 -32768~32767 Unsigned int 2 0~65535 Long 4 -231~231-1 Unsigned long 4 0~232-1 Long long 8 Unsigned long long 8 Float 4 -+1.18E-38~-+3.39E+38 Double 32 Double 64 66 作者:利尔达技术部 非基本类型: 1:数组 2:指针 3:空类型 4:结构 5:联合 6:枚举 77 作者:利尔达技术部 数组、指针、结构、联合 如: int array[5] = {1,2,3,4,5}; int * pointer; struct date { int month; int year; } date1; union num { int a; char b; }num1; Array[0] = date1.month; Array[1] = num1.a; 88 作者:利尔达技术部 printf(格式控制字符串,输出项1,输出项2,…) scanf(格式控制字符串,地址1,地址2,…) %d,%c,%o,%x,%f 99 作者:利尔达技术部 表达式和语句 • 表达式: • 表达式是操作符、操作数和标点符号序列,其目的是用来说明一个计算过程 • 语句: • 语句是用来规定程序执行的控制流,C语言中所有操作运算都通过表达式来实现。 • 由表达式组成的语句称为表达式语句,它由一个表达式后接一个分号“;“组成 • 表达式和语句的一个重要差别是:表达式具有值,而语句是没有值的。 1010 作者:利尔达技术部 • C语言的运算符 • 1、赋值运算符:= • 2、算术运算符: +、-、*、/、%、++、- - • 3、关系运算符: >、>=、<、<=、==、!= • 4、逻辑运算符: &&、||、! • 5、位运算符:&、|、^、~、>>、<< • 6、地址运算符:&、* • 7、条件运算符:表达式1 ?表达式2:表达式3 • 8、逗号运算符:, • 9、强制转换运算符:()-强制转换,如(int ) a—将a转换为整型 • … 1111 作者:利尔达技术部 过程化语句 • 语句按功能可以分为两类:一类用于描述计算机执行的操作运算(如表达式 语句),即操作运算语句;另一类是控制上述操作运算的执行顺序,即流程 控制语句,也称为过程化语句。 • while语句 • do … while语句 • for 语句 • switch语句 • break语句 • continue语句 • goto语句 1212 作者:利尔达技术部 函数和变量定义 函数定义的一般形式:类型说明符 函数名(参数列表) 如: Int a=0, b=0,c;-全局变量 int func(char a, char b);-定义函数 Int main(void)-主函数 { c = func(a,b);-调用函数 } Int func(char a, char b)-实现函数 { int c;-局部变量 c=a+b; return c; } 函数 1313 作者:利尔达技术部 程序结构 • 外部存储类型 • 静态存储类型:变量,函数 • 作用域:局部,函数,函数原型,文件 • 可见性 • 生命期 • 头文件: 类型声明,函数声明,常量定义,全局变量声明 一般函数定义,数据定义 1414 作者:利尔达技术部 • 函数: • 数组: • 指针: • 位运算: • 存储类型: 1515 作者:利尔达技术部 位运算 (&, |, ^, ~ , <<, >>) 1&1=1,1&0=0;0&1=0;0&0=0 1|1=1,1|0=|;0|1=1;0|0=0 1^1=0,1^0=0;0^1=1;0^0=0 ~1=0,~0=1; 0x8f & 0x80 = 0x80; 1000,1111&1000,0000=1000,0000 0x80 | 0x01 = 0x81; 1000,0000 | 0000,0001 =1000,0001 0x80 ^ 0x01 = 0x81; ~0x01 = 0xfe; 0x01 >>1 结果为0;0x01<<1 结果为0x20 1616 作者:利尔达技术部 • 存储类型: • 变量:局部变量、全局变量、外部变量、静态 变量 • 函数: 1717 作者:利尔达技术部 • 扩展关键字: • 类型属性: • 存储器属性:__data16,__regvar • 一般类型属性: • 函数类型属性:__interrupt,__monitor和__task • 数据类型属性:const,volatile • 对象属性: • 用于变量:__no_init • 用于函数和变量:location,@和__root • 用于函数:__intrinsic, __noreturn,__raw, __save_reg20和 vector 1818 作者:利尔达技术部扩展关键字 • 类型属性: __data16:__data16 int x; __regvar:__regvar __no_init type variable_name @ location; __interrupt:#pragma vector=TIMERA0_VECTOR __interrupt void TA0_ISR (void) __monitor:函数执行过程中禁止中断 __task: 不保存寄存器 Const: Volatile: 1919 作者:利尔达技术部 对象属性: 用于变量:__no_init : __no_init int myarray[10]; #pragma object_attribute=__no_init int myarray[10]; 用于函数和变量:location,@和__root 用于函数:__intrinsic, __noreturn,__raw, __save_reg20和 vector 扩展关键字 2020 作者:利尔达技术部 constseg: 语法: #pragma constseg={SEGMENT_NAME|default} 例子: #pragma constseg=MY_CONSTANTS const int factorySettings[] = {42, 15, -128, 0}; #pragma constseg=default • Pragma伪指令: • constseg • dataseg • location • type_attribute • object_attribute • vector 2121 作者:利尔达技术部 dataseg: 语法: #pragma dataseg={SEGMENT_NAME|default} 例子: #pragma dataseg=MY_SEGMENT __no_init char myBuffer[1000]; #pragma dataseg=default • Pragma伪指令: • constseg • dataseg • location • type_attribute • object_attribute • vector 2222 作者:利尔达技术部 location : 语法: #pragma location={address|SEGMENT_NAME} 例子: #pragma location=0x022E __no_init volatile char PORT1; #pragma location="foo" char PORT1; • Pragma伪指令: • constseg • dataseg • location • type_attribute • object_attribute • vector 2323 作者:利尔达技术部 type_attribute : 语法: #pragma type_attribute=type_attribute[,type_attribute ,...] 例子: #include "intrinsics.h" #pragma type_attribute=__regvar #pragma object_attribute=__no_init #pragma location=__R4 short x; __no_init __regvar short x @__R4; • Pragma伪指令: • constseg • dataseg • location • type_attribute • object_attribute • vector 2424 作者:利尔达技术部 object_attribute : 语法: #pragma object_attribute=object_attribute[,object_attri ute,...] 例子: #pragma object_attribute=__no_init char bar; • Pragma伪指令: • constseg • dataseg • location • type_attribute • object_attribute • vector 2525 作者:利尔达技术部 • 内部函数(一): 2626 作者:利尔达技术部 内部函数(二): 2727 作者:利尔达技术部 • 段参考: • // Data read/write segments (RAM) • // ============================== • // DATA16_I 0200-09FF Initialized variables • // DATA16_Z 0200-09FF Zero initialized variables • // DATA16_N 0200-09FF Uninitialized variables • // CSTACK 0200-09FF Run-time stack/auto variables • // HEAP 0200-09FF The heap used by malloc and free • // Program and non-volatile segments (FLASH) • // ========================================= • // INFO 1000-10FF Information memory • // CSTART 1100-FFDF cstartup program code • // CODE 1100-FFDF Program code • // DATA16_C 1100-FFDF Constant "const" variables AND String literals • // DATA16_ID 1100-FFDF Initializers for DATA16_I • // DIFUNCT 1100-FFDF Dynamic initialization vector used by C++ • // CHECKSUM 1100-FFDF The linker places the checksum byte(s) in this segment, • // when the -J linker command line option is used. • // INTVEC FFE0-FFFF Interrupt vectors 2828 作者:利尔达技术部 汇编语言接口: C语言与汇编混合编程有3种 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 : • 内部函数 • 直接嵌入 • 调用汇编模块 2929 作者:利尔达技术部 调用内部函数: 因为内部函数本身是由汇编语言实现的,所以调用内部函数本身就是在 C语言中嵌入汇编语言。不过内部函数数量很少,只能实现特定的功 能。 例: _BIS_SR(LPM0_bits + GIE); 3030 作者:利尔达技术部 直接嵌入: 使用__asm或asm扩展关键字。 例: bool flag; void foo() { while (!flag) { asm("MOV.B &P1IN,&flag"); } } 注意: 这种方法使用起来很简单,但编译器只是简单地将汇编语句嵌入程序中,不考虑与前后语句 是否匹配,因此有可能会造成不稳定。它有几条限制: • 编译器编译时使用不同的优化级别会忽略嵌入的汇编语句,或者不进行优化。 • 一些汇编指令不能嵌入。 • 不能访问局部变量。 • 不能声明语句标号。 不推荐使用这种方法! 3131 作者:利尔达技术部 调用规则: MSP430寄存器分为两组: • 临时寄存器:R12~R15 • 受保护的寄存器:R4~R11 参数传递: 参数传递可以通过寄存器或者堆栈进行,下面3类参数只能通过堆栈传 递:结构和联合类型、double类型、参数不确定的函数。 3232 作者:利尔达技术部 寄存器传递参数的安排: 第一个参数使用R12(8、16位参数)或R13:R12(32位参数)。 第二个参数使用R14(8、16位参数)或R15:R14(32位参数)。 如果有更多参数,则使用堆栈。 64位参数使用R15:R14: R13: R12或R11:R10: R9: R8。 3333 作者:利尔达技术部 堆栈传递参数的安排: 参数入栈是按照函数声明的顺序从右向左进行的,先压入最右边的 参数,然后依次向左入栈。最左边的两个参数如果无法用寄存器传 递,那么也压入堆栈。 3434 作者:利尔达技术部 函数的返回值通过寄存器传递: 返回值为8位或16位时使用寄存器R12。 返回值为32位时使用寄存器R13:R12。 返回值为64位时使用寄存器R15:R14: R13: R12或R11:R10: R9: R8。 返回值为结构、数组或者联合体时使用寄存器R12,返回的是指向它们的指针。 3535 作者:利尔达技术部 C语言的程序设计实例 3636 作者:利尔达技术部 尽心尽力,成就您我!
本文档为【01B03---- C语言介绍】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_223665
暂无简介~
格式:pdf
大小:819KB
软件:PDF阅读器
页数:0
分类:互联网
上传时间:2013-12-04
浏览量:6