- 1、本文档共64页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MOV A, MULA1 MOV B, MULB2 MUL AB ADD A, RESUL1 MOV RESUL1, A MOV A, B ADDC A, RESUL2 MOV RESUL2, A CLR A ADDC A, #00H MOV RESUL3, A;第三次乘 MOV A, MULA2 MOV B, MULB2 MUL AB ADD A, RESUL2 Keil C与汇编混合使用 所谓混合编程,就是在一个项目中,同时使用C和汇编两种语言。?C 语言和汇编语言混合编程的方法形式多样,可以是以汇编语言为主 体,在其中内嵌部分C语言;也可以是以C语言为主体在其中加入部 分汇编语言(此方法实用价值较高,而被工程师们广泛的采用)。 在此方法中,用汇编语言编写对有关硬件的驱动和处理、复杂的算 法、实时性要求较高等底层的东西,来满足单片机对某些硬件高 效、快速、精确的处理等性能上的要求。用C语言来编写程序的主体 部分。这样就将C语言的可移植性强和可读性好与汇编语言的高效、 快速及可直接对硬件进行操作等优点相结合。两者优劣互补、相得 益彰,加快我们产品的开发周期,具有极高的现实意义和实用价 值! Keil C与汇编混合使用 一.?KEIL?C51的命名规则 在KEIL?C51中,编译器对C语言程序中的函数会 自动的进行转换,转换规则如下表: 无参数或无寄存器参数传递的函数 void?func1(void) ??- func1 含通过寄存器传递的参数 void?func2(int)?-_func2 可重入函数 void?func3(char)reentrant? -?_func3 Keil C与汇编混合使用 二.?KEIL??C51函数的参数传递规则 Keil C与汇编混合使用 二.?KEIL??C51函数的参数传递规则 Keil C与汇编混合使用 Keil C与汇编混合使用 Keil C与汇编混合使用 Keil C与汇编混合使用 Keil C与汇编混合使用 using m 选项用于实现工作寄存器组的切换,m是中断服务子程序中选用的工作寄存器组号(0 ~ 3)。在许多情况下,响应中断时需保护有关现场信息,以便中断返回后,能使中断前的源程序从断点处继续正确地执行下去。这在MCS-51单片机中,能很方便地利用工作寄存器组的切换来实现。即在进入中断服务程序前的程序中使用一组工作寄存器,进入中断服务程序后,由using m切换到另一组寄存器,中断返回后又恢复到原寄存器组。这样互相切换的两组寄存器中的内容彼此都没有被破坏。 图 1 扩展多个中断源 【例4】下图所示是利用优先权解码芯片,在单片机8031的一个外部中断INT1上扩展多个中断源的原理电路图。图中是以开关闭合来模拟中断请求信号。当有任一中断源产生中断请求,能给8031的INT1引脚送一个有效中断信号,由P1的低3位可得对应中断源的中断号。 #include reg51.h #define uchar unsigned char uchar status; bit flag=0; void service_int1( ) interrupt 2 using 2 /* INT1中断服务程序, { 使用第2组工作寄存器*/ flag = 1; /* 设置标志 */ status = p1 0x07; /* 存输入口状态 */ } void main( ) { IP = 0x04; /*置INT1为高优先级中断*/ IE = 0x84; /*INT1开中断,CPU开中断 */ while(1){ if(flag){ /* 表示有中断发生 */ switch(status){ /*选择中断源分支 */ case 0: program0( ); break; /* 处理IN0 */ case 1: program1( ); break; /* 处理IN1 */ case 2: program2( ); break; /* 处理IN2 */ case 3: program3( ); break; /* 处理IN3 */ case 4: program4( ); break; /* 处理IN4 */ case 5: program5( ); break; /* 处理IN5 */ case 6: program6( ); break; /*
您可能关注的文档
最近下载
- 983T-V-02-211面铣削加工工艺方案设计 机械本科毕业论文.doc
- 钢铁智能冶金技术基础知识单选题100道及答案.docx VIP
- 第三单元 向美丽 而居——和谐的环境 课件 2024——2025学年人美版(2024)初中美术七年级下册.pptx VIP
- 第7课《谁是最可爱的人》课件(共24张PPT) 统编版语文七年级下册.pptx VIP
- 【马拉松】赛事服务(投标文件).docx
- 医院网络信息安全突发事件应急处置预案.pdf VIP
- “法律法规”“师德师风”模拟试卷及答案.pdf VIP
- CECA GC1-2015 建设项目投资估算编审规程.docx VIP
- 小学英语新人教版PEP三年级下册全册教案(2025春).doc
- 装载机司机安全教育考试试题及答案.doc
文档评论(0)