📄 msscartprocess.c
字号:
/******************************************************************************
Copyright (c) 2003 MStar Semiconductor, Inc.
All rights reserved.
[Module Name]: scart_process.c
[Date]: 31-Dec-2003
[Comment]:
scart pin8 control subroutines.
[Reversion History]:
*******************************************************************************/
#define _SCART_C_
// System
#include <intrins.h>
// Common
#include "define.h"
#include "mcu.h"
#include "global.h"
// External
#include "common.h"
#include "uart.h"
#include "Menu_New_PAL.h"
#include "userpref.h"
#include "devaudio.h"
#include "mswindow.h"
#include "msio.h"
#include "msreg.h"
#include "power.h"
// Internal
#include "MsScartProcess.h"
#if(USE_SCART_PIN8)
XDATA BYTE g_ucScart1Event;
#if (ENABLE_SCART2)
XDATA BYTE g_ucScart2Event;
#endif
///////////////////////////////////////////////////////////////////////////////
// <Function>: msGetScart1Status
//
// <Description>: Returns status of the pin 8 of scart input 1 via A/D converter.
//
// <Returns> : Underflow (<3.0 V) [LOW]
// Overflow (>7.5V) [HIGH]
// Midrange (3.0V ~ 7.5V) [MID]
///////////////////////////////////////////////////////////////////////////////
BYTE msGetScart1Status(void)
{
BYTE pin8Status = 0;
BYTE ucBank;
ucBank = msReadByte(BK0_00);
msWriteByte(BK0_00, REG_BANK_ADC_DVI);
pin8Status = msReadByte(Scart1AdcPin);//SAR2
msWriteByte(BK0_00, ucBank);
if(pin8Status <= PIN8_THRESHOLD_LOW1)
pin8Status = PIN8_LOW; // Underflow (<3.0 V)
if(pin8Status >= PIN8_THRESHOLD_MID1)
pin8Status = PIN8_HIGH; // Overflow (>8.0V)
if(pin8Status >= PIN8_THRESHOLD_LOW1&&pin8Status <= PIN8_THRESHOLD_MID1)
pin8Status = PIN8_MID; // Midrange (3.0V ~ 7.5V)
return pin8Status;
}
#if (ENABLE_SCART2)
///////////////////////////////////////////////////////////////////////////////
// <Function>: msGetScart2Status
//
// <Description>: Returns status of the pin 8 of scart input 2 via A/D converter.
//
// <Returns> : Underflow (<3.0 V) [LOW]
// Overflow (>7.5V) [HIGH]
// Midrange (3.0V ~ 7.5V) [MID]
///////////////////////////////////////////////////////////////////////////////
BYTE msGetScart2Status(void)
{
BYTE pin8Status = 0;
BYTE ucBank;
ucBank = msReadByte(BK0_00);
msWriteByte(BK0_00, REG_BANK_ADC_DVI);
pin8Status = msReadByte(Scart2AdcPin);//SAR3
msWriteByte(BK0_00, ucBank);
if(pin8Status <= PIN8_THRESHOLD_LOW2)
pin8Status = PIN8_LOW; // Underflow (<3.0 V)
if(pin8Status >= PIN8_THRESHOLD_MID2)
pin8Status = PIN8_HIGH; // Overflow (>8.0V)
if(pin8Status >= PIN8_THRESHOLD_LOW2&&pin8Status <= PIN8_THRESHOLD_MID2)
pin8Status = PIN8_MID; // Midrange (3.0V ~ 7.5V)
return pin8Status;
}
#endif
///////////////////////////////////////////////////////////////////////////////
// <Function>: msCheckScartPin8
//
// <Description>: check pin8-state of scart1 & scart2 and send message if pin8-state has changed.
//
// <Returns> :
//
///////////////////////////////////////////////////////////////////////////////
void msCheckScartPin8Event(void)
{
BYTE ucPin8StatusNew;
// no PIN8 recognition in teletext
#if( ENABLE_TTX )
if(g_bTTX_on)
return;
#endif
/** SCART 1 */
ucPin8StatusNew = msGetScart1Status();
// no PIN8 execution in adjustable menu
if(GetMenuState() )
return;
if(ucPin8StatusNew != ucPin8StatusOld[0])
{
if(ucPin8StatusNew == PIN8_LOW)
{
if (ucPin8StatusOld[0] == PIN8_MID)
{
if(ucPin8PrevEvent != PIN8_SCART1_ML)
{
g_ucScart1Event = PIN8_SCART1_ML;
ucPin8PrevEvent=PIN8_SCART1_ML;
}
}
if(ucPin8StatusOld[0] == PIN8_HIGH)
{
if(ucPin8PrevEvent != PIN8_SCART1_HL)
{
g_ucScart1Event = PIN8_SCART1_HL;
ucPin8PrevEvent=PIN8_SCART1_HL;
}
}
}
else if(ucPin8StatusNew == PIN8_MID)
{
if(ucPin8StatusOld[0] == PIN8_LOW)
{
if(ucPin8PrevEvent != PIN8_SCART1_LM)
{
g_ucScart1Event = PIN8_SCART1_LM;
ucPin8PrevEvent=PIN8_SCART1_LM;
}
}
if(ucPin8StatusOld[0] == PIN8_HIGH)
{
if(ucPin8PrevEvent != PIN8_SCART1_HM)
{
g_ucScart1Event = PIN8_SCART1_HM;
ucPin8PrevEvent=PIN8_SCART1_HM;
}
}
}
else if(ucPin8StatusNew == PIN8_HIGH)
{
if(ucPin8StatusOld[0] == PIN8_LOW)
{
if(ucPin8PrevEvent != PIN8_SCART1_LH)
{
g_ucScart1Event = PIN8_SCART1_LH;
ucPin8PrevEvent=PIN8_SCART1_LH;
}
}
if(ucPin8StatusOld[0] == PIN8_MID)
{
if(ucPin8PrevEvent != PIN8_SCART1_MH)
{
g_ucScart1Event = PIN8_SCART1_MH;
ucPin8PrevEvent=PIN8_SCART1_MH;
}
}
}
ucPin8StatusOld[0] = ucPin8StatusNew;
}
#if (ENABLE_SCART2)
// SCART 2
ucPin8StatusNew = msGetScart2Status();
// no PIN8 execution in adjustable menu
if(GetMenuState() )
return;
if(ucPin8StatusNew != ucPin8StatusOld[1])
{
if(ucPin8StatusNew == PIN8_LOW)
{
if(ucPin8StatusOld[1] == PIN8_MID)
{
if(ucPin8PrevEvent != PIN8_SCART2_ML)
{
g_ucScart2Event = PIN8_SCART2_ML;
ucPin8PrevEvent=PIN8_SCART2_ML;
}
}
if(ucPin8StatusOld[1] == PIN8_HIGH)
{
if(ucPin8PrevEvent != PIN8_SCART2_HL)
{
g_ucScart2Event = PIN8_SCART2_HL;
ucPin8PrevEvent=PIN8_SCART2_HL;
}
}
}
else if(ucPin8StatusNew == PIN8_MID)
{
if(ucPin8StatusOld[1] == PIN8_LOW)
{
if(ucPin8PrevEvent != PIN8_SCART2_LM)
{
g_ucScart2Event = PIN8_SCART2_LM;
ucPin8PrevEvent=PIN8_SCART2_LM;
}
}
if(ucPin8StatusOld[1] == PIN8_HIGH)
{
if(ucPin8PrevEvent != PIN8_SCART2_HM)
{
g_ucScart2Event = PIN8_SCART2_HM;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -