📄 int.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 + -