中断函数使用.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  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文档。上传文档
查看更多
中断函数使用

中断函数的使用:《单片机C语言编程与实例》 中断函数通过使用interrupt关键字和中断编号0-4来实现。 使用该扩展属性的函数声明语法如下: 返回值 函数名 interrupt n N对应中断源的编号 中断编号告诉编译器中断程序的入口地址,它对应者IE寄存器中的使能位,即IE寄存器中的0位对应着的外部中断0,相应的外部中断0的中断编号是0。 中断编号 中断源 入口地址 0 外部中断0 0003H 1 定时器/计数器0溢出 000BH 2 外部中断1 0013H 3 定时器/计数器1溢出 001BH 4 串行口中断 0023H 当正在执行一个特定任务是,可能有更紧急的事情需要CPU处理,这就涉及到终端优先级,搞优先级的中断可以中断正在处理的底有限级中断程序,因而最好给每种优先级分配不同的寄存器组。在c51中可以使用using制定的寄存器组,using后的变量为0-3的长整数,分别表示51单片机内的四个寄存器组。 中断函数的完整语法及实例如下: 返回值 函数名(【参数】)【模式】【重入】interrupt n [using n] Unsigned int interruptent; Unsigned char second; Void time0(void)interrupt 1 using 2 { if(++interruptent==4000) %计数到4000 {second++; % 另一个计数器 Interruptent=0; %计数器清零 } } 要是摸个中断源的申请得到相应,必须保证EA=1和相应的允许位为1 定义中断服务函数的一般形式为:: 函数类型 函数名(形式参数表)[interrupt n][using n] Interrupt 后面的n是中断号,n的取值范围为0-31,编译器从8n+3处产生中断向量。 11.111111 外部中断 例题:通过P1.7口电量发光二极管,然后外部输入一脉冲串,则发光二极管亮、暗交替 #include REGX51.H Sbit P1_7=P1^7; Void tnterrupt0()interrupt 0 using 2//定义定时器0 { P1_7=!P1^7;} Void main() { EA=1;//开启总中断 IT0=1;//外部中断0低电平触发 EX0=1; //外部中断0 P1_7=0; Do()while(1); } 2222相套中断 外部中断INT1触发后,启动计数器0,计数达到10次后停止计数,启动定时器1,由定时器1控制定时,由P1.7输出周期为200ms的方波性能好,接受2次中断后关闭方波发生器,P1.7置低。 #include REGX51.H #define uchar unsigned char Uchar data a,b,c; Void tnterrupt0()interrupt 2using 1//定义外部中断1 { a++;} Void time0()interrupt 1using 2//定义计数器0 { TL0=0Xff; B++; } Void time1()interrupt 3using 3//定义计数器1 { TH1=0x06; c--; } Sbit P1_7=P1^7; Void main() { P1_7=1; //初始化 TCON=0x01; // //外部中断为低电平出触发方式 TMOD=0x27; //启动定时器1和计数器0,工作方式2 IE=0x8B; //开中断 a=0; do{}while(a!=1); //等待外部中断 P1_7=!P1_7;//取反 TL0=0xFF;//初值 TH0=0x06;//初值 b=0; TR0=0; TR1=1; Do { C=0xC8; Do{}while(c!=0); P1_7=!P1_7; }while(a!=3); TR1=0; P1_7=0; EA=0;//关闭总中断 EX0=0; //禁止外部中断 } C51单片机中断函数 2011-04-20 12:38 开始写中断函数之前,我们来一起回顾一下,单片机的中断系统。 ????? 中断的意思(学习过微机原理与接口技术的同学,没学过单片机,也应该知道),我们在这里就不讲了,首先来回忆下中断系统涉及到哪些问题。 ???? (1)中断源:中断请求信号的来源。(8051有3个内部中断源T0,T1,串行口,2个外部中断源INT0,INT1(这两个低电平有效,上面的那个横杠不知道怎么加上去)) ???? (2)中断响应与返回:CPU采集到中断请求信号,怎样转向特定的中断服务子程序,并在执行完之后返回被中断程序继续执行。期间涉及到CPU响应中断的条件,现场保护,现场

文档评论(0)

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

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档