原创 c51 警告,日期转星期 crc校验

2007-6-25 09:16 2391 5 5 分类: MCU/ 嵌入式

打开C:\Keil\C51\HLP 下的C51.pdf文档就可以看到以下内容:
Segment Prefix Memory Type  Description
?PR?             program     Executable program code
?CO?             code         Constant data in program
memory
?BI?             bit         Bit data in internal data
memory
?BA?             bdata         Bit-addressable data in
internal data memory
?DT?             data         Internal data memory
?FD?             far         Far memory (RAM space)
?FC?             const far     Far memory (constant ROM
space)
?ID?             idata         Indirectly-addressable
internal data memory
?PD?             pdata         Paged data in external data
memory
?XD?             xdata         Xdata memory (RAM space)
?XC?             const         xdata Xdata memory (constant
ROM space)


 


uint8 Get_Week(uint16 year, uint8 mon, uint8 day)
{
    uint8 code r[13]={0,0,3,3,6,1,4,6,2,5,0,3,5};
    uint8 c,w;
    year%=400;
    if((year==0||year%4==0&&year%100!=0)&&mon<3)
      c="5";
    else
      c="6";
    w=(year+year/4-year/100+r[mon]+day+c)%7;
    return w;
}


 


/*
***********************************************************


*********************
************************
** 函数名称: CalculateWeekDay
** 功能描述: 根据年月日计算星期,从公元元年到5535年,不管星期


制从何时开始,何时结束
** 0表示星期日,6表示星期六;要更改表示方法,修改week_tab[];
** 输 入: Year,Month,Day
** 输 出: Week
** 全局变量: 无
***********************************************************


*********************
***********************
*/
uchar code week_tab[] =
{0,1,4,4,0,2,5,0,3,6,1,4,6};
uchar CalculateWeekDay(uint Year,uchar Month,uchar Date)
{
uchar week;
//无错误检查
if((Month<3) && (!(Year&0x03) && (Year%1000) || (!(Year%


400)))) {
Date--;
}
week = (Date + Year + Year/4 + Year/400 - Year/100 +


week_tab[Month]-2)%7;


return week;
}


 



CRC校验


***********************************************************


***************************************
*
*函数:unsigned int getCrc(unsigned char *ptr,  unsigned


char len)
*功能:CRC校验
*参数:*ptr------所校验的内容
*       len------内容的长度
*作者:robin
*日期:2007年3月12日
***********************************************************


****************************************
*/
unsigned int CRC16( unsigned char *puchMsg, unsigned short


usDataLen )
{
    unsigned char uchCRCHi = 0xFF ;                 /* high


byte
of CRC initialized */
    unsigned char uchCRCLo = 0xFF ;                 /* low


byte
of CRC initialized */
    unsigned int uIndex ;                        
    /* will index into CRC lookup table */
    while (usDataLen--)                             /*
pass through message buffer */
    {
        uIndex = uchCRCLo^*puchMsg++ ;                 /*


calculate
the CRC */
        uchCRCLo = uchCRCHi^auchCRCHi[uIndex] ;
        uchCRCHi = auchCRCLo[uIndex];
    }
    return (uchCRCHi << 8 | uchCRCLo);
}


这是求得的CRC,


下面是表的内容,


static unsigned char code auchCRCHi[] =
{        //CRC
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,


0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
    0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,


0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
    0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,


0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,
    0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,


0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00,


0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81,
    0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,


0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
    0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81,


0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,
    0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,


0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,


0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
    0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,


0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
    0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,


0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,
    0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,


0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
    0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01,


0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
    0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,


0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
    0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81,


0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,
    0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1,


0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
    0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01,


0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
    0x40
};


static char code auchCRCLo[] =
{
    0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6,


0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4,
    0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E,


0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,
    0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA,


0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD,
    0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17,


0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,
    0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33,


0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7,
    0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D,


0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,
    0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9,


0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE,
    0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24,


0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,
    0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0,


0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2,
    0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4,


0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,
    0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8,


0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB,
    0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD,


0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,
    0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1,


0x71, 0x70, 0xB0, 0x50, 0x90, 0x91,
    0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97,


0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,
    0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B,


0x5B, 0x99, 0x59, 0x58, 0x98, 0x88,
    0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E,


0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,
    0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82,


0x42, 0x43, 0x83, 0x41, 0x81, 0x80,
    0x40
};


 


 



 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /3 下一条