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

📄 led.c.bak

📁 51单片机的
💻 BAK
📖 第 1 页 / 共 2 页
字号:
/*
2007-01-05 22:30  2007-1-6 23:04
infrared
//ICC-AVR application builder : 2006-12-16 0:17:05    2006-12-18 20:04  IR_CDOE
// Target : M16
// Crystal: 16.000Mhz //注册大小写识别   开始必须为字母 红外线
*/
#include <iom16v.h>
#include <macros.h>
#include "led.h"
#include "IR_DATA.H"
#define IR  6
//#include "delay.h"
//用户码
#define     CUSTOMCODE     9
//按键码
#define     POWER_ON       221
#define     STAND_BY       220
#define     DMX            216
#define     AUTO           212
#define     AUDIO          208
#define   FADETIME_UP      217
#define   FADETIME_DOWN    209
#define   PATTERN_UP       218
#define   PATTERN_DOWN     210


//           值       0    1                                            10   11  12   13   14   15
//                    0    1    2    3    4     5   6    7    8   9     d     f            
char LED_DATA[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0Xa1,0X0e,0x00,0xff,0xef,0x3f}; //11 FOR "d"
char iPos,iPreBit,iNowBit,iHight,iLow,iIrMode,iBitCount,bIrCmdOk,bCmdOk,iCmd,iIrData[6];
char JS_001=0,JS_002=0;
long  JS_003=0;
char JS_004=0;
char JS_005=0;
char JS_006=0;
char JS_007=0;
char JS_008=0;
long  TIMER1_ICP_T,TIMER1_ICP_T1,TIMER1_ICP_T2;
char  LED_DISPLAY_V1=10;         // 初始值  显示 为 d001
char  LED_DISPLAY_V2=0;
char  LED_DISPLAY_V3=0;
char  LED_DISPLAY_V4=1;
char  LED_DISPLAY_V5=14;

long   JS_PRESS_ON_UP=0;
long   JS_PRESS_ON_DOWN=0;

char   JS_TIMER1_ICP_INPUT=0;
char   OUT_22_LOW;
char  JS_PRESS_ON_UP_1=0;
char  JS_PRESS_ON_UP_10000=0;
char  JS_PRESS_DWON_ON_1=0;
char  JS_PRESS_ON_DOWN_10000=0;
int    JS_PRESS_ON_UP_FAST=0;
int    JS_PRESS_OFF_UP=0;
char  JS_MODE_MODE=0;
char  JS_MENU_MODE=0;
char  JS_UP_MODE=0;
char  JS_DOWN_MODE=0;
int    JS_PRESS_OFF_DOWN;
int    JS_PRESS_ON_DOWN_FAST;
char  JS_PRESS_DOWN_ON_1;

char  ICP_TIME=0,ICP_TIME_T1=0;
char START_ICP_JS_TLOW=0;
char ICP_INT_SN=0;          //ICP 产生中断标志位
char KEY_BANK=0;
char KEY_PAN_MODE_1=0;
char KEY_PAN_MODE_2=0;
char KEY_PAN_MODE_3=0;
char KEY_PAN_3=0;
char KEY_PAN_4=0;
char KEY_PAN_5=0;
char KEY_PAN_6=0;
char KEY_PAN_7=0;
char KEY_PAN_8=0;

char PAN_ICP_INPUT_CHECK=0,JS_ICP_INT=0;

char N_001=1,SUM=0;
char IR_CUSTOM_CODE=0;IR_DATA_CODE=0;

// 共阳极用 
void port_init(void)
{
 PORTA = 0xFF;
 DDRA  = 0xFF;
 PORTB = 0x1F;
 DDRB  = 0x1F;
 PORTC = 0x1F; //m103 output only
 DDRC  = 0x10;
 PORTD = 0x00;
 DDRD  = 0x00;
}

//Watchdog initialize
// prescale: 16K 
//void watchdog_init(void)
//{
 //WDR(); //this prevents a timout on enabling
 //WDTCR = 0x08; //WATCHDOG ENABLED - dont forget to issue WDRs
//}       
//Watchdog initialize
// prescale: 2048K
void watchdog_init(void)
{
 WDR(); //this prevents a timout on enabling
 WDTCR = 0x0F; //WATCHDOG ENABLED - dont forget to issue WDRs
}
#pragma interrupt_handler eeprom_ready_isr:16
void eeprom_ready_isr(void)
{
 //eeprom ready event
}

/////////////////////////TIMER0/////////////////////////////////////////////////////////////
//TIMER0 initialize - prescale:8
// WGM: Normal
// desired value: 100uSec
// actual value: 100.000uSec (0.0%)
void timer0_init(void)
{
 TCCR0 = 0x00; //stop
 TCNT0 = 0xCE; //set count
 OCR0  = 0x32;  //set compare
 TCCR0 = 0x02; //start timer
}

#pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void)
{
  TCNT0 = 0xCE; //reload counter value  100us
  LED_SCAN(); 
  KEY_CHK(); 
  CheckIR();  
   JS_003=++JS_003;                //KEY_CHECK 
   TEST();
   //display_times();         //TEST USE
  
  
   
}
/////////////////test/////////////////////////////////////
void  TEST()
{
  //LED_DISPLAY_V4=8;          //TEST
  if (JS_003==10000)
           {
           LED_DISPLAY_V5=14;
             
           }  
    else if (JS_003==20000)  
         {
         JS_003=0;  
         LED_DISPLAY_V5=13;
         } 
}
/////////////////////////timer2///////////////////////////////////////////////////////////////////
//TIMER2 initialize - prescale:32
// WGM: Normal
// desired value: 10uSec
// actual value: 10.000uSec (0.0%)
void timer2_init(void)
{
 TCCR2 = 0x00; //stop
 ASSR  = 0x00; //set async mode
 TCNT2 = 0xFB; //setup
 OCR2  = 0x05;
 TCCR2 = 0x03; //start
}

#pragma interrupt_handler timer2_ovf_isr:5
void timer2_ovf_isr(void)   //10us
{
 TCNT2 = 0xFB; //reload counter value
 //ICP_INT_JS();
 //ICP_INT_CLR_JS();
 
}
/////////////////////////KEY_CHK/////////////////////////////////////////////////////////////

void KEY_CHK()
{

    
KEY_CHK_MODE();                  // 调用   KEY_CHK_MODE
KEY_CHK_MENU();                  // 调用   KEY_CHK_MENU
KEY_CHK_UP();                    // 调用   KEY_CHK_UP
KEY_CHK_DOWN();                  // 调用   KEY_CHK_DOWN		
}
//////////////////////////MODE///////////////////////////////////////////////////////////
void KEY_CHK_MODE()                   //100us /times
{
    KEY_BANK=KEY_INPUT;               // 取PINC值
    KEY_BANK&=0X01;                   // 取mode 值	
if (KEY_BANK==0)     //有按下 执行   
   {      //TEST--------OK------------->>>>  
       KEY_BANK=1;               
       JS_004=++JS_004;
       if (JS_004==1)
                        {
  		 		  //LED_DISPLAY_V1=11;
 	 			  LED_DISPLAY_V2=0;
  				  LED_DISPLAY_V3=0;
  				  LED_DISPLAY_V4=1;  				  
                        }
       else if (JS_004==2)
                         {
                                  JS_004&=0;
             	  	          //LED_DISPLAY_V1=10;
 	 	   	 	  LED_DISPLAY_V2=0;
  			 	  LED_DISPLAY_V3=0;
  			 	  LED_DISPLAY_V4=1;
                         }
   }
   else
      KEY_BANK=0;
    
}

void KEY_PRESS_CHECK_OFF()
{
       KEY_BANK=KEY_INPUT;      // 取PINC值
       KEY_BANK&=0X01;    
     if  (KEY_BANK==0)          // V1有按下
         KEY_PAN_MODE_3=1;
     else                       // V1没有按下  
         KEY_PAN_MODE_3=0;
}
///////////////////////////////MENU/////////////////////////////////////////////////////////////////
void KEY_CHK_MENU() 
{
}
///////////////////////////////UP///////////////////////////////////////////////////////////////////////
void KEY_CHK_UP() 
{
    KEY_BANK=KEY_INPUT;               // 取PINC值
    KEY_BANK=KEY_BANK>>2;
    KEY_BANK&=0X01;                   // 取DOWN 值
  if (KEY_BANK==0)              //press on  do it
      {    
           
           JS_PRESS_OFF_UP==0;  
           
       if (JS_PRESS_ON_UP_1==0)            //press on  yes   first times
           {
           JS_PRESS_ON_UP_1=1;
           JS_PRESS_ON_UP=0;
           JS_PRESS_ON_UP_FAST=0;      
           JS_PRESS_ON_UP_10000=0;
           LED_DISPLAY_UP_DMX512();
           
              // JS_UP_MODE=++JS_UP_MODE;
              //   if (JS_UP_MODE==4)
              //   JS_UP_MODE=0;
           }  
        else
        {
               if (JS_PRESS_ON_UP_10000==1)
                   {
                                      if (JS_PRESS_ON_UP_FAST==2000)
                                        {
                    			JS_PRESS_ON_UP_FAST=0;          
                    			LED_DISPLAY_UP_DMX512();
                    			}
               			     else
                   			JS_PRESS_ON_UP_FAST=++JS_PRESS_ON_UP_FAST; 			
                   }
                   
               if (JS_PRESS_ON_UP==30000)
                    {
                    JS_PRESS_ON_UP=0;          
                    JS_PRESS_ON_UP_10000=1; 
                    }
               else
                   JS_PRESS_ON_UP=++JS_PRESS_ON_UP;                   
         }       
     }
  else        //unpress     
           {
               JS_PRESS_ON_UP=0;
               JS_PRESS_ON_UP_10000=0; 
               JS_PRESS_ON_UP_FAST=0;     
               JS_PRESS_OFF_UP=++JS_PRESS_OFF_UP; 
             if (JS_PRESS_OFF_UP==2000)
                          { 
                           JS_PRESS_ON_UP_1=0;
                           JS_PRESS_OFF_UP=0;          
                          } 
	    }		   
                        
}
//----------------UP_DMX512-------------------------------------
void LED_DISPLAY_UP_DMX512()
{
if (LED_DISPLAY_V2==5)
                        {
                          if (LED_DISPLAY_V3==1)
                             {
                                if (LED_DISPLAY_V4==2)
                                   {
                                   LED_DISPLAY_V2=0;
                                   LED_DISPLAY_V3=0;
                                   LED_DISPLAY_V4=0;
                                   }
                             }
                         }
if (LED_DISPLAY_V4==9)
       {
        LED_DISPLAY_V4=0;
          if (LED_DISPLAY_V3==9)
            {
             LED_DISPLAY_V3=0;
             LED_DISPLAY_V2=++LED_DISPLAY_V2;
            } 
          else 
             LED_DISPLAY_V3=++LED_DISPLAY_V3;  
       }
    else 
      LED_DISPLAY_V4=++LED_DISPLAY_V4;     
}
////////////////////////////////DOWN/////////////////////////////////////////////////////////////////////////

void KEY_CHK_DOWN() 
{

    KEY_BANK=KEY_INPUT;               // 取PINC值
    KEY_BANK=KEY_BANK>>3;
    KEY_BANK&=0X01;                   // 取DOWN 值
  if (KEY_BANK==0)              //press on  do it
      {    
           
           JS_PRESS_OFF_DOWN==0;  
           
       if (JS_PRESS_DOWN_ON_1==0)            //press on  yes   first times
           {
           JS_PRESS_DOWN_ON_1=1;
           JS_PRESS_ON_DOWN=0;
           JS_PRESS_ON_DOWN_FAST=0;      
           JS_PRESS_ON_DOWN_10000=0;
           LED_DISPLAY_DOWN_DMX512();
           
              // JS_DOWN_MODE=++JS_DOWN_MODE;
              //   if (JS_DOWN_MODE==4)
              //   JS_DOWN_MODE=0;
           }  
        else
        {
               if (JS_PRESS_ON_DOWN_10000==1)
                   {
                                      if (JS_PRESS_ON_DOWN_FAST==2000)
                                        {
                    			JS_PRESS_ON_DOWN_FAST=0;          
                    			LED_DISPLAY_DOWN_DMX512();
                    			}
               			     else
                   			JS_PRESS_ON_DOWN_FAST=++JS_PRESS_ON_DOWN_FAST; 			
                   }
                   
               if (JS_PRESS_ON_DOWN==30000)
                    {
                    JS_PRESS_ON_DOWN=0;          
                    JS_PRESS_ON_DOWN_10000=1; 
                    }
               else
                   JS_PRESS_ON_DOWN=++JS_PRESS_ON_DOWN;                   
         }       
     }
  else        //unpress     
           {
               JS_PRESS_ON_DOWN=0;
               JS_PRESS_ON_DOWN_10000=0; 
               JS_PRESS_ON_DOWN_FAST=0;     
               JS_PRESS_OFF_DOWN=++JS_PRESS_OFF_DOWN; 
             if (JS_PRESS_OFF_DOWN==2000)
                          { 
                           JS_PRESS_DOWN_ON_1=0;
                           JS_PRESS_OFF_DOWN=0;          
                          } 
	    }		   
                        
}
//----------------------DOWN_DMX512-----------------------
void LED_DISPLAY_DOWN_DMX512()
{
if (LED_DISPLAY_V2==0)
                        {
                          if (LED_DISPLAY_V3==0)
                             {
                                if (LED_DISPLAY_V4==1)
                                   {
                                   LED_DISPLAY_V2=5;
                                   LED_DISPLAY_V3=1;
                                   LED_DISPLAY_V4=3;
                                   }
                             }
                         }
if (LED_DISPLAY_V4==0)
       {
        LED_DISPLAY_V4=9;
          if (LED_DISPLAY_V3==0)
            {
             LED_DISPLAY_V3=9;
             LED_DISPLAY_V2=--LED_DISPLAY_V2;
            } 
          else 

⌨️ 快捷键说明

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