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

📄 int.c

📁 这是一个7"LCD 液晶屏显示器
💻 C
字号:
#include "indash.h"

extern          char    Current_Status;
extern unsigned char    IR_Address_L;
extern unsigned char    IR_Address_H;
extern unsigned char    IR_Data;
extern          char    DVD_Flag;
extern unsigned char    DVD_Value;
extern          char    IR_Data_OK_Flag;
extern          char    IR_Repeat_Data_Flag;
extern          char    play_pause_flag;

/* for 24Mhz and repeat code is short */
void EX0_INT (void) interrupt 0
{
   static char repeat = False;
   unsigned char hi = 0;
   unsigned char lo = 0;
   unsigned char v1 = 0;
   unsigned char v2 = 0;
   char i;
   int cnt = 0;

   while (!IR_IN)
   {
      cnt++;
      if (cnt > 1700)
         break;
   }
   if (cnt > 1100 && cnt < 1700)
   {
      cnt = 0;
      while (IR_IN)
      {
         cnt++;
         if (cnt >1100)
            break;
      }
      if (cnt > 480 && cnt < 1100)
      {
         repeat = False;
         for (i = 0; i < 32; i++)
         {
            cnt = 0;
            while (!IR_IN)
            {
               cnt++;
               if (cnt > 340)
                  break;
            }
            if (cnt > 40 && cnt < 120)
            {
               cnt = 0;
               while (IR_IN)
               {
                  cnt++;
                  if (cnt > 340)
                     break;
               }
               if (cnt > 160 && cnt < 340)
               {
                  if (i < 8)
                     lo |= 0x01 << i % 8;
                  else if (i < 16)
                     hi |= 0x01 << i % 8;
                  else if (i < 24)
                     v1 |= 0x01 << i % 8;
                  else
                     v2 |= 0x01 << i % 8;
               }
            }
            else
               break;
         }
      }
      else if (cnt > 250 && cnt < 440)
      {
         if (DVD_Flag)
         {
         /* reflec dalay */
            while (!IR_IN)
               ;
            for (cnt = 0; cnt <4000; cnt++)
               IR_IN = 1;
            DVD_Flag = False;
         /*Start code */
            for (cnt = 0; cnt < 2950; cnt++)
               IR_IN = 0;

            for (cnt = 0; cnt < 1450; cnt++)
               IR_IN = 1;

         /* addr_L code */
            for (i = 0; i < 8; i++)
            {
               for (cnt = 0; cnt < 135; cnt++)
                  IR_IN = 0;
               if ((0x01 << i) & DVD_REMOTE_ADDR_L)
               {
                  for (cnt = 0; cnt < 435; cnt++)
                    IR_IN = 1;
               }
               else
               {
                  for (cnt = 0; cnt < 135; cnt++)
                    IR_IN = 1;
               }
            }

         /* addr_H code */
            for (i = 0; i < 8; i++)
            {
               for (cnt = 0; cnt < 135; cnt++)
                  IR_IN = 0;
               if ((0x01 << i) & DVD_REMOTE_ADDR_H)
               {
                  for (cnt = 0; cnt < 435; cnt++)
                    IR_IN = 1;
               }
               else
               {
                  for (cnt = 0; cnt < 135; cnt++)
                    IR_IN = 1;
               }
            }

         /* value code */
            for (i = 0; i < 8; i++)
            {
               for (cnt = 0; cnt < 135; cnt++)
                  IR_IN = 0;
               if ((0x01 << i) & DVD_Value)
               {
                  for (cnt = 0; cnt < 435; cnt++)
                    IR_IN = 1;
               }
               else
               {
                  for (cnt = 0; cnt < 135; cnt++)
                    IR_IN = 1;
               }
            }

         /* invert value code */
            for (i = 0; i < 8; i++)
            {
               for (cnt = 0; cnt < 135; cnt++)
                  IR_IN = 0;
               if ((0x01 << i) & ~DVD_Value)
               {
                  for (cnt = 0; cnt < 435; cnt++)
                    IR_IN = 1;
               }
               else
               {
                  for (cnt = 0; cnt < 135; cnt++)
                    IR_IN = 1;
               }
            }
         /* end code */
            for (cnt = 0; cnt < 135; cnt++)
               IR_IN = 0;

            IR_IN = 1;
         }
         else if (repeat)
            IR_Repeat_Data_Flag = True;
      }
   }
   if ((v1 ^ v2) == 0xff)
   {
      if (!IR_Data_OK_Flag)
      {
         IR_Address_L = lo;
         IR_Address_H = hi;
         IR_Data = v1;
         repeat = True;
         IR_Data_OK_Flag = True;
         IR_Repeat_Data_Flag = False;

         if ((IR_Address_L == REMOTE_ADDR_L) && (IR_Address_H == REMOTE_ADDR_H))
         {
            switch (IR_Data)
            {
               case KEY_DVD_POWER:
                  DVD_Flag = True;
                  DVD_Value = DVD_POWER;
                  break;
               case KEY_DVD_DISPLAY:
                  DVD_Flag = True;
                  DVD_Value = DVD_DISPLAY;
                  break;
               case KEY_DVD_EJECT:
                  DVD_Flag = True;
                  DVD_Value = DVD_EJECT;
                  break;
               case KEY_DVD_AV_SEL:
                  DVD_Flag = True;
                  DVD_Value = DVD_AV_SEL;
                  break;
               case KEY_DVD_MUTE:
                  DVD_Flag = True;
                  DVD_Value = DVD_MUTE;
                  break;
               case KEY_DVD_AUDIO:
                  DVD_Flag = True;
                  DVD_Value = DVD_AUDIO;
                  break;
               case KEY_DVD_AUDIO_UP:
                  DVD_Flag = True;
                  DVD_Value = DVD_AUDIO_UP;
                  break;
               case KEY_DVD_ZOOM:
                  DVD_Flag = True;
                  DVD_Value = DVD_ZOOM;
                  break;
               case KEY_DVD_AUDIO_DOWN:
                  DVD_Flag = True;
                  DVD_Value = DVD_AUDIO_DOWN;
                  break;
               case KEY_DVD_REPEAT:
                  DVD_Flag = True;
                  DVD_Value = DVD_REPEAT;
                  break;
               case KEY_DVD_SUB_TITLE:
                  DVD_Flag = True;
                  DVD_Value = DVD_SUB_TITLE;
                  break;
               case KEY_DVD_PLAY_MODE:
                  DVD_Flag = True;
                  DVD_Value = DVD_PLAY_MODE;
                  break;
               case KEY_DVD_RE:
                  play_pause_flag = 0;
                  DVD_Flag = True;
                  DVD_Value = DVD_RE;
                  break;
               case KEY_DVD_FE:
                  play_pause_flag = 0;
                  DVD_Flag = True;
                  DVD_Value = DVD_FE;
                  break;
               case KEY_DVD_BREAK:
                  play_pause_flag = 0;
                  DVD_Flag = True;
                  DVD_Value = DVD_BREAK;
                  break;
               case KEY_DVD_RR:
                  play_pause_flag = 0;
                  DVD_Flag = True;
                  DVD_Value = DVD_RR;
                  break;
               case KEY_DVD_PLAY:
                  if (play_pause_flag)
                  {
                     play_pause_flag = 0;
                     DVD_Flag = True;
                     DVD_Value = DVD_PAUSE;
                  }
                  else
                  {
                     play_pause_flag = 1;
                     DVD_Flag = True;
                     DVD_Value = DVD_PLAY;
                  }
                  break;
               case KEY_DVD_FF:
                  play_pause_flag = 0;
                  DVD_Flag = True;
                  DVD_Value = DVD_FF;
                  break;
               case KEY_DVD_TITLE:
                  DVD_Flag = True;
                  DVD_Value = DVD_TITLE;
                  break;
               case KEY_DVD_MENU:
                  DVD_Flag = True;
                  DVD_Value = DVD_MENU;
                  break;
               case KEY_DVD_SETUP:
                  DVD_Flag = True;
                  DVD_Value = DVD_SETUP;
                  break;
               case KEY_DVD_RETURN:
                  DVD_Flag = True;
                  DVD_Value = DVD_RETURN;
                  break;
               case KEY_DVD_ENTER:
                  DVD_Flag = True;
                  DVD_Value = DVD_ENTER;
                  break;
               case KEY_DVD_UP:
                  DVD_Flag = True;
                  DVD_Value = DVD_UP;
                  break;
               case KEY_DVD_DOWN:
                  DVD_Flag = True;
                  DVD_Value = DVD_DOWN;
                  break;
               case KEY_DVD_LEFT:
                  DVD_Flag = True;
                  DVD_Value = DVD_LEFT;
                  break;
               case KEY_DVD_RIGHT:
                  DVD_Flag = True;
                  DVD_Value = DVD_RIGHT;
                  break;
            }
         }


      }
   }
}


⌨️ 快捷键说明

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