📄 zspreg.c
字号:
// Dram.c : 模拟 ZSP REGISTER
//
#include "..\stdafx.h"
/******************************************************************/
#define RPC_ZSPREG_MAX 6
char* RockPCZspRegName[] =
{
"%unknowed",
"%imask",
"%timer0",
"%timer1",
"%tc",
"%smode",
};
/***********************************************************************/
INT16U RockPCZspReg[RPC_ZSPREG_MAX];
/**************************************************************/
INT16U *RockPCZspRegGetAddrByName(char * creg)
{
INT16U ii ;
for (ii = 1; ii < RPC_ZSPREG_MAX ; ii++)
{
if (!strcmp(RockPCZspRegName[ii] , creg))
return &RockPCZspReg[ii];
}
TRINFO("ERROR CREG[%s]", creg); //由于 creg 前面存在 %,会进行转义,倒置打印错误
return &RockPCZspReg[0];
}
INT16U RockPcZspRead_Creg(char* creg)
{
return *RockPCZspRegGetAddrByName(creg);
}
void RockPcZspWrite_Creg(char* creg , INT16U val)
{
*RockPCZspRegGetAddrByName(creg) = val ;
}
void RockPcZspBitSet_Creg(char* creg , INT16U bitNum)
{
INT16U *reg = RockPCZspRegGetAddrByName(creg) ;
*reg = (*reg) | (0x0001 << bitNum) ;
}
void RockPcZspBitClear_Creg(char* creg , INT16U bitNum)
{
INT16U *reg = RockPCZspRegGetAddrByName(creg) ;
*reg = (*reg) & (~(0x0001 << bitNum)) ;
}
void RockPcZspBitInvert_Creg(char* creg , INT16U bitNum)
{
INT16U *reg = RockPCZspRegGetAddrByName(creg) ;
*reg = (*reg) ^((0x0001 << bitNum)) ;
}
/*--------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -