📄 exam(chiese).txt
字号:
r1&=r2;
[P_IOA_Data]=r1;
// --<Data>--
r1=[P_IOA_Data];
// _/--
r1|=r4;
[P_IOA_Data]=r1;
// <-- BYTE4 -->
// --\_
r1&=r2;
[P_IOA_Data]=r1;
// --<Data>--
r1=[P_IOA_Data];
// _/--
r1|=r4;
[P_IOA_Data]=r1;
// <-- BYTE5 -->
// --\_
r1&=r2;
[P_IOA_Data]=r1;
// --<Data>--
r1=[P_IOA_Data];
// _/--
r1|=r4;
[P_IOA_Data]=r1;
// <-- BYTE6 -->
// --\_
r1&=r2;
[P_IOA_Data]=r1;
// --<Data>--
r1=[P_IOA_Data];
// _/--
r1|=r4;
[P_IOA_Data]=r1;
// <-- BYTE7 -->
// --\_
r1&=r2;
[P_IOA_Data]=r1;
// --<Data>--
r1=[P_IOA_Data];
// _/--
r1|=r4;
[P_IOA_Data]=r1;
r3-=1;
jz F_DMA_D12toNF_64B_Exit
goto F_DMA_D12toNF_64B_Rep
F_DMA_D12toNF_64B_Exit:
pop r1,r3 from [sp]
retf
.endp
#include "..\\spce061\\061reg.h"
#include "..\\uart\\uart.h"
#include "keyboard.h"
unsigned int keyStatus;
unsigned int keyTimes;
unsigned int lastKey;
unsigned int lastAD;
unsigned int adTimes;
extern unsigned int mp3PlayTime;
void F_2Hz_Isr(void)
{
}
void F_KEY_Isr(void)
{
keyTimes++;
}
// 2MS Timer
unsigned int oldKey, newKey, valueKey;
#define SCAN_STATUS 0x00
#define TINGLE_STATUS 0x01
void F_AD_Isr(void)
{
unsigned int scanKeyTime=0x00;
unsigned int scanKeyStatus=SCAN_STATUS;
if(scanKeyStatus == SCAN_STATUS)
{
}
else
{
}
scanKeyTime++;
}
void InitAD()
{
*P_ADC_MUX_Ctrl=C_ADC_CH1; //LINE_IN-------IOA0
*P_ADC_Ctrl= C_ADCE; //ADC enable
}
unsigned int GetAD(void)
{
unsigned int uiData;
while(!(*P_ADC_MUX_Ctrl&0x8000)); //wait,until ADC complete
uiData=*P_ADC_LINEIN_Data;
return(uiData&0xffc0);
}
void InitKey()
{
asm("INT OFF");
*P_TimeBase_Setup=0; //timebase=8Hz
*P_INT_Ctrl=C_IRQ6_TMB2; //Setup interrupt
keyTimes=0x00;
asm("INT IRQ");
}
unsigned int ScanKey()
{
unsigned int max, min, k, i;
InitAD();
do
{
//Set Max & Min
max= 0x0000;
min= 0xFFFF;
for(k= 0; k < 3; k++)
{
*P_Watchdog_Clear=C_WDTCLR;
i = GetAD();
i >>= 4;
if(i > max) max= i;
if(i < min) min= i;
}
}
while( (max-min) > 0x020);
i= ((max + min) / 2) + 1;
if(adTimes<0x0a)
return(KEY_NONE);
adTimes=0x00;
if(lastAD>i)
{
min=i;
max=lastAD;
}
else
{
min=lastAD;
max=i;
}
lastAD=i;
if( (max-min) > 0x20)
{
return(KEY_NONE);
}
// */
i<<=4;
// Case KEY_NONE
if(i > KEY_NONE_VALUE)
{
// INT_OFF(); //Close Interrupt
if( (lastKey != KEY_NONE) && (keyStatus == KEY_1ST_FUNC) )
{
k=lastKey;
lastKey=KEY_NONE;
return k;
}
keyStatus=KEY_1ST_FUNC;
lastKey=KEY_NONE;
return(KEY_NONE);
}
// Case KEY_VOLUME_INC
if(i > KEY_VOLUME_INC_VALUE)
{
if(lastKey != KEY_VOLUME_INC)
{//First Press Volume + Key
keyTimes=0x00;
keyStatus = KEY_1ST_FUNC;
lastKey=KEY_VOLUME_INC;
INT_IRQ();
return(KEY_NONE);
}
else
{//After First,Press Volume +
if( (keyStatus == KEY_1ST_FUNC) && (keyTimes >= KEY_1ST_TIME) ) //> 2 Sec
{
keyStatus = KEY_2ND_FUNC;
keyTimes = 0x00;
return(KEY_VOLUME_INC);
}
if( (keyStatus == KEY_2ND_FUNC) && (keyTimes >= KEY_2ND_TIME) ) //> 1 Sec
{
keyTimes = 0x00;
return(KEY_VOLUME_INC);
}
return(KEY_NONE);
} // */
}
// Case: Volume Dec
if(i > KEY_VOLUME_DEC_VALUE)
{
if(lastKey != KEY_VOLUME_DEC)
{//First Press Volume + Key
keyTimes=0x00;
keyStatus = KEY_1ST_FUNC;
lastKey=KEY_VOLUME_DEC;
INT_IRQ();
return(KEY_NONE);
}
else
{//After First,Press Volume +
if( (keyStatus == KEY_1ST_FUNC) && (keyTimes >= KEY_1ST_TIME) ) //> 2 Sec
{
keyStatus = KEY_2ND_FUNC;
keyTimes = 0x00;
return(KEY_VOLUME_DEC);
}
if( (keyStatus == KEY_2ND_FUNC) && (keyTimes >= KEY_2ND_TIME) ) //> 1 Sec
{
keyTimes = 0x00;
return(KEY_VOLUME_DEC);
}
return(KEY_NONE);
} // */
}
//Case Key FF
if(i > KEY_FF_VALUE)
{
if(lastKey != KEY_NEXT)
{//First Press Volume + Key
keyTimes=0x00;
keyStatus = KEY_1ST_FUNC;
lastKey=KEY_NEXT;
INT_IRQ();
return(KEY_NONE);
}
else
{//After First,Press Volume +
if( (keyStatus == KEY_1ST_FUNC) && (keyTimes >= KEY_1ST_TIME) ) //> 2 Sec
{
keyStatus = KEY_2ND_FUNC;
keyTimes = 0x00;
return(KEY_FF);
}
if( (keyStatus == KEY_2ND_FUNC) && (keyTimes >= KEY_2ND_TIME) ) //> 1 Sec
{
keyTimes = 0x00;
return(KEY_FF);
}
return(KEY_NONE);
} // */
}
//Case Stop Key
if(i > KEY_STOP_VALUE)
{
if(lastKey != KEY_STOP)
{//First Press Volume + Key
keyTimes=0x00;
keyStatus = KEY_1ST_FUNC;
lastKey=KEY_STOP;
INT_IRQ();
return(KEY_NONE);
}
else
{//After First,Press Volume +
if( (keyStatus == KEY_1ST_FUNC) && (keyTimes >= KEY_1ST_TIME) ) //> 2 Sec
{
keyStatus = KEY_2ND_FUNC;
keyTimes = 0x00;
return(KEY_REC);
}
if( (keyStatus == KEY_2ND_FUNC) && (keyTimes >= KEY_2ND_TIME) ) //> 1 Sec
{
keyTimes = 0x00;
return(KEY_REC);
}
return(KEY_NONE);
} // */
}
// Case FR Key
if(i > KEY_FR_VALUE)
{
if(lastKey != KEY_LAST)
{//First Press Volume + Key
keyTimes=0x00;
keyStatus = KEY_1ST_FUNC;
lastKey=KEY_LAST;
INT_IRQ();
return(KEY_NONE);
}
else
{//After First,Press Volume +
if( (keyStatus == KEY_1ST_FUNC) && (keyTimes >= KEY_1ST_TIME) ) //> 2 Sec
{
keyStatus = KEY_2ND_FUNC;
keyTimes = 0x00;
return(KEY_FR);
}
if( (keyStatus == KEY_2ND_FUNC) && (keyTimes >= KEY_2ND_TIME) ) //> 1 Sec
{
keyTimes = 0x00;
return(KEY_FR);
}
return(KEY_NONE);
} // */
}
// Case AB Key
if( i > KEY_AB_VALUE)
{
if(lastKey != KEY_AB)
{//First Press Volume + Key
keyTimes=0x00;
keyStatus = KEY_1ST_FUNC;
lastKey = KEY_AB;
//INT_IRQ();
return(KEY_NONE);
}
}
// Case Power Key
if( (i>0x2000) && (i<0x3000) )//i > KEY_POWER_VALUE)
{
if(lastKey != KEY_PAUSE)
{//First Press Volume + Key
keyTimes=0x00;
keyStatus = KEY_1ST_FUNC;
lastKey=KEY_PAUSE;
INT_IRQ();
return(KEY_NONE);
}
else
{//After First,Press Volume +
if( (keyStatus == KEY_1ST_FUNC) && (keyTimes >= KEY_POWER_TIME) ) //> 2 Sec
{
keyStatus = KEY_2ND_FUNC;
keyTimes = 0x00;
return(KEY_POWER_OFF);
}
if( (keyStatus == KEY_2ND_FUNC) && (keyTimes >= KEY_2ND_TIME) ) //> 1 Sec
{
keyTimes = 0x00;
return(KEY_POWER_OFF);
}
return(KEY_NONE);
} // */
}
return(KEY_NONE);
}
void KEYProc()
{
unsigned int keyValue,i;
keyValue=ScanKey();
if( mp3Status & 0x8000)
{//*** RECORD(.WAV) MODE
switch(keyValue)
{
case KEY_NONE:
return;
break;
case KEY_VOLUME_DEC:
MP3_VolumeDec();
break;
case KEY_VOLUME_INC:
MP3_VolumeInc();
break;
case KEY_PLAY:
if(mp3Status != WAV_PLAY)
mp3Status=WAV_PLAY;
else
mp3Status=WAV_PAUSE;
break;
case KEY_STOP:
mp3Status=WAV_IDLE;
FAT_FileReWind();
FAT_Open("*.WAV");
MP3VolumeLevel(mp3Volume);
break;
case KEY_NEXT:
MA8201InitialPlaySong();
FAT_FileFindNext("*.WAV");
break;
case KEY_LAST:
MA8201InitialPlaySong();
FAT_FileFindPrev("*.WAV");
break;
case KEY_FF:
break;
case KEY_FR:
break;
case KEY_POWER_OFF:
break;
default:
break;
}
}
else
{//*** MP3 (.MP3) MODE ***
switch(keyValue)
{
case KEY_NONE:
return;
break;
case KEY_VOLUME_DEC:
MP3_VolumeDec();
break;
case KEY_VOLUME_INC:
MP3_VolumeInc();
break;
case KEY_PLAY:
*P_INT_Ctrl=0x0008 | 0x0004 | 0x0010; //Setup interrupt
if(mp3Status != MP3_PLAY)
mp3Status=MP3_PLAY;
else
mp3Status=MP3_PAUSE;
break;
case KEY_STOP:
MA8201InitialPlaySong();
mp3PlayTime=0x0000;
mp3Status=MP3_IDLE;
FAT_FileReWind();
FAT_Open("*.MP3");
MP3VolumeLevel(mp3Volume);
break;
case KEY_NEXT:
MA8201InitialPlaySong();
FAT_FileFindNext("*.MP3");
break;
case KEY_LAST:
MA8201InitialPlaySong();
FAT_FileFindPrev("*.MP3");
break;
case KEY_FF:
break;
case KEY_FR:
break;
case KEY_POWER_OFF:
break;
default:
break;
}
}
}
i=mpegHeader.mpegHead.syncword;
i=mpegHeader.mpegHead.ID;
i=mpegHeader.mpegHead.layer;
i=mpegHeader.mpegHead.protection_bit;
i=mpegHeader.mpegHead.bitrate_index;
i=mpegHeader.mpegHead.sampling_frequency;
i=mpegHeader.mpegHead.padding_bit;
i=mpegHeader.mpegHead.private_bit;
i=mpegHeader.mpegHead.mode;
i=mpegHeader.mpegHead.mode_extension;
i=mpegHeader.mpegHead.copyright;
i=mpegHeader.mpegHead.original;
i=mpegHeader.mpegHead.emphasis;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -