⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isr.c

📁 我用单片机8952和电压比较器339做了一个简单的电容容量测量表
💻 C
字号:
/******************************************************************
   本程序只供学习使用,未经作者许可,不得用于其它任何用途
      我的邮箱:computer-lov@tom.com
        欢迎访问我的blog:  http://computer00.21ic.org

ISR.C文件   中断处理函数

Created by Computer-lov
Date: 2004.11.12

Edit date:2006.3.2

Version V1.1
Copyright(C) Computer-lov 2004-2014
All rigths reserved      
*******************************************************************/


#include "hardware.h"
#include "ISR.H"
#include "main.h"

void Exterior_0_interrupt(void) interrupt 0
{
 TR0=0;
 capacity_measure_end=1;
}

void Count_0_interrupt(void) interrupt 1
{
 TVH0++;
}

void Exterior_1_interrupt(void) interrupt 2
{

}

void Count_1_interrup(void) interrupt 3
{
 TL1=tl1;
 TH1=th1;
 SQUARE_WAVE_OUT=!SQUARE_WAVE_OUT;
}

void Serial_port_interrupt(void) interrupt 4
{

}

unsigned char key_old=0,key_new=0,key=0,key_pressed_time=0,time_out=0;

/*--------------------------------------------------------------------------
                     定时-计数器2中断
               采用定时方式,10ms中断一次
---------------------------------------------------------------------------*/
void Count_2_interrupt(void) interrupt 5
{
 TF2=0;
 if(frequency_measure_time){FREQUENCY_IN_ENABLE=1;frequency_measure_time--;}
 else {FREQUENCY_IN_ENABLE=0;frequency_measure_end=0;}
 if(key)return;                        //如果上次按键未处理,则返回
 KEY_IN=0xFF;                          //释放IO
 KEY_IN_ENABLE=0;                      //开键盘输入
 if((KEY_IN&0x0F)==0x0F)               //按键释放
  {
   if(!key_old)                        //如果上次无按键按下
    {
     KEY_IN_ENABLE=1;
     return;                           //返回
    }
   else                                //如果上次有按键按下
    {
     if(key_pressed_time>100)          //按键时间超过一秒,长按键码
      {
       key=key_old+0x80;               //长按键码等于普通按键码加0x80
      }
     else if(key_pressed_time>0)
      {
       key=key_old;
      }
     key_old=0;
    }
   KEY_IN_ENABLE=1;
   return;
  }
 else                                  //按键按下
  {
   key_new=0;
   if(!ENTER)key_new+=KEY_ENTER;       //ENTER键按下
   if(!DOWN)key_new+=KEY_DOWN;         //DOWN键按下
   if(!UP)key_new+=KEY_UP;             //UP键按下
   if(!MENU)key_new+=KEY_MENU;         //MENU键按下
   if(key_new==key_old)                //如果按键按下长于10ms
    { 
     if(key_pressed_time>100)          //如果按键按下超过1s
      {
       KEY_IN_ENABLE=1;
       return;
      }
     else
      {
       key_pressed_time++;
      }
    }
   else
    {
     key_pressed_time=0;
    }
   key_old=key_new;                    //保存本次按键值
  }
 KEY_IN_ENABLE=1;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -