- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 实例: sfr P1=0x90; /* P1的SFR定义 */ sfr P3=0xb0; /* P3的SFR定义 */ sbit DIPswitch = P1^4; /* P1口位4的DIP开关输入 */ sbit greenLED = P1^5; /*P1口位5的绿LED输出 */ void main(void){ unsigned char inval; inval = 0; /* inval的初始化值 */ while(1){ * if (DIPswitch==1) {//检查P1. 4输出是否为高 inval = P1 0x0F; /* 从P1读位0~3 */ greenLED = 0; /* 置P1. 5输出为低 */ } Else{ /* 若P1. 4输入为低 */ greenLED =1; /* 置P1. 5输出为高 */ } P3 =(P30xF0)| inval;/*值输出到P3.0~P3.3 */ } } * 4.3.7 中断服务函数与寄存器组定义 定义中断服务函数的一般形式为: 函数类型函数名(形式参数表)〔interrupt n〕[using n] 关键字interrupt后面的n是中断号,n的取值范围为0~31,编译器从8n+3处产生中断向量,具体的中断号n和中断向量取决于不同的8051系列单片机芯片。8051单片机的常用中断源和中断向量见表6-1。 * 关键字using,专门用来选择8051单片机中不同的工作寄存器组。using后面的n是一个0~3的常整数,分别选中4个不同的工作寄存器组。在定义一个函数时using是一个选项,如果不用该选项,则由编译器选择一个寄存器组作绝对寄存器组访问。需要注意的是,关键字using和interrupt的后面都不允许跟带运算符的表达式。 * 关键字using对函数目标代码的影响如下: 在函数的入口处将当前工作寄存器组保护到堆栈中;指定的工作寄存器内容不会改变。函数返回之前将被保护的工作寄存器组从堆栈中恢复。 使用关键字using在函数中确定一个工作寄存器组时必须十分小心,要保证任何寄存器组的切换都只在仔细控制的区域内发生,如果不做到这一点将产生不正确的函数结果。另外还要注意,带using属性的函数原则上不能返回bit类型的值。并且关键字using不允许用于外部函数。 * 关键字interrupt也不允许用于外部函数,它对中断函数目标代码的影响如下: 在进入中断函数时,特殊功能寄存器ACC,B,DPH,DPL,PSW将被保存入栈;如果不使用寄存组切换,则将中断函数中所用到的全部工作寄存器都入栈;函数返回之前,所有的寄存器内容出栈;中断函数由8051单片机指令RETI结束。 * 下面给出一个中断函数定义的例子。 ? static void timer0_isr (void); /* 定时器0中断服务程序 */ static void timer0_isr (void) interrupt 1 using 1 { unsigned i; /* 停止定时器0, 然后改变定时器的计数值, 以得到10ms的中断,再次启动定时器 */ TR0 = 0; /* 停止定时器0 */ i = TIMER0_COUNT + TL0 + (TH08); TL0 = i; TH0 = i 8; TR0 = 1; /* 启动定时器0 */ timer0_tick++; } * 4.3.8函数的参数和局部变量的存储器模式 C51编译器允许采用三种存储器模式:SMALL、COMPACT和LARGE。一个函数的存储器模式确定了函数的参数和局部变量在内存中的地址空间。处于SMALL模式下的函数的参数和局部变量位于8051单片机的内部RAM中,处于COMPACT和LARGE模式下的函数的参数和局部变量则使用8051单片机的外部RAM。在定义一个函数时可以明确指定该函数的存储器模式,一般形式为: 函数类型函数名(形式参数表) [存储器模式] 其中,存储器模式是C51编译器扩展的一个选项。不用该选项时即没有明确指定函数的存贮器模式,这时该函数按编译时的默认存储器模式处理。 * 例4.19 函数的存储器模式 #pragma large /* 默认存储器模式为LARGE */ extern int calc(char i,in
您可能关注的文档
- 成本会计学 第2版 候晓红 等主编 cost7 COST8(2008-12)新.ppt
- 成本会计学 第2版 候晓红 等主编 cost7new(2008-12)新.ppt
- 成本会计学 第2版 候晓红 等主编 COST8(2008-12)新.ppt
- 成本会计学 第2版 候晓红 等主编 cost9new(2008-12)新.ppt
- 成功社交培训教程 杨秋平 11-姿态设计与训练新.ppt
- 成功社交培训教程 杨秋平 13-自信心提升训练2新.ppt
- 城市公共交通运营管理 莫露全 刘毅 等编著 第十二章 城市轨道交通运营管理 的岗位结构与职责规定新.ppt
- 城市轨道交通车辆制动系统维护与检修 李益民 单元八 NABTESCO型制动控制系统新.ppt
- 城市轨道交通车辆制动系统维护与检修 李益民 单元二 风源系统新.ppt
- 城市轨道交通车辆制动系统维护与检修 李益民 单元九 基础制动装置新.ppt
- 单片机系统设计与应用实例 韩志军 主编 第九章新.ppt
- 单片机应用技术 谢敏 第5章 单片机的中断与定时系统新.ppt
- 单片机应用技术 谢敏 第9章 51系列单片机C程序设计新.ppt
- 单片机应用项目式教程——基于Keil和Proteus 张志良 第2章 C51编程基础新.ppt
- 单片机原理、应用与Proteus仿真 兰建军 第3章 单片机C51程序设计新.ppt
- 单片机原理及其应用 陈立周 陈宇 第5章新.ppt
- 单片机原理及应用 韩峻峰 4新.ppt
- 单片机原理及应用 徐敏 第1章 绪论新.ppt
- 单片微机原理与应用 罗印升 素材包 第8章 51系列单片机的接口技术新.ppt
- 导购实务 王艳霞 项目二新.ppt
最近下载
- 国开《形势与政策》2025秋专题测验1-5答案.pdf VIP
- 中小学生常见心理健康问题的识别及干预.ppt VIP
- 城市轨道交通服务礼仪:城市轨道交通服务礼仪的基础知识PPT教学课件.pptx VIP
- 第11课 浮力(教学设计)-四年级科学上册(苏教版).pdf
- 大连海事大学2020-2021年《货币银行学》期末考试试卷(A卷)含参考答案.docx
- 兖州人民医院护理人员招聘简章.DOC VIP
- 下肢静脉曲张病人的护理.ppt VIP
- 2025年中考数学总复习《尺规作图》专项检测卷(带答案).pdf VIP
- 角在生活中的应用.pptx VIP
- 牛津上海版四年级上册英语Module4 Unit 3 Weather (period 3 Weather Talk about Christmas)课件.pptx VIP
原创力文档


文档评论(0)