zspreg.c

来自「瑞星微公司RK27XX系列芯片的SDK开发包」· C语言 代码 · 共 68 行

C
68
字号
// 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 + =
减小字号Ctrl + -
显示快捷键?