📄 gm_rwreg.c
字号:
#include "board.h"
#include "debug.h"
#include "debugDef.h"
#include "misc.h"
#include "gm_rwreg.h"
#include "global.h"
#include "Power.h"
void gm_stop(void);
void gm_init(void)
{
//Set_gm_CSZ();
Set_gm_SCL();
Set_gm_SDA();
//Clr_gm_SDA();
}
Bool gm_start(GMBus_Direction direct)
{
DWORD count;
Clr_gm_SCL(); // SCL=0
count = 0;
//Clr_gm_SDA();
while(gm_SDAHi())
{
count++;
if (count>=1000000)
return FALSE;
}
if (direct) // Read
Set_gm_SDA(); //SDA=1
else
Clr_gm_SDA(); //SDA=0
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Set_gm_SCL();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Clr_gm_SCL();
return TRUE;
}
void gm_stop(void)
{
//printMsg("stop");
//Set_gm_CSZ();
Set_gm_SCL();
Set_gm_SDA();
}
Bool gm_sendByte(BYTE value)
{
Bool result;
BYTE i;
if (!gm_start(GM_WRITE))
{
#if DebugVersion
printMsg("Write err");
#endif
return FALSE;
}
for (i=0; i<8; i++)
{
(value&BIT7)?(Set_gm_SDA()):(Clr_gm_SDA());
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Set_gm_SCL();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
value<<=1;
Clr_gm_SCL();
}
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
Delay4us();
gm_stop();
return result;
}
BYTE gm_readByte(void)
{
BYTE i;
BYTE value;
value = 0x00;
if (!gm_start(GM_READ))
{
#if DebugVersion
printMsg("Read err");
#endif
return 0;
}
for (i=0; i<8; i++)
{
value<<=1;
Set_gm_SDA();
ForceDelay1ms(1);
Set_gm_SCL();
ForceDelay1ms(1);
if (gm_SDAHi())
value|=BIT0;
Clr_gm_SCL();
}
ForceDelay1ms(1);
gm_stop();
return value;
}
void readStatusHandler(void)
{
BYTE status;
//BYTE err;
if (ReadStatusFlag)
{
//while(err--)
//{
status = gm_readByte();
Gm_Status = status;
//printData("the value of status is %d", status);
Clr_ReadStatusFlag();
//}
if ((Gm_Status&0xc0) == 0xc0)
{
//Set_DoPowerHandlerFlag();
//Set_InitShutdownCountFlag();
#if DebugVersion
printMsg("init power off counter");
#endif
if (DoPowerOnFlag)
{
cmd_Power_Handler = POWER_ON_SYSTEM;
Clr_DoPowerOnFlag();
}
else
cmd_Power_Handler = INIT_POWER_OFF_COUNT;
}
else if ((Gm_Status&0xa0) == 0xa0)
{
#if DebugVersion
printMsg("cancel power off counter");
#endif
//Set_DoPowerHandlerFlag();
//Set_CancelShutdownCountFlag();
cmd_Power_Handler = CANCEL_POWER_OFF_COUNT;
}
else if(Gm_Status&0x08)
{
Set_DoProtectionHandlerFlag();
Pwd_Key_Count = 0;
#if DebugVersion
printMsg("Check Passwords");
#endif
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -