📄 cardadc.cpp.bak
字号:
//cardADC.cpp : source file for the card ADC
//
#include "card.h"
#include "cardADC.h"
volatile unsigned char adc_data;
volatile unsigned char ADC_INT_Temp;
volatile unsigned char ADC_INT_Temp1;
/////////////////////////////////////////////////////////////////////////////
//cardADC
void adc_init(void)
{
//{{WIZARD_MAP(ADC)
// ADC Clock: 62.500kHz
// ADC Voltage Reference: Internal 1.1V, External capacitor
// ADC Left Adjust Result
// ADC Noise Canceler Disabled
//ADCSRB |= 0x0;
ADMUX = 0x67;
ADCSRA =0x86; //0x8e;
//}}WIZARD_MAP(ADC)
}
/////
ISR(SIG_ADC)
{
// Read the ADC conversion result
adc_data = ADCH;
// TODO: Add your code here
ADC_INT_Temp = ADMUX & 0x0f;
sei();
if(ADC_INT_Temp == 7) //A conversion of channel 7 is completed
{
if(ADCBuff >= adc_data)
{
ADC_INT_Temp1 = ADCBuff - adc_data;
}
else
{
ADC_INT_Temp1 = adc_data - ADCBuff;
}
ADCBuff = adc_data;
if(ADC_INT_Temp1 < 10)
{
if(adc_data < 50)
{
FlagBuff1 |= INSERT_IPOD;
}
else
{
FlagBuff1 &= ~INSERT_IPOD;
}
}
}
else if(ADC_INT_Temp == 6) //A conversion of channel 7 is completed
{
if(ADCBuff1 >= adc_data)
{
ADC_INT_Temp1 = ADCBuff1 - adc_data;
}
else
{
ADC_INT_Temp1 = adc_data - ADCBuff1;
}
ADCBuff1 = adc_data;
if(ADC_INT_Temp1 < 10)
{
if(adc_data > ADC_DATA) //没有按键按下
{
KeyBuff = KEY_CODE;
bFastChange = FALSE;
if(bReleaseKey == FALSE)
{
if(KeyValue == KEY_PRIVACY) //ON/OFF与PRIVACY开关转换
{
bKeyUse = TRUE;
}
if(KeyValue == KEY_RECORD)
{
bKeyUse = TRUE;
}
}
bReleaseKey = TRUE;
}
///////按键码判断
else if((adc_data > (ADC_DATA1 - ADC_DATA_LEN)) && (adc_data < (ADC_DATA1 + ADC_DATA_LEN)))
{
KeyBuff = KEY_CODE5;
}
else if((adc_data > (ADC_DATA2 - ADC_DATA_LEN)) && (adc_data < (ADC_DATA2 + ADC_DATA_LEN)))
{
KeyBuff = KEY_CODE4;
}
else if((adc_data > (ADC_DATA3 - ADC_DATA_LEN)) && (adc_data < (ADC_DATA3 + ADC_DATA_LEN)))
{
KeyBuff = KEY_CODE3;
}
else if((adc_data > (ADC_DATA4 - ADC_DATA_LEN)) && (adc_data < (ADC_DATA4 + ADC_DATA_LEN)))
{
KeyBuff = KEY_CODE2;
}
else if(adc_data < (ADC_DATA5 + ADC_DATA_LEN))
{
KeyBuff = KEY_CODE1;
}
}
switch(KeyBuff)
{
case KEY_CODE2: //FM发送频率档位设置
case KEY_CODE3:
case KEY_CODE5:
if(bReleaseKey == TRUE)
{
KeyValue = KeyBuff;
bReleaseKey = FALSE;
FastChangeTime = 0;
bKeyUse = TRUE;
}
else if((KeyValue == KeyBuff) && ((KeyBuff == KEY_CODE2) || (KeyBuff == KEY_CODE3)))
{
if(bFastChange == TRUE)
{
if(FastChangeCount < FAST_CHANGE_COUNT)
{
if(FastChangeTime > MS_300)
{
bKeyUse = TRUE;
FastChangeTime = 0;
FastChangeCount++;
}
}
else if (FastChangeTime > MS_80)
{
bKeyUse = TRUE;
FastChangeTime = 0;
}
}
else
{
if(FastChangeTime > MS_500)
{
bFastChange = TRUE; //按键长按起始标志
FastChangeCount = 0;
FastChangeTime = 0;
}
}
}
break;
case KEY_CODE1: //按键ON/OFF选择
case KEY_CODE4: //OS FM频率档位设置
if(bReleaseKey == TRUE)
{
FastChangeTime = 0;
bReleaseKey = FALSE;
KeyValue = KeyBuff;
}
else if(KeyValue == KeyBuff)
{
if(KeyValue == KEY_CODE4)
{
if(FastChangeTime >= MS_2000)
{
KeyValue = KEY_FQ_MODE_SET;
bFastChange = TRUE;
bKeyUse = TRUE;
//FastChangeTime = 0;
}
}
else if(FastChangeTime >= MS_1000)
{
//KeyValue = (KeyBuff == KEY_CODE4) ? KEY_FM_TOGGLE : KEY_ON_OFF;
if(KeyValue == KeyBuff)
{
KeyValue = KEY_ON_OFF;
bFastChange = TRUE;
bKeyUse = TRUE;
//FastChangeTime = 0;
}
}
}
break;
default:
break;
}
//////////////FM与BLUETOOTH状态开关判断
// #if defined(FM_CUP_BLUETOOTH) || defined(FM_CUP_RECORD_BLUETOOTH)
if((PINB & BT_SWITCH_DETECT) == (PINBBuff & BT_SWITCH_DETECT))
{
if(PINBBuff & BT_SWITCH_DETECT)
{
FlagBuff |= BT_AUDIO_ON;
}
else
{
FlagBuff &= ~BT_AUDIO_ON;
}
}
if((PIND & AUDIO_DETECT)== (PINDBuff & AUDIO_DETECT))
{
if(PINDBuff & AUDIO_DETECT_OFF)
{
wAudioDetectDelay++;
if(FlagBuff & AUDIO_ON)
{
FlagBuff &= ~AUDIO_ON;
wAudioDetectDelay = 0;
}
}
else
{
if(!(FlagBuff & AUDIO_ON))
{
FlagBuff |= AUDIO_ON;
}
}
}
if((PINB & IPOD_POWER_UP_DETECT) == (PINBBuff & IPOD_POWER_UP_DETECT))
{
if(PINBBuff & IPOD_POWER_UP_DETECT)
{
FlagBuff |= IPOD_POWER_UP;
}
else
{
FlagBuff &= ~IPOD_POWER_UP;
}
}
// #endif
}
/*
case KEY_CODE2:
case KEY_CODE3:
case KEY_CODE5:
if(bReleaseKey == TRUE)
{
KeyValue = KeyBuff;
bReleaseKey = FALSE;
FastChangeTime = 0;
bKeyUse = TRUE;
}
else if((KeyValue == KeyBuff) && ((KeyBuff == KEY_CODE2) || (KeyBuff == KEY_CODE3)))
{
if(bFastChange == TRUE)
{
if(FastChangeCount < FAST_CHANGE_COUNT)
{
if(FastChangeTime > MS_300)
{
bKeyUse = TRUE;
FastChangeTime = 0;
FastChangeCount++;
}
}
else if(FastChangeTime > MS_80)
{
bKeyUse = TRUE;
FastChangeTime = 0;
}
}
else
{
if(FastChangeTime > MS_500)
{
bFastChange = TRUE;
FastChangeCount = 0;
FastChangeTime = 0;
}
}
}
break;
case KEY_CODE1:
case KEY_CODE4:
if(bReleaseKey == TRUE)
{
KeyValue = KeyBuff;
bReleaseKey = FALSE;
FastChangeTime = 0;
}
else if((KeyValue == KeyBuff) || (KeyValue == KEY_FM_TOGGLE))
{
if(bFastChange == TRUE)
{
if((KeyValue == KEY_FM_TOGGLE) && (KeyBuff == KEY_CODE4))
{
if(FastChangeTime > MS_1500)
{
bKeyUse = TRUE;
FastChangeTime = 0;
}
}
}
else if(FastChangeTime >= MS_10)
{
KeyValue = (KeyBuff == KEY_CODE4) ? KEY_FM_TOGGLE : KEY_ON_OFF;
bFastChange = TRUE;
bKeyUse = TRUE;
FastChangeTime = 0;
}
}
break;
default:
break;
}
}
*/
if(ADC_INT_Temp == 7)
{
ADMUX = 0x66; //Select channel 6
ADCSRA |= (1 << ADSC);
ADCSRA |= 1 << ADIF;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -