⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pub_func.c

📁 单相 CPU卡表复费率电能表,内部有提供I2C驱动,CPU卡驱动,NEC单片机0513等
💻 C
字号:
#include "includes.h"

void delay( unsigned short t )
{
    for( ; t > 0; t--);
}

void delay_20ms( unsigned short delay_time )
{
    while( delay_time != 0 )
    {
        if( SYS_EVT_VAR & SYS_EVT_TICK )
        {
            clr_wdt();
            sys_evt_del( SYS_EVT_TICK );
            delay_time--;
        }
    }
}

void clr_wdt(void)
{
    WDTE = 0xAC;
    WDI_OUT |= WDI;
    delay(100);
    WDI_OUT &=~ WDI;
}

unsigned char HexToAsc( unsigned char Item, unsigned char Hex )
{
	unsigned char temp;
	
	if(Item)
	{
	    temp = Hex>>4;
	}
	else
	{
	    temp = ( Hex & 0x0f );
	}
	
	if( temp <= 9 )
	{
	    temp += 0x30;
	}
	else
	{
	    temp += 0x37;
	}
	
	return temp;
}

unsigned char AscToHex( unsigned char Asc_val1, unsigned char Asc_val2 )
{
	unsigned char temp;

	if( (Asc_val1 - 0x30) <= 9 )
	{
	    Asc_val1 -= 0x30;
	}
	else
	{
	    Asc_val1 -= 0x37;
	}

	if( ( Asc_val2 - 0x30) <= 9 )
	{
	    Asc_val2 -= 0x30;
	}
	else
	{
	    Asc_val2 -= 0x37;
	}
	
 	temp = ( (Asc_val1 << 4 ) & 0xf0 ) | ( Asc_val2 & 0x0f );
 	
	return temp;
}

unsigned char is_equal( unsigned char *src1, unsigned char * src2, unsigned char len )
{
    do{
        if( *src1++ != *src2++ )
        {
            return(ERROR);
        }
    }while(--len);
    
    return(OK);
}

unsigned char is_data( unsigned char *src1, unsigned char src2, unsigned char len )
{
    do{
        if( *src1++ != src2 )
        {
            return(ERROR);
        }
    }while(--len);
    
    return(OK);
}

unsigned char get_sum( unsigned char *data, unsigned char len )
{
    unsigned char sum = 0,i;
    
    for( i = 0; i < len; i++ )
    {
        sum += *(data++);
    }
    
    return sum;
}

unsigned char Hex2BcdChar(unsigned char hex)
{
    return( ( hex % 10 ) | ( ( ( unsigned char )( hex / 10 ) ) << 4 ) );
}

unsigned char Bcd2HexChar(unsigned char bcd)
{
    return( ( bcd >> 4 )*10 + ( bcd & 0x0F ) );
}

unsigned char DataIsAscCode(unsigned char *data, unsigned char len)
{
    unsigned char i;
	
    for( i = 0; i < len; i++ )
    {
        if( ( *( data+i ) > 0x39 ) || ( *( data+i ) < 0x30 ) ) return ERROR;
    }
	
    return OK;	
}

void _memset_to_0( unsigned char *data, unsigned char len )
{
    memset( data, 0, len );
}

void _memset_to_0xff(unsigned char * data,unsigned char len)
{
    memset(data,0xFF,len);
}

void _memset0xff_and_write_E2prom(unsigned short addr,unsigned char len)
{
    _memset_to_0xff(&modem_tx_buf[0], len);
    E2promWrite( addr, (unsigned char *)&modem_tx_buf[0], len);
}

void ClrE2prom( unsigned short addr, unsigned char len, unsigned char cnt )
{
    unsigned char i;
    
    _memset_to_0( modem_tx_buf, len );
    
    for( i = 0; i < cnt; i++ )
    {
        E2promWrite( addr + (unsigned short)i*len, modem_tx_buf, len );
    }
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -