ZDBMS/output/sh_iec60730b_8051f_ee.lst

268 lines
14 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

C51 COMPILER V9.01 SH_IEC60730B_8051F_EE 10/11/2023 14:22:17 PAGE 1
C51 COMPILER V9.01, COMPILATION OF MODULE SH_IEC60730B_8051F_EE
OBJECT MODULE PLACED IN .\output\sh_iec60730b_8051f_ee.obj
COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE code_classb\iec60730_lib\sh_iec60730b_8051f_ee.c LARGE OPTIMIZE(7,SIZE)
-REGFILE(.\output\McuFlash_ISP.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEBUG OBJE
-CTEXTEND PRINT(.\output\sh_iec60730b_8051f_ee.lst) OBJECT(.\output\sh_iec60730b_8051f_ee.obj)
line level source
1 /*
2 * IEC60730 Class B Library for SINOWEALTH 8051 based ICs.
3 * File: sh_iec60730b_8051f_ee.c
4 * Version: 1.0
5 * Author: Robin.zhang Chaoming.luo
6 * Date: 04/21/2023
7 * SINOWEALTH IS SUPPLYING THIS SOFTWARE FOR USE EXCLUSIVELY ON SINOWEALTH'S
8 * MICROCONTROLLER PRODUCTS. IT IS PROTECTED UNDER APPLICABLE COPYRIGHT LAWS.
9 * THIS SOFTWARE IS FOR GUIDANCE IN ORDER TO SAVE TIME. AS A RESULT, SINOWEALTH
10 * SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES
11 * WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF SUCH FIRMWARE AND/OR
12 * THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN
13 * CONNECTION WITH THEIR PRODUCTS.
14 *
15 */
16
17 #include "sh_iec60730b_8051f_cfg.h"
*** WARNING C318 IN LINE 17 OF code_classb\iec60730_lib\sh_iec60730b_8051f_ee.c: can't open file 'sh_iec60730b_8051f_cfg
-.h'
18 #include "MCURegister.h"
19
20 #if SH_CHK_EE_EN == 1
*** WARNING C322 IN LINE 20 OF code_classb\iec60730_lib\sh_iec60730b_8051f_ee.c: unknown identifier
SHT_EEADDR xdata __iec60730b_ee1_checksum;
SHT_EEADDR __iec60730b_ee1_addr;
SHT_U16 __iec60730b_ee1_crc;
SHT_EEADDR xdata __iec60730b_ee2_checksum;
SHT_EEADDR __iec60730b_ee2_addr;
SHT_U16 __iec60730b_ee2_crc;
SHT_U16 __iec60730b_ee_xram_crc;
SHT_U16 xdata __iec60730b_ee_xram_checksum _at_ SH_CHK_EETOXRAM_END_ADDR;
SHT_U16 code CRC16Table[256]=
{
0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
C51 COMPILER V9.01 SH_IEC60730B_8051F_EE 10/11/2023 14:22:17 PAGE 2
0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
};
/*******************************************************************************
*
* @brief This function generate the 16-bit CRC value using SW.
*
* @param dataIn - tested data.
* @param crcVal - start condition seed (for the first iteration it is
* typically user defined value, for the next iterations
* it is the result from the previous function call).
*
* @return 16-bit crc value of the memory range (CRC-16-CCITT - normal 0x1021).
*
******************************************************************************/
SHT_U16 sh_8051f_crc_ee_sw16(SHT_U8 dataIn, SHT_U16 crcVal)
{
SHT_U8 crcVH;
SHT_U8 i;
for(i = 0; i < 8; i++)
{
crcVH = crcVal>>8;
crcVal <<= 1;
if((dataIn ^ crcVH) >> 7)
crcVal ^= 0x1021;
dataIn <<= 1;
}
return crcVal;
}
/*******************************************************************************
*
* @brief This function caculate CRC in runtime and check the result after done.
*
* @param void
*
* @return SH_CHK_PASS
* SH_CHK_FAIL_EE
*
******************************************************************************/
SHT_RESULT sh_8051f_ee1_runtime(void)
{
SHT_RESULT checkResult = SH_CHK_PASS;
if(__iec60730b_ee1_addr == SH_CHK_EE1_START_ADDR)
__iec60730b_ee1_crc = 0xFFFF;
sh_8051f_ee_readchecksum((SH_CHK_EE1_END_ADDR-2), (SHT_RESULT xdata *)&__iec60730b_ee1_checksum, 2);
C51 COMPILER V9.01 SH_IEC60730B_8051F_EE 10/11/2023 14:22:17 PAGE 3
FLASHCON |= 0x01; //MOVC instruction or SSP function access EEPROM area
__iec60730b_ee1_crc = sh_8051f_crc_ee_sw16(*(SHT_U8 code *)__iec60730b_ee1_addr, __iec60730b_ee1_crc)
-;
FLASHCON &= ~0x01; //MOVC instruction or SSP function access Main Block area
__iec60730b_ee1_addr++;
if(__iec60730b_ee1_addr >= (SH_CHK_EE1_END_ADDR-2))
{
if(__iec60730b_ee1_crc != __iec60730b_ee1_checksum)
checkResult = SH_CHK_FAIL_EE;
__iec60730b_ee1_addr = SH_CHK_EE1_START_ADDR;
}
return checkResult;
}
/*******************************************************************************
*
* @brief This function caculate CRC in runtime and check the result after done.
*
* @param void
*
* @return SH_CHK_PASS
* SH_CHK_FAIL_EE
*
******************************************************************************/
SHT_RESULT sh_8051f_ee2_runtime(void)
{
SHT_RESULT checkResult = SH_CHK_PASS;
if(__iec60730b_ee2_addr == SH_CHK_EE2_START_ADDR)
__iec60730b_ee2_crc = 0xFFFF;
sh_8051f_ee_readchecksum((SH_CHK_EE2_END_ADDR-2), (SHT_RESULT xdata *)&__iec60730b_ee2_checksum, 2);
FLASHCON |= 0x01; //MOVC instruction or SSP function access EEPROM area
__iec60730b_ee2_crc = sh_8051f_crc_ee_sw16(*(SHT_U8 code *)__iec60730b_ee2_addr, __iec60730b_ee2_crc)
-;
FLASHCON &= ~0x01; //MOVC instruction or SSP function access Main Block area
__iec60730b_ee2_addr++;
if(__iec60730b_ee2_addr >= (SH_CHK_EE2_END_ADDR-2))
{
if(__iec60730b_ee2_crc != __iec60730b_ee2_checksum)
checkResult = SH_CHK_FAIL_EE;
__iec60730b_ee2_addr = SH_CHK_EE2_START_ADDR;
}
return checkResult;
}
/*************************************************************************************************
*
* @brief This function reads the CRC of the EEPROM at run time.
*
* @param SourceAddr -Source address
* @param *TargetAddr -Target address
* @param Length -Read length
*
*************************************************************************************************/
void sh_8051f_ee_readchecksum(SHT_EEADDR SourceAddr, SHT_RESULT xdata *TargetAddr, SHT_EEADDR Length)
{
SHT_EEADDR i;
SHT_RESULT xdata *data TargetAddr1 = TargetAddr;
C51 COMPILER V9.01 SH_IEC60730B_8051F_EE 10/11/2023 14:22:17 PAGE 4
FLASHCON |= 0x01; //MOVC instruction or SSP function access EEPROM area
for(i=0; i<Length; i++)
{
*TargetAddr1 = CBYTE[SourceAddr+i];
TargetAddr1++;
}
FLASHCON &= ~0x01; //MOVC instruction or SSP function access Main Block area
}
/*******************************************************************************
*
* @brief This function caculate CRC in runtime and check the result after done.
*
* @param void
*
* @return SH_CHK_PASS
* SH_CHK_FAIL_EE
*
******************************************************************************/
SHT_RESULT sh_8051f_ee_xram_runtime(void)
{
SHT_RESULT checkResult = SH_CHK_PASS;
__iec60730b_ee_xram_crc = sh_8051f_crc_ee_xram((SHT_U8 xdata *)SH_CHK_EETOXRAM_START_ADDR, (SH_CHK_EE
-TOXRAM_SIZE - 2));
if(__iec60730b_ee_xram_crc != __iec60730b_ee_xram_checksum)
checkResult = SH_CHK_FAIL_EE;
return checkResult;
}
/*******************************************************************************
*
* @brief This function generate the EEPROM to XRAM CRC.
*
* @param *p -Start address
* @param counter -Length of data
*
* @return 16-bit crc value of the memory range (CRC-16-CCITT - normal 0x1021).
*
******************************************************************************/
SHT_U16 sh_8051f_crc_ee_xram(SHT_U8 xdata *p, SHT_U16 counter) //look-up table calculte
-CRC
{
SHT_U16 crc16 = 0xFFFF;
for( ; counter > 0; counter--)
{
crc16 = CRC16Table[(SHT_U8)(*p ^ (crc16 >> 8))] ^ (crc16 << 8);
p++;
}
return(crc16);
}
#endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = ---- ----
CONSTANT SIZE = ---- ----
C51 COMPILER V9.01 SH_IEC60730B_8051F_EE 10/11/2023 14:22:17 PAGE 5
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)