中断函数的使用:《单片机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处产生中断向量
111111外部中断例题:通过P1
7口电量发光二极管,然后外部输入一脉冲串,则发光二极管亮、暗交替#includeSbitP1_7=P1^7;Voidtnterrup