📄 timer.c
字号:
{
keymode1 = temp_key;
}
else
{
if (temp_key == 0x20)
{
old_keymode1 = keymode1;
mode_change = 1;
keymode |= 0x01;
}
}
TIMER0_GetGPIOBit(30,&temp_key);
if (keymode2 != temp_key)
{
keymode2 = temp_key;
}
else
{
if (temp_key == 0x40)
{
old_keymode2 = keymode2;
mode_change = 1;
keymode |= 0x02;
}
}
//patch4.4@ada@MP3 begin
#if (MP3_OPTION == 0)
TIMER0_GetGPIOBit(38,&temp_key);
if (keymode3 != temp_key)
{
keymode3 = temp_key;
}
else
{
if (temp_key == 0x40)
{
old_keymode3 = keymode3;
mode_change = 1;
keymode |= 0x04;
}
}
TIMER0_GetGPIOBit(39,&temp_key);
if (keymode4 != temp_key)
{
keymode4 = temp_key;
}
else
{
if (temp_key == 0x80)
{
old_keymode4 = keymode4;
mode_change = 1;
keymode |= 0x08;
}
}
#endif
//patch4.4@ada@MP3 end
*/
//Joe@2003.2.28 10:42 mask end
//Joe@2003.2.28 10:42 add begin
TIMER0_GetGPIOBit(29,&temp_key);
if (temp_key == 0x20)
keymode |= 0x01;
TIMER0_GetGPIOBit(30,&temp_key);
if (temp_key == 0x40)
keymode |= 0x02;
TIMER0_GetGPIOBit(38,&temp_key);
if (temp_key == 0x40)
keymode |= 0x04;
TIMER0_GetGPIOBit(39,&temp_key);
if (temp_key == 0x80)
keymode |= 0x08;
//Joe@2003.2.28 10:42 add end
// if (mode_change > 0)
{
//Joe@2003.2.28 10:46 mask begin
//mode_change = 0;
//Joe@2003.2.28 10:46 mask end
switch (keymode)
{
case 0x00:
return K_RotarySwitchMode0; //mode 0
case 0x01:
return K_RotarySwitchMode1; //mode 1
case 0x02:
return K_RotarySwitchMode2; //mode 2
case 0x04:
return K_RotarySwitchMode3; //mode 3
case 0x08:
return K_RotarySwitchMode4; //mode 4
case 0x06:
return K_RotarySwitchMode5; //mode 5
case 0x09:
return K_RotarySwitchMode6; //mode 6
case 0x0c:
return K_RotarySwitchMode7; //mode 7
default:
return K_RotateSwitchUnknownMode; //unknown mode
}
}
}
//-----------------------------------------------------------------------------
//TIMER0_GetGPIOBit
//-----------------------------------------------------------------------------
//ada@0415 test ui
UCHAR TIMER0_GetGPIOBit(UCHAR Index, PUCHAR GPIOBitValPt) USING_2
{
UCHAR BitNum;
USHORT Addr;
UCHAR tmp0, tmp1;
UCHAR status = 0x00;
BitNum = Index&0x07;
Addr = 0x2040|(USHORT)(Index>>3);
tmp0 = XBYTE[Addr];
tmp1 = 0x01<<BitNum;
*GPIOBitValPt = tmp0&tmp1;
return status;
}
//-----------------------------------------------------------------------------
//TIMER0_SetGPIOBit
//-----------------------------------------------------------------------------
//ada@0515
void TIMER0_SetGPIOBit(UCHAR Index, UCHAR Value) USING_2
{
UCHAR BitNum;
USHORT Addr;
UCHAR tmp0, tmp1;
BitNum = Index & 0x07;
Addr = 0x2030 | (USHORT)(Index >> 3);
tmp0 = XBYTE[Addr];
tmp1 = 0x01 << BitNum;
if (Value)
{
XBYTE[Addr] = tmp0 | tmp1;
}
else
{
XBYTE[Addr] = tmp0 & (~tmp1);
}
}
//-----------------------------------------------------------------------------
//TIMER0_GetGPIOByte
//-----------------------------------------------------------------------------
//ada@0415 test ui
UCHAR TIMER0_GetGPIOByte (UCHAR Index, UCHAR *GPIOByteValPt) USING_2
{
USHORT Addr;
UCHAR status = 0x00;
Addr = 0x2040|(USHORT)(Index>>3);
*GPIOByteValPt = XBYTE[Addr];
return status;
}
//patch4.4@ada@MP3 begin
//Joe@2003.2.28 9:28 mask begin
//#if (MP3_OPTION)
//Joe@2003.2.28 9:29 mask end
//---------------------------------------------------------------------------------------------------------------------------------------
//DELAY_10us
//---------------------------------------------------------------------------------------------------------------------------------------
void DELAY_10us(void) USING_0
{
#pragma asm
MOV R6,#010
DELAY_10us_1: ;10 * 6 * (4 / 24M) s = 10 us
NOP ;1 Instr. Cycles
NOP ;1 Instr. Cycles
NOP ;1 Instr. Cycles
DJNZ R6,DELAY_10us_1 ;3 Instr. Cycles
#pragma endasm
}
//---------------------------------------------------------------------------------------------------------------------------------------
//DELAY_1ms
//---------------------------------------------------------------------------------------------------------------------------------------
void DELAY_1ms(void) USING_0
{
#pragma asm
MOV R5,#010
DELAY_1ms_1:
MOV R6,#100
DELAY_1ms_2: ;100 * 6 * (4 / 24M) s = 100 us
NOP ;1 Instr. Cycles
NOP ;1 Instr. Cycles
NOP ;1 Instr. Cycles
DJNZ R6,DELAY_1ms_2 ;3 Instr. Cycles
DJNZ R5,DELAY_1ms_1 ;3 Instr. Cycles
#pragma endasm
}
//Joe@2003.2.28 9:29 mask begin
//#endif
//Joe@2003.2.28 9:29 mask end
//patch4.4@ada@MP3 end
//patch4.4@ada@FOSD begin
//---------------------------------------------------------------------------------------------------------------------------------------
//DELAY_1s
//---------------------------------------------------------------------------------------------------------------------------------------
void DELAY_1s(void) USING_0
{
#pragma asm
MOV R4,#100
DELAY_1s_1:
MOV R5,#100
DELAY_1s_2:
MOV R6,#100
DELAY_1s_3: ;100 * 6 * (4 / 24M) s = 100 us
NOP ;1 Instr. Cycles
NOP ;1 Instr. Cycles
NOP ;1 Instr. Cycles
DJNZ R6,DELAY_1s_3 ;3 Instr. Cycles
DJNZ R5,DELAY_1s_2 ;3 Instr. Cycles
DJNZ R4,DELAY_1s_1 ;3 Instr. Cycles
#pragma endasm
}
//patch4.4@ada@FOSD end
//-----------------------------------------------------------------------------
// TIMER1
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//TIMER1
//-----------------------------------------------------------------------------
void TIMER1_Routine(void) INTERRUPT_3 USING_3
{
EX0 = 0;
TIMER1_Handler(); //TIMER1 handler
EX0 = 1;
}
//-----------------------------------------------------------------------------
//TIMER1_Handler
//-----------------------------------------------------------------------------
void TIMER1_Handler(void) USING_3
{
TR1 = 0 ;
TH1 = K_Timer1IntervalHi;
TL1 = K_Timer1IntervalLo;
TR1 = 1 ;
}
//-----------------------------------------------------------------------------
//TIMER1_Start
//-----------------------------------------------------------------------------
void TIMER1_Start(void) USING_3
{
//start timer
ET1 = 1; //IE: TIMER1 interrupt enable
TR1 = 1; //TCON: TIMER1 enable
}
//-----------------------------------------------------------------------------
//TIMER1_Stop
//-----------------------------------------------------------------------------
void TIMER1_Stop(void) USING_3
{
ET1 = 0; //IE: TIMER1 interrupt disable
TR1 = 0; //TCON: TIMER1 disable
}
//Joe@2003.3.5 9:19 add begin
//=============================================================================
//TIMER0_LowPowerCount
//=============================================================================
void TIMER0_LowPowerCount(void) USING_2
{
#if (K_BATT_SEG_TOTAL >= 1)
if(G_BatteryStatus == K_BATTERY_STATUS_EMPTY)//wendy@2004/10/3
{
if (G_LowPowerCount < 100)
G_LowPowerCount++;
}
//wendy@2004/10/3
else{
if (LB3==0){
if (G_LowPowerCount > 0)
G_LowPowerCount--;
}
else {
if (G_LowPowerCount < 80)
G_LowPowerCount++;
}
}
#endif
#if (K_BATT_SEG_TOTAL >= 2)
if (LB2){
if (G_MidPowerCount < 50){
G_MidPowerCount++;
G_LowPowerCount = 0;
}
}
else{
G_LowPowerCount = 0;
if (G_MidPowerCount > 0)
G_MidPowerCount--;
}
#endif
#if (K_BATT_SEG_TOTAL >= 3)
if (LB1 )
{
if (G_HighPowerCount < 50)
{
G_HighPowerCount++;
G_MidPowerCount = 0;
}
}
else
{
G_MidPowerCount = 0;
if (G_HighPowerCount > 0)
{
G_HighPowerCount--;
}
}
#endif
}
//Joe@2003.3.5 9:19 add end
//Joe@2003.3.20 9:24 add begin
//---------------------------------------------------------------------------------------------------------------------------------------
//DELAY_100us
//---------------------------------------------------------------------------------------------------------------------------------------
void DELAY_100us(void) USING_0
{
#pragma asm
MOV R6,#100
DELAY_100us_1: ;100 * 6 * (4 / 24M) s = 100 us
NOP ;1 Instr. Cycles
NOP ;1 Instr. Cycles
NOP ;1 Instr. Cycles
DJNZ R6,DELAY_100us_1 ;3 Instr. Cycles
#pragma endasm
}
//---------------------------------------------------------------------------------------------------------------------------------------
//DELAY_10ms
//---------------------------------------------------------------------------------------------------------------------------------------
void DELAY_10ms(void) USING_0 // XiaoAo modify at 2005.03.21
{
#pragma asm
MOV R5,#100
DELAY_10ms_1:
MOV R6,#100
DELAY_10ms_2: ;100 * 6 * (4 / 24M) s = 100 us
NOP ;1 Instr. Cycles
NOP ;1 Instr. Cycles
NOP ;1 Instr. Cycles
DJNZ R6,DELAY_10ms_2 ;3 Instr. Cycles
DJNZ R5,DELAY_10ms_1 ;3 Instr. Cycles
#pragma endasm
}
//---------------------------------------------------------------------------------------------------------------------------------------
//DELAY_100ms
//---------------------------------------------------------------------------------------------------------------------------------------
void DELAY_100ms(void) USING_0
{
#pragma asm
MOV R4,#010
DELAY_100ms_1:
MOV R5,#100
DELAY_100ms_2:
MOV R6,#100
DELAY_100ms_3: ;100 * 6 * (4 / 24M) s = 100 us
NOP ;1 Instr. Cycles
NOP ;1 Instr. Cycles
NOP ;1 Instr. Cycles
DJNZ R6,DELAY_100ms_3 ;3 Instr. Cycles
DJNZ R5,DELAY_100ms_2 ;3 Instr. Cycles
DJNZ R4,DELAY_100ms_1 ;3 Instr. Cycles
#pragma endasm
}
//Joe@2003.3.20 9:24 add end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -