华东交通大学单片机微机原理与应用基础教程第7章c51语言与其程序设计.pptVIP

华东交通大学单片机微机原理与应用基础教程第7章c51语言与其程序设计.ppt

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
华东交通大学单片机微机原理与应用基础教程第7章c51语言与其程序设计

C51程序调用汇编语言程序要注意以下几点: 1) 被调函数要在主函数中说明,在汇编程序中,要使用伪指令使CODE选项有效并声明为可再定位段类型,并且根据不同情况对函数名作转换,见下表。 7.6.2 C51和51汇编语言混合编程 2) 对为其他模块使用的符号进行PUBLIC声明,对外来符号进行EXTRN声明。 3) 参数的传递。在混合语言编程中,关键是入口参数和出口参数的传递,C51编译器可使用寄存器传递参数,也可以使用固定存储器或使用堆栈,由于MCS-51的堆栈深度有限,因此多用寄存器或存储器传递。用寄存器传递最多只能传递三个参数,需选择固定的寄存器,见下表所示。 7.6.2 C51和51汇编语言混合编程 例如:func1(int a),“a”是第一个参数,在R6、R7传递,func2(int b, int c, int *d),“b”在R6,R7中传递,“c”在R4,R5中传递,“d”在R1,R2,R3中传递。如果传递参数寄存器不够用,可以使用存储器传送,通过指针取得参数。 汇编语言通过寄存器或存储器传递参数给C51程序。通过寄存器传递返回值给C51程序,返回值使用寄存器见下表。 7.6.2 C51和51汇编语言混合编程 7.6.2 C51和51汇编语言混合编程 【例7-28】 用P1.0口产生周期为4ms的方波信号,同时用 P1.1口产生周期为8ms的方波信号。分别用汇编语言和C51 语言设计三个模块程序如下: 模块1:用C51编写主程序,使P1.1产生周期为8ms的方波; 模块2:用C51语言编程,使P1.0产生周期为4ms的方波; 模块3:用汇编语言编写延时1ms程序。 程序的执行过程是:模块1调用模块二获得8ms方波, 模块2调模块3,向汇编程序传递字符型参数(x=2),实 现2ms延时。 #includereg51.h #define uchar unsigned char sbit P1_1=P1^1; void delay_4ms(void); /*声明延时4ms函数(模块二)*/ main( ) {uchar i; for(; ; ) {P1_1=0; delay_4ms( ); /*调模块二延时4ms*/ P1_1=1; /*产生8ms方波*/ delay_4ms( ); /*调模块二延时4ms*/ } } 1)模块1程序(P1.1产生周期为8ms的方波) 7.6.2 C51和51汇编语言混合编程 2)模块2程序(delay_4ms:P1.1产生产生周期为4ms的方波) 7.6.2 C51和51汇编语言混合编程 #includereg51.h #define uchar unsigned char sbit P1_0=P1^0; delay_1ms(uchar x); /*声明延时1ms函数(模块三)*/ void delay_4ms(void) {P1_0=0; delay_1ms(2); /*调汇编函数(模块三)*/ P1_0=1; delay_1ms(2); /*调汇编函数(模块三)*/ } 3)模块3程序(汇编语言编写延时1ms程序delay_1ms) 7.6.2 C51和51汇编语言混合编程 PUBLIC _DELAY_1MS ; DELAY_1MS为其他模块调用 DE SEGMENT CODE ;定义DE段为再定位程序段 RSEG DE ;选择DE为当前段 _DELAY_1MS: NOP DELA: MOV R1, #0F8H ;延时 LOP1: NOP NOP DJNZ R1, LOP1 DJNZ R7, DELA ;R7为C51传递来的参数(x=2) EXIT: RET END 程序调试步骤: 7.6.2 C51和51汇编语言混合编程 以上各模块可以先分别汇编和编译,生成的.OBJ文件,然后运行连接将各OBJ

文档评论(0)

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

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

1亿VIP精品文档

相关文档