Ejemplo n.º 1
0
/*************************************************************************
*                             野火嵌入式开发工作室
*
*  函数名称:PORTA_IRQHandler
*  功能说明:PORTA端口中断服务函数
*  参数说明:无
*  函数返回:无
*  修改时间:2012-1-25    已测试
*  备    注:引脚号需要自己初始化来清除
*************************************************************************/
void PORTA_IRQHandler()
{
    u8  n = 0;    //引脚号

    /*  根据自己的引脚号,自己编写,这里给出 n= 0 的模版,即 PTAn 产生外部中断
     *  也给出 n=26 例子 ,自行修改 n 即可  ,添加用户任务就行
     */

    //========================== n = 0 模版 ========================================
    n = 0;
    if(PORTA_ISFR & (1 << n))           //PTA0触发中断
    {
        PORTA_ISFR  |= (1 << n);        //写1清中断标志位
        /*  以下为用户任务  */



        /*  以上为用户任务  */
    }
    //==============================================================================

    n = 26;
    if(PORTA_ISFR & (1 << n))           //PTA26触发中断
    {
        PORTA_ISFR  |= (1 << n);        //写1清中断标志位
        /*  以下为用户任务  */

        LED_turn(LED0);                 //LED0反转

        /*  以上为用户任务  */
    }
}
Ejemplo n.º 2
0
void reed_switch(void){ 

    u8  n=0;
    
    n=11;
    if(PORTC_ISFR & (1<<n))
    {
        PORTC_ISFR  |= (1<<n);
        rsw++;
        if(rsw==1){
          LED_turn(LED0);}  
        if(rsw==2){
          LED_turn(LED1);}  
        if(rsw==3){
          LED_turn(LED2);}  
        if(rsw==4){
          LED_turn(LED3);}  
        
    }
}
Ejemplo n.º 3
0
/*************************************************************************
*                             野火嵌入式开发工作室
*  
*  函数名称:FTM1_IRQHandler
*  功能说明:FTM1输入捕捉中断服务函数
*  参数说明:无   
*  函数返回:无
*  修改时间:2012-2-25
*  备    注:引脚号需要根据自己初始化来修改,参考现有的代码添加自己的功能
*************************************************************************/
void FTM1_IRQHandler()
{
    u8 s=FTM1_STATUS;               //读取捕捉和比较状态  All CHnF bits can be checked using only one read of STATUS.
    u8 CHn;
    FTM1_STATUS=0x00;               //清中断标志位
    
    CHn=0;
    if( s & (1<<CHn) )
    {
        FTM_IRQ_DIS(FTM1,CHn);      //禁止输入捕捉中断 
        /*     用户任务       */
        LED_turn(LED0);             //翻转LED0

        
        /*********************/
        //不建议在这里开启输入捕捉中断,而是在main函数里根据需要来开启
        //通道 CH0、CH1、Ch2、Ch3 有滤波器  
        FTM_IRQ_EN(FTM1,CHn);  //开启输入捕捉中断
        //delayms(10);        //因为输入的信号跳变过程不稳定,容易触发多次输入捕捉,所以添加延时
        //但考虑到中断不应该过长延时,所以开输入捕捉中断就放在main函数里,根据需要来开启  
    }
    
    /* 这里添加 n=1 的模版,根据模版来添加 */
    CHn=1;
    if( s & (1<<CHn) )
    {
        FTM_CnSC_REG(FTM1_BASE_PTR,CHn) &= ~FTM_CnSC_CHIE_MASK; //禁止输入捕捉中断 
        /*     用户任务       */
        
        
        /*********************/
        //不建议在这里开启输入捕捉中断
        //FTM_CnSC_REG(FTM1_BASE_PTR,n) |= FTM_CnSC_CHIE_MASK;  //开启输入捕捉中断
    }
    
}
Ejemplo n.º 4
0
void PORTB_IRQHandler(void){  
//HS PTB8, field interrupt
  if(PORTB_ISFR & (1<<8)){
		PORTB_ISFR  |= (1<<8);//exit
		//DisableInterrupts;
    LED_turn(LED0);
    p_counter++;
		cur_line = cur_line_start;
		//EnableInterrupts;
	}

//VS PTB9, line interrupt

  if(PORTB_ISFR & (1<<9)){
    PORTB_ISFR  |= (1<<9);//exit
    cur_line++;
    if((cur_line >= 0) && (cur_line < ROW*DISTANCE) && (cur_line % DISTANCE == 0)){
      for (int delay=0; delay < delaytime; delay++) //550
        ;  //get dummy 250  
      for (unsigned char cur_column = 0 ; cur_column < COLUMN; cur_column++)
        data[(ROW-1) - cur_line/DISTANCE][cur_column] = PTB10_IN;
    }
  }
}
Ejemplo n.º 5
0
/*************************************************************************
*                             野火嵌入式开发工作室
*  
*  函数名称:PIT0_IRQHandler
*  功能说明:PIT0 定时中断服务函数
*  参数说明:无   
*  函数返回:无
*  修改时间:2012-2-18    已测试
*  备    注:
*************************************************************************/
void PIT0_IRQHandler(void)
{
    LED_turn(LED0);             //LED0反转
    PIT_Flag_Clear(PIT0);       //清中断标志位
}