单片机-中断函数-(1)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

中断函数的使用:《单片机C语言编程与实例》中断函数通过使用interrupt关键字和中断编号0-4来实现。使用该扩展属性的函数声明语法如下:返回值函数名interruptnN对应中断源的编号中断编号告诉编译器中断程序的入口地址,它对应者IE寄存器中的使能位,即IE寄存器中的0位对应着的外部中断0,相应的外部中断0的中断编号是0。中断编号中断源入口地址0外部中断00003H1定时器/计数器0溢出000BH2外部中断10013H3定时器/计数器1溢出001BH4串行口中断0023H当正在执行一个特定任务是,可能有更紧急的事情需要CPU处理,这就涉及到终端优先级,搞优先级的中断可以中断正在处理的底有限级中断程序,因而最好给每种优先级分配不同的寄存器组。在c51中可以使用using制定的寄存器组,using后的变量为0-3的长整数,分别表示51单片机内的四个寄存器组。中断函数的完整语法及实例如下:返回值函数名(【参数】)【模式】【重入】interruptn[usingn]Unsignedintinterruptent;Unsignedcharsecond;Voidtime0(void)interrupt1using2{if(++interruptent==4000)%计数到4000{second++;%另一个计数器Interruptent=0;%计数器清零}}要是摸个中断源的申请得到相应,必须保证EA=1和相应的允许位为1定义中断服务函数的一般形式为::函数类型函数名(形式参数表)[interruptn][usingn]Interrupt后面的n是中断号,n的取值范围为0-31,编译器从8n+3处产生中断向量。11.111111外部中断例题:通过P1.7口电量发光二极管,然后外部输入一脉冲串,则发光二极管亮、暗交替#includeREGX51.HSbitP1_7=P1^7;Voidtnterrupt0()interrupt0using2//定义定时器0{P1_7=!P1^7;}Voidmain(){EA=1;//开启总中断IT0=1;//外部中断0低电平触发EX0=1;//外部中断0P1_7=0;Do()while(1);}2222相套中断外部中断INT1触发后,启动计数器0,计数达到10次后停止计数,启动定时器1,由定时器1控制定时,由P1.7输出周期为200ms的方波性能好,接受2次中断后关闭方波发生器,P1.7置低。#includeREGX51.H#defineucharunsignedcharUchardataa,b,c;Voidtnterrupt0()interrupt2using1//定义外部中断1{a++;}Voidtime0()interrupt1using2//定义计数器0{TL0=0Xff;B++;}Voidtime1()interrupt3using3//定义计数器1{TH1=0x06;c--;}SbitP1_7=P1^7;Voidmain(){P1_7=1;//初始化TCON=0x01;////外部中断为低电平出触发方式TMOD=0x27;//启动定时器1和计数器0,工作方式2IE=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;//禁止外部中断}

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功