单片机第五章:C语言程序设计.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机第五章:C语言程序设计

5.3.1 函数 5.可重入函数 C编译程序通常将函数的局部变量分配在存储器的固定位置 如果正在执行该函数时发生了中断,而中断服务程序中也调用该函数,先前的局部变量值便会被破坏。 类似的情况在实现函数递归调用时也会发生 定义为可重入函数后,编译程序产生能够保护局部变量的代码 reentrant 5.3.1 函数 6.中断处理函数 中断服务程序,是CPU响应中断后要执行的一段程序,在C语言中组织成一个函数的形式 编写中断处理函数时,程序员仅需关心中断类型号和寄存器组的选择,编译程序会自动产生中断向量和返回地址的入栈及出栈代码 interrupt using 5.3.1 函数 7.intrinsic函数 一些常用的只进行简单处理的函数,LCALL或ACALL的执行代价太高 intrinsic函数是一类用汇编语言代码实现的短小函数,若有对intrinsic函数的调用,编译程序将会直接用被调用函数代码替换函数调用语句 5.3.2 流程控制 1.分支 if语句 switch-case结构 2.循环 goto语句 while结构 do…while结构 for结构 break和continue语句 5.3.3 输入与输出 一些C开发环境提供了流式输入/输出函数,可以实现通过串行口或用户自定义I/O接口的输入/输出操作,例如getchar、gets、scanf、putchar、puts、printf等 输入/输出功能需要调用_getkey和putchar两个函数,这两个函数的默认实现是通过串行口实现的 如果使用输入/输出函数,还需要在程序中加入一些代码,以便调用时已经对串行口进行了适当的初始化工作 5.3.4 程序的入口 在main函数执行之前,已经做了一些初始化 若有在main函数执行之前就应当初始化的资源,或者需要将存储区初始化为特定的值,可以在STARTUP.A51中修改或添加代码 单片机程序的入口其实还是0000H,在STARTUP.A51中初始化代码的最后一条指令才转向main函数执行 5.4 C语言与汇编语言的混合编程 5.4 C语言与汇编语言的混合编程 C语言调用汇编语言程序时,被调用函数(汇编语言函数)要在调用函数(C语言函数)所在文件中说明。对于汇编语言程序有以下要求 (1) 要使用SEGMENT伪指令定义可重定位的CODE段 (2) 要根据不同情况对函数名进行转换 (3) 须使用PUBLIC伪指令将被调用函数说明为外部可用函数 (4) 若有参数传递,按规则使用参数 (5) 若有返回值,按照规则存入寄存器 5.4 C语言与汇编语言的混合编程 函数首部 符号名 说明 void func( void ) FUNC 无参数传递或不含寄存器参数的函数名不作改变 void func( char ) _FUNC 带寄存器参数的函数名加“_”前缀 void func( void ) reentrant _?FUNC 可重入函数前加“_?”前缀 混合编程 例:编写汇编语言函数max,参数为两个8位无符号数,功能是求出其中的大数返回。 在C语言中可按以下的方式声明和调用 extern unsigned char max(unsigned, unsigned); void main(void) { unsigned char x,y; x = 130; y = 131; x = max(x,y); while(1); } 两个参数分别在R7和R5中传递到子程序,返回值应保存在R7中。 混合编程 PUBLIC _MAX ;声明 MIXED SEGMENT CODE ;定义一个可重定位的段 RSEG MIXED ;选择MIXED为当前段 _MAX:MOV A, R7 ;第一个参数 CLR C SUBB A, R5 ;减去第二个参数 JNC _MAX_RET ;无借位,第一个参数值大 MOV A, R5 ;有借位,第二个参数值大 MOV R7, A ;返回值在R7 _MAX_RET: RET END 《单片机应用系统设计》教学课件 第5章 MCS-51 C语言程序设计 5.1 C语言与MCS-51单片机 C语言是一种通用的计算机程序设计语言,代码效率高,数据类型和运算符丰富,有良好的程序结构,适用于各种应用系统的程序设计,是目前使用较广的单片机编程语言。 本章重点介绍在单片机上使用MCS-51 C语言的特殊数据类型、存储模式、程序的结构、混合编程。 5.1.1 C语言程序开发过程 一

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档