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

📄 main._c

📁 工控计数器ICCAVR的MAGE8程序LED数码显示+4键
💻 _C
字号:
#define MAIN_C
#include "main.h"
#define    ds            0
#define    cp            1
#define    sh_cp       2
long                                Contdata,timeset[3];
unsigned    int                 ti[3],ticnt =0;
unsigned    int                 keytime=0;
unsigned    char              kt[3],keybit;
extern        long                    tempcnt;
extern        unsigned char     trdata_x[ ];
extern        unsigned char     inmtemp;
#pragma interrupt_handler Key_Init:2
void Key_Init(void)    //------------------------------------------------------------------------------INT中断记数
{
    unsigned char j,x;
     j=ACSR&0X20; 
	if( inmtemp!=0)   { if(j==0)   j=0x20;    else      j=0;   }
	if  (j==0)           {  Contdata++;}
	else                  {   Contdata--;}
    for (x=0; x<3;x++)  
	{
    if(tempcnt>=timeset[x])	
	       {
	        if(kt[x]==0) 
			{
			if(trdata_x[x]!=0) {PORTC|=BIT(x+3);}
			ti[x]=ticnt;
			kt[x]=1;
		   }
		 }
     }												    
}

#pragma interrupt_handler bakcnt:3
void    bakcnt(void)    //----------------------------------------------------------------------------
{   
 CLI( );
 powersave();
}
//----------------------------------------------------------------------------------------------
#pragma interrupt_handler timer1_ovf_isr:14
void timer1_ovf_isr(void)
{
 TCNT1H = 0xFD; //reload counter high value
 TCNT1L = 0x8F; //reload counter low value
 if(ticnt<60000)                {ticnt++; keytime++;}
 else                              ticnt=0; 
 if(keytime>1000)             keybit=0xf7;
 if((PINB&0X0f)!=0x0f)      keytime=0;
}
//--------------------------------------------------------------------------------------------
#pragma interrupt_handler int_clr:4
void int_clr(void)
{
 unsigned char m;
                   CLI( );
	               Contdata=0;
				   tempcnt=0;
  for (m=0; m<3;m++) {
                                           PORTC&=~BIT(m+3);	
  		                                   ti[m]=0;    
										   kt[m]=0;
										   }
                   SEI( );
}
//------
void   powersave(void)
{
       unsigned char    m=0;
       WDR();
	   PORTC&=~BIT(cp);
	   for(m=0;m<24;m++)
	   {
	   PORTC&=~BIT(sh_cp);
       PORTC|=BIT(ds);
	   PORTC|= BIT(sh_cp);
       }
       PORTC|=BIT(cp);
	   DDRC=0x00;
	   EEPROMwrite(0xb0,kt[0]);  
       EEPROM_WRITE(0x93, Contdata);
       while(1);
}
//-------------------------------------------------------------------------------------------主函数
void main(void)
{   
   InitIo();
   while(1)
        {
        menu();
loop:		
        if((PINB&0X0f)==0x07) goto   loop;
		if((PINB&0X0f)==0x17) goto   loop;
        cntplay();
        }
}

⌨️ 快捷键说明

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