片机原理及应用教程(C语言版)电子教案周国运 第4章 单片机C语言及程序设计.ppt

片机原理及应用教程(C语言版)电子教案周国运 第4章 单片机C语言及程序设计.ppt

  1. 1、本文档共144页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.9.2 C51程序与汇编程序混合编程 2、函数返回值的传递 当函数有返回值时,通过寄存器传递。 表4-11 C51函数返回值传递规则 返回类型 使用的 寄存器 说 明 bit C(进位标志) 由进位标志位返回 char或1字节指针 R7 由R7返回 int或2字节指针 R6,R7 高字节在R6,低字节在R7 long R4~R7 高字节在R4,低字节在R7 float R4~R7 32位IEEE格式 一般指针 R1~R3 R3为存储区,R1为低地址 4.9.2 C51程序与汇编程序混合编程 四、汇编语言文件及函数编写规则 汇编语言文件的构成主要有:定义模块名、函数声明、公共函数声明、引用函数声明、引用变量声明、函数定义等部分。 1、定义模块 对汇编语言文件定义模块名,一般一个文件为一个模块,也可以多个文件为同一个模块名。模块定义格式如下: NAME 模块名 定义模块要放在文件的开始。 例如: NAME EXAMP 4.9.2 C51程序与汇编程序混合编程 2、函数声明 即对本模块定义的函数作声明,其格式为: ?PR?函数名?模块名 SEGMENT CODE 格式中的函数名规则如上面一所述。 例如: ?PR?DISPLAY?EXAMP SEGMENT CODE ?PR?_RIGHT?EXAMP SEGMENT CODE ?PR?_?MUSIC?EXAMP SEGMENT CODE 说明:函数的声明放在文件的前面,一般在模块定义之后,并且紧接着模块定义。 4.9.2 C51程序与汇编程序混合编程 3、公共函数声明 如果函数在其它文件(模块)中调用,必须作公共函数声明。声明格式为: PUBLIC 函数名 例如: PUBLIC DISPLAY PUBLIC _RIGHT PUBLIC _?MUSIC 声明公共函数应放在函数声明之后。 4.9.2 C51程序与汇编程序混合编程 4、引用函数声明 如果在汇编程序中引用了其它文件中的函数,必须作引用声明。声明格式为: EXTRN CODE(函数名) 例如: EXTRN CODE(KEY) EXTRN CODE(_COUNT) 函数引用声明中的“KEY” 函数不传递参数;“_COUNT”函数通过寄存器传递参数。 4.9.2 C51程序与汇编程序混合编程 5、引用变量声明 如果在汇编程序中引用了其它文件中的变量,必须作引用声明。声明格式为: EXTRN 存储区(变量名) 其存储区域类型如表4-2所示的7种类型。 例如: EXTRN DATA(TIMER_SEC) EXTRN IDATA(DIS_BUF) ENTRN XDATA(SEND_BUF) 4.9.2 C51程序与汇编程序混合编程 6、函数编写格式 汇编语言函数的格式如下: RSEG ?PR?函数名?模块名 函数名: …… …… RET(或RETI) 4.9.2 C51程序与汇编程序混合编程 五、汇编语言文件编写举例 例4-6 编写一个完整的汇编语言程序文件,文件包含三个函数,分别是定时器/计数器T1产生方波信号的中断函数、循环右移多位函数和循环左移多位函数; 参数传递:T1的计数初值通过全局变量T1_H、T1_L传递。 左移、右移函数都有两个入口参数(被移位的数、移位的位数)和返回值(被移位后的数) ,要求通过寄存器传递。所有参数都是无符号字符型数据。 4.9.2 C51程序与汇编程序混合编程 程序如下: NAME EXAMP ;定义模块名 ?PR?T1_INT?EXAMP SEGMENT CODE ?PR?_RIGHT?EXAMP SEGMENT CODE ?PR?_LEFT?EXAMP SEGMENT CODE PUBLIC _RIGHT ;公共函数声明 PUBLIC _LEFT EXTRN DATA(T1_H) ;引用外部变量声明 EXTRN DATA(T1_L) 4.9.2 C51程序与汇编程序混合编程 CSEG AT 001BH ;设置T1中断入口 LJMP T1_INT RSEG ?PR?T1_INT?EXAMP ;定义T1中断处理函数 T1_INT: MOV TL1, T1_L MOV TH1, T1_H CPL P1.7 RETI 4.9.2 C51程序与汇编程序混合编程 RSEG ?PR?_RIGHT?EXAMP ; 右移函数 _RIGHT :

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档