资讯详情

N76E003的中断向量函数

学习新唐 N76E003中断向量函数


void UART0_ISR() interrupt 4 using 1 等价于 #pragma vector = 0x23 `串口0 中断IE4.4 的入口地址0x23


8051系列的MCU 基本结构包括:

  • 32个I/O口(4组8bit端口);
  • 两个16位定时计数器;
  • 全双工串行通信;
  • 6个中断源 (2个外部中断,2个定时/计数器中断,1个串口输入/输出中断)
  • 两级中断优先级
  • 128字节内置RAM
  • 独立的64K 字节可以找到数据和代码区

编译器将中断入口地址放置在中断向量种中,中断向量位于代码段的最低地址,串口输入/输出中断共用中断向量。

8051中断向量表如下: 中断源 中断向量 上电复位 0000H 外部中断0 0003H 定时器0 溢出 000BH 外部中断1 0013H 定时器1 溢出 001BH 串行口中断 0023H 定时器2 溢出 0028H

Interrupt 和 using 都是C51 的关键字。C51 使用中断过程interrupt 实现关键字和中断号(0-31)。

IE寄存器 C51 中的8051的 使能位 中断号 中断源 IE0 0 外部中断0 IE1 1 定时器0 溢出 IE2 2 外部中断1 IE3 3 定时器1 溢出 IE4 4 串口中断 IE5 5 定时器2 溢出

Using 用于指定中断服务程序的关键字寄存器组。

用法: using 后跟一个0-3 对应4组工作寄存器。 默认工作寄存器组一旦指定工作寄存器组,就不会被压栈,节省32个处理周期。 缺点是所有调用中断过程必须使用指定的同一寄存器组,否则参数传输将发送错误。

示例代码1

 * FUNCTION_PURPOSE: serial interrupt, echo received data.  * FUNCTION_INPUTS: P0.7(RXD) serial input  * FUNCTION_OUTPUTS: P0.6(TXD) serial output  */ void SerialPort0_ISR(void) interrupt 4  { 
             if (RI==1)      { 
                                               /* if reception occur */         clr_RI;                             /* clear reception flag for next reception */         UART_BUFFER[u16CNT] = SBUF;         u16CNT  ;   riflag =1;     }     if(TI==1)   { 
         clr_TI;   }                  /* if emission occur */  } //UART0 接收中断 #pragma vector = 0x23 //// __interrupt void uart0_recv(void) { 
           if(RI==1)       { 
             clr_RI;     }         //接收中断处理
}

示例代码2

//UART0 接收中断
#pragma vector = 0x23 //串行口中断入口地址
__interrupt void uart0_recv(void)
{ 
        
       if(RI==1)     { 
           clr_RI;    }   //接收中断处理 
}

标签: e003公母对接连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台