第5章补充 单机C语言基础.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2.中断函数举例 例4-16 本例程序电路图可参考图4-1。下面的程序的功能是:对外部中断1中断次数计数,并送P0口显示。 #include unsigned char ex1_counter 0; void ex1_isr void interrupt 2 P0 ex1_counter++; //加一送P0显示 void main void IT1 1; // INT0 下降沿触发 EX1 1; // 使能INT0 EA 1; // 开总中断 while 1 ; //死循环 3.未用到的中断的处理 为了提高代码的容错能力和系统的可靠性,对于不使用的中断,编写一个空的中断函数,使之在中断入口处生成RETI指令并能通过该指令返回主程序。例如外中断0若不用,可以编写如下空中断函数。 int0_int interrupt 0 //外中断0 timer0_int interrupt 1 //定时器0中断 Int1_int interrupt 2 //外中断1 timer1_int interrupt 3 //定时器1中断 serial_int interrupt 4 //串行口中断 4.6 预处理命令、库函数 4.6.1 预处理命令 预处理命令是在编译前预处理的命令,编译器不能直接对它们处理,是在编译前预先处理的命令。 1)不带参数的宏定义 用指定的标识符来代表一个字符序列。 一般的定义形式为: #define 标识符 字符序列 宏定义后,程序中可以使用宏名,并将形参换成实参。 2)带参数的宏定义 预处理时不但进行字符替换,而且替换字符序列中的形参。一般定义形式如下: #define 标识符(形参) 字符列表 #define S a,b a*b area S 3,2 2.类型定义typedef 使用基本类型定义后声明变量时,用数据类型关键字指明变量的数据类型,而用结构、联合等定义变量时,先定义结构、联合的类型,再使用关键字和类型名定义变量。如果用typedef定义新的类型名后,只要用类型名就可定义新的变量。例如: typedef struct int num; char *name; float score; std;/*定义结构类型std*/ 之后即可以定义这种类型的结构变量。 如:std stu1, stu2; 3.文件包含#include 文件包含命令是将另外的文件插入到本文件中,作为一个整体文件编译。只有用#include命令包含了相应头文件,才可以调用库中的函数。包含命令的一般使用形式为:#include“ 文件名”或#include 4.6.2 库函数 1.本征函数头文件intrins.h intrins.h含有常用的本征函数,本征函数也称内联函数,这种函数不采用调用形式,编译时直接将代码插入当前行。 2.SFR定义的头文件regxxx.h 其中定义了各种型号单片机中特殊功能寄存器及特殊功能寄存器中特定位的定义,是用C语言对单片机编程时最为常用的头文件。 3.绝对地址访问宏定义头文件absacc.h 此头文件定义了几个宏,以确定各存储空间的绝对地址。通过包含此头文件,可以定义直接访问扩展存储器的变量。 常用的库函数头文件还有:stdlib.h(标准函数)、string.h(字符串函数)、stdio.h(一般I/O函数)、stdarg.h(变量参数表)等 4.7 汇编语言与C语言混合编程 4.7.1 C程序与汇编程序之间的参数传递 在混合语言编程中,需要解决的主要问题是入口参数和出口参数的传递。C51可以使用寄存器来传递参数对于C51,它对寄存器的使用通常是隐性的,以Keil为例,他用寄存器最多只能传递3个参数),也可以使用固定的存储器或堆栈。 参数个数 参数类型 参数类型 参数类型 参数类型 char int Long或float 指针 1 R7 R6和R7 R4~R7 R1~R3 2 R5 R4和R5 R4~R7 R1~R3 3 R3 R2和R3 未指定 R1~R3 4.7 汇编语言与C语言混合编程 4.7.1 C程序与汇编程序之间的参数传递 Keil 在函数返回值方面的规定见表 函数返回值类型 寄存器 Bit CY Char R7 Int R6或R7 Long R4~R7 Float R4~R7 指针 R1~R3 4.7 汇编语言与C语言混合编程 4.7.1 C程序与汇编程序之间的参数传递 在C51中调用汇编语言程序还需注意以下几点: 1.被调用函数要在主程序中声明,在汇编程序中,要使用伪指令使CODE选项有效,并且声明为可再定位段类

文档评论(0)

yi593pu + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档