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

📄 main.c

📁 检测喷轨的发生器程序
💻 C
字号:
//************************************************************/
//喷轨信号发生器检测仪
//单片机为16f877a 8Mosc
//编译软件为HICC-16
//************************************************************/
#include <pic.h>
#include    <math.h>
 __CONFIG(0x1f76);  
extern  void initset();  				//定义引用的函数

bit  TimeEnd=0;	


unsigned char keyback=0;
unsigned char RpmCount=0,RpmSum=0,keyflag=0;  //


#define nop() asm("nop")
#define clrwdt() asm("clrwdt")

#define keyport1 RC0               //按键开关
#define keyport2 RC1               //按键开关

//RC1   低速   pin35
//RC2   中速   pin36
////RC1为低电平,  RC2为低电平  转速不输出
//RC1为低电平,  RC2为高电平  转速为低
//RC2为高低电平,RC2为低电平  转速为中
//RC1,RC2全部为高            转速为高
//RB1 9PIN         转速状态灯
//RB2 10PIN
//RB1 亮  RB2灭    转速为低  
//RB1 灭  RB2亮    转速为中 
//RB1 亮  RB2亮    转速为高
#define  OUT1     RD0         // ;1缸信号输出   38pin
#define  OUT2     RD1        //  ;2缸信号输出   39pin
#define  OUT3     RD2        //  ;3缸信号输出   40pin
#define  OUT4     RD3        //  ;4缸信号输出   41pin
#define  LED1     RB1        //  ;状态灯
#define  LED2     RB2      

//********************************************************/
//中断子程序
//Timer2中断服务子程序,  2ms中断一次
//********************************************************/
//#pragma interrupt_level 1       //该宏语句为允许中断调用子程序
void interrupt IRQ(void)
{
 if(TMR2IF)
  {
   TMR2IF=0; 
   RpmCount++;
   if(RpmCount>RpmSum)
    {
      RpmCount =0;
      TimeEnd  =1;     //退出标志
     RD0=1;RD1=1;RD2=1;RD3=1;TMR2IE=0;TMR0IE=1;TMR0IF=0;TMR0=0;
    }
  }
 if(TMR0IF==1&TMR0IE==1)
  { TMR0IF=0;RD0=0;RD1=0;RD2=0;RD3=0;TMR2IE=1;TMR0IE=0;TMR2=0x00;}
}

//**********************************************************/
//延时程序(8ms)
//**********************************************************/
void    DELAY()
{  
   unsigned   char  u,x;
   for(x=0;x<41;x++)
    { clrwdt();
      for(u=110;--u;) continue;
    }    
}

//**********************************************
//按键扫描
//**********************************************
void keyscan()
{
               //按键按动检测
   if(keyport1==1&keyport2==1)
    {
      DELAY();
      if(keyport1==1&keyport2==1)
      {keyflag=3; }
    }
  else if(keyport1==1&keyport2==0)
    {
      DELAY();
      if(keyport1==1&keyport2==0)
      {keyflag=1;}
    }
  else if(keyport1==0&keyport2==1) 
    {
      DELAY();
      if(keyport1==0&keyport2==1)
      {keyflag=2;}
    }
  else if(keyport1==0&keyport2==0) 
     {
      DELAY();
      if(keyport1==0&keyport2==0)
      {keyflag=0;}
    }
  
  
}

//****************************************************************/
//****************************************************************/
void main()
{
  initset(); 
  keyflag=0; 
  keyback=0;
 
 while(1) 
  {  clrwdt();
     
    keyscan();   //按键扫描   
  

  if(keyback!=keyflag)
    {
      if(keyflag==0) 
       {RpmSum=0;LED1=0; nop();nop();LED2=0;nop();nop();RD0=0;nop();nop();RD1=0;nop();nop();RD2=0;nop();nop();RD3=0;TMR2IE=0;TMR0IE=0;}
      else if(keyflag==1) 
       {RpmSum=60;LED1=1;nop();nop(); LED2=0;nop();nop();RD0=1;nop();nop();RD1=1;nop();nop();RD2=1;nop();nop();RD3=1;TMR2IE=0;TMR0IE=1;}
      else if(keyflag==2) 
       {RpmSum=30;LED1=0; nop();nop();LED2=1;nop();nop();RD0=1;nop();nop();RD1=1;nop();nop();RD2=1;nop();nop();RD3=1;TMR2IE=0;TMR0IE=1;}
      else if(keyflag==3) 
       {RpmSum=15; LED1=1; nop();nop();LED2=1;nop();nop();RD0=1;nop();nop();RD1=1;nop();nop();RD2=1;nop();nop();RD3=1;TMR2IE=0;TMR0IE=1;}
      keyback=keyflag;
    }
  }
   

}

⌨️ 快捷键说明

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