- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机的C语言程序设计20170318ppt
6、函数的重入 为了提高效率,C51没有提供这种调用堆栈,而是提供一种压缩栈。每个过程被给定同一个空间,用于存放局部变量。过程中的每个变量都存放在这个空间的固定位置。当递归调用这个过程时,会导致变量被覆盖。 在某些实时应用中,非重入函数是不可取的。因为,函数调用时可能会被中断程序中断,而在中断程序中可能再次调用这个函数,所以C51允许将函数定义成重入函数。 重入函数可被递归调用和多重调用, 而不用担心变量被覆盖, 因C51可模拟生成一个可重入变量堆栈 {随存储模式(small, compact, large)不同, 堆栈可在不同的存储器区(idata, pdata, xdata)}, 每次函数调用时的局部变量都会被单独保存。因为这些堆栈是模拟的,重入函数一般都比较大,运行起来也比较慢。 * 不常使用 6、函数的重入 由于一般可重入函数由主程序和中断调用(即递归调用), 所以通常中断程序使用与主程序不同的工作寄存器组。 另外,对可重入函数,在相应的函数前面加上开关#pragma noaregs,以禁止编译器使用绝对寄存器寻址,可生成不依赖于寄存器组的代码。 所以对不依赖于寄存器组的函数可被其他使用了不同的寄存器组的多个函数调用。 * extern char func (); #pragma NOAREGS noaregfunc () { k = func () + func (); } #pragma AREGS aregfunc () using 3 { k = noaregfunc() + func (); } 不常使用 5.2.4 STC15F2K60S2单片机C51程序框架 #include “stc15.h” /* stc15.h为单片机寄存器定义头文件, 具体见附录C */ void delay(long delaytime); //声明子函数,子函数可以有返回值 void main(void) { //…此处可存放应用系统的初始化代码 while(1) //主程序循环 { //根据需要填入适当的内容 delay(100); //可以调用用户自定义的子函数 } } * // 各个子函数声明, 各个中断函数的实现 void delay(long delaytime) { while(delaytime0) delaytime--; //子函数的实现代码 } //---------各个中断函数的实现---------- void INT0_ISR(void) interrupt 0 //外部中断0服务子函数 { //根据需要填入程序代码 } void T0_ISR(void) interrupt 1 //定时器0中断服务子函数 { //根据需要填入程序代码 } void INT1_ISR(void) interrupt 2 //外部中断1服务子函数 { //根据需要填入程序代码 } void T1_ISR(void) interrupt 3 //定时器1中断服务子函数 { //根据需要填入程序代码 } * // 各个中断函数的实现 void UART1_ISR(void) interrupt 4 //串口1中断服务子函数 { //根据需要填入程序代码,注意中断请求标志的清零 } void ADC_ISR (void) interrupt 5 //ADC中断服务子函数 { //根据需要填入程序代码,注意中断请求标志的清零 } void LVD_ISR (void) interrupt 6 //低电压检测中断子函数 { //根据需要填入程序代码,注意中断请求标志的清零 } void PCA_ISR (void) interrupt 7 //PCA中断子函数 { //根据需要填入程序代码,注意中断请求标志的清零 } void UART2_ISR (void) interrupt 8 //串口2中断子函数 { //根据需要填入程序代码,注意中断请求标志的清零 } void SPI_ISR (void) interrupt 9 //SPI中断子函数 { //根据需要填入程序代码,注意中断请求标志的清零 } * //
您可能关注的文档
- 出口货物退免广东国家税务局.ppt
- 出口运输合同海运空运适用各方4000字.doc
- 出口货物退免税评价方法意见稿.doc
- 出口骗税稽查研究的基础.doc
- 出国考察理由.doc
- 出口退税无纸化的定义.ppt
- 出版社处长述职报告共6篇.doc
- 出版社社长述职报告共6篇.doc
- 出访成果报告及反馈表[厅级团组]对外合作与交流处.doc
- 出访请示报告范文.doc
- 中国代餐轻食市场投资潜力及经营效益分析研究报告.docx
- 康复辅助器具检测行业发展及投资价值分析报告.docx
- 海上风电项目可行性研究咨询报告.docx
- 旅游业目的地管理与旅游服务创新趋势研究报告.docx
- 中国建筑结构用钢行业市场全景调研及投资价值评估咨询报告.docx
- 南非矿产品加工行业市场现状供需分析及投资评估规划分析研究报告.docx
- 2025-2030智利锂矿资源国有化争议与电池材料供应链风险报告.docx
- 人工皮肤产业化关键技术突破与市场需求调研报告.docx
- 中国冷却风扇行业市场发展分析及发展趋势与投资前景研究报告.docx
- 中国复合半导体行业销售格局及投资价值研究研究报告.docx
最近下载
- 标准图集-陕09J01-建筑用料及做法.pdf VIP
- 2025年江苏省事业单位综合知识与能力素质(经济统计类)模拟试卷.docx VIP
- 2025年度民主生活会五个带头个人对照检查(含典型案例剖析).docx VIP
- HY_T 0366-2023 海洋数据分类分级标准.docx VIP
- 泵站施工管理工作报告.doc VIP
- ai办公软件培训课件.ppt VIP
- 浙江省杭州市萧山区2024-2025学年八年级上学期期末考试英语试卷(含答案,无听力音频及原文).docx VIP
- 《卵巢囊肿医学》课件.ppt VIP
- 城市建筑群基于弹塑性时程分析的震害评估标准.docx VIP
- 【教学创新大赛】《运动解剖学》教学创新成果报告.pdf VIP
原创力文档


文档评论(0)