C51 COMPILER V9.01 SH_IEC60730B_8051F_DIO 10/11/2023 14:22:17 PAGE 1 C51 COMPILER V9.01, COMPILATION OF MODULE SH_IEC60730B_8051F_DIO OBJECT MODULE PLACED IN .\output\sh_iec60730b_8051f_dio.obj COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE code_classb\iec60730_lib\sh_iec60730b_8051f_dio.c LARGE OPTIMIZE(7,SIZE) - REGFILE(.\output\McuFlash_ISP.ORC) BROWSE INTVECTOR(0X1000) INCDIR(.\header_app;.\header_drv;.\code_gasguage) DEBUG OBJ -ECTEXTEND PRINT(.\output\sh_iec60730b_8051f_dio.lst) OBJECT(.\output\sh_iec60730b_8051f_dio.obj) line level source 1 /* 2 * IEC60730 Class B Library for SINOWEALTH 8051 based ICs. 3 * File: sh_iec60730b_8051f_dio.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_dio.c: can't open file 'sh_iec60730b_8051f_cf -g.h' 18 19 20 #if SH_CHK_DIO_TEST_EN == 1 *** WARNING C322 IN LINE 20 OF code_classb\iec60730_lib\sh_iec60730b_8051f_dio.c: unknown identifier /******************************************************************************* * * @brief Checks whether the tested pin has the expected input value. * * @param *pTestedPin - pointer to tested pin struct. * @param expectedValue - expected input value. * * @return SH_CHK_PASS * SH_CHK_FAIL_DIO * ******************************************************************************/ SHT_RESULT sh_8051f_dio_input(SHT_GPIO_ID pin, SHT_BOOL expectedValue) { SHT_BOOL readv = sh_8051f_dio_read_port_val(pin); readv >>= (pin&0xF); readv &= 1; if(readv != expectedValue) return SH_CHK_FAIL_DIO; else return SH_CHK_PASS; } /******************************************************************************* * * @brief Function tests whether the tested pin, that is configured as the input one, has the expected -value. * It is adapted to be used as a "get" function for the sh_8051f_dio_short_to_supply_set() and the sh_8051f_dio_short_to_adjacent_set() function. * If the Adjacent pin is not involved in test, then tested pin parameters can be entered instea -d the adjacent pin parameters. C51 COMPILER V9.01 SH_IEC60730B_8051F_DIO 10/11/2023 14:22:17 PAGE 2 * Both tested pin and adjacent pin must be configured as GPIO before the call of the function!! -! * * @param *pTestedPin - pointer to tested pin struct. * @param *pAdjPin - pointer to adjacent pin struct. * @param testedPinValue - expected value of the tested pin (logical 0 or logical 1). * @param backupEnable - flag. if non-zero, backup functionality is enable/active. * * @return SH_CHK_PASS * SH_CHK_FAIL_DIO * ******************************************************************************/ SHT_RESULT sh_8051f_dio_input_ext(SHT_IEC60730B_DIO_TEST *pTestedPin,SHT_IEC60730B_DIO_TEST *pAdjPin, SHT_ -BOOL expectedValue,SHT_BOOL backupEnable) { SHT_RESULT checkResult = SH_CHK_PASS; SHT_BOOL readv = sh_8051f_dio_read_port_cr(pTestedPin->gpio); if(((readv >>(pTestedPin->gpio&0xF))&1) != SH_DIO_MODE_IN ) checkResult = SH_CHK_FAIL_DIO; else { readv = sh_8051f_dio_read_port_val(pTestedPin->gpio); readv >>= (pTestedPin->gpio&0xF); readv &= 1; if(expectedValue != readv) checkResult = SH_CHK_FAIL_DIO; } if(backupEnable) {//restore pins; sh_8051f_dio_write_port_cr(pTestedPin->gpio,pTestedPin->bkCR); sh_8051f_dio_write_port_pcr(pTestedPin->gpio,pTestedPin->bkPCR); sh_8051f_dio_write_port_val(pTestedPin->gpio,pTestedPin->bkVAL); if(pAdjPin != pTestedPin) { sh_8051f_dio_write_port_cr(pAdjPin->gpio,pTestedPin->bkCR); sh_8051f_dio_write_port_pcr(pAdjPin->gpio,pTestedPin->bkPCR); sh_8051f_dio_write_port_val(pAdjPin->gpio,pTestedPin->bkVAL); } } return checkResult; } /******************************************************************************* * * @brief Function sets the tested pin as GPIO input with pull-up enable to test the pin against the sh -ort to GND. * For getting the result of the test, call the "sh_8051f_dio_input_ext()" function with * the expected "testedPinValue" sets to 1 for GND. * Tested pin must be configured as GPIO before the call of the function! * * @param *pTestedPin - pointer to tested pin struct. * @param backupEnable - flag. If non-zero, backup functionality is enable/active. * * @return SH_CHK_PASS * SH_CHK_FAIL_DIO * ******************************************************************************/ SHT_RESULT sh_8051f_dio_short_to_supply_set(SHT_IEC60730B_DIO_TEST *pTestedPin, SHT_BOOL backupEnable) { C51 COMPILER V9.01 SH_IEC60730B_8051F_DIO 10/11/2023 14:22:17 PAGE 3 SHT_RESULT checkResult = SH_CHK_PASS; SHT_BOOL readv = sh_8051f_dio_read_port_cr(pTestedPin->gpio); if(backupEnable) { pTestedPin->bkCR = readv; pTestedPin->bkVAL = sh_8051f_dio_read_port_val(pTestedPin->gpio); pTestedPin->bkPCR = sh_8051f_dio_read_port_pcr(pTestedPin->gpio); } if(((readv >>(pTestedPin->gpio&0xF))&1) != SH_DIO_MODE_IN ) return SH_CHK_FAIL_DIO; readv = sh_8051f_dio_read_port_pcr(pTestedPin->gpio); readv |= (1<<(pTestedPin->gpio&0xF)); sh_8051f_dio_write_port_pcr(pTestedPin->gpio,readv); return checkResult; } /******************************************************************************* * * @brief Function sets the tested pin as GPIO input with "testedPinValue". * And the adjacent pin as GPIO output with opposite output value as for the tested pin. * For getting the result of the test, call the "sh_8051f_dio_input()" function with the expecte -d "testedPinValue". * Both tested pin and adjacent pin must be configured as GPIO before the call of the function! * * @param *pTestedPin - pointer to tested pin struct. * @param *pAdjPin - pointer to adjacent pin struct. * @param testedPinValue - value that will be set on the tested pin. * @param backupEnable - flag. If non-zero, backup functionality is enable/active. * * @return SH_CHK_PASS * SH_CHK_FAIL_DIO * ******************************************************************************/ SHT_RESULT sh_8051f_dio_short_to_adjacent_set(SHT_IEC60730B_DIO_TEST *pTestedPin, SHT_IEC60730B_DIO_TEST * -pAdjPin, SHT_BOOL backupEnable) { SHT_RESULT checkResult = SH_CHK_PASS; SHT_BOOL readv = sh_8051f_dio_read_port_cr(pTestedPin->gpio); if(backupEnable) { pTestedPin->bkCR = readv; pTestedPin->bkVAL = sh_8051f_dio_read_port_val(pTestedPin->gpio); pTestedPin->bkPCR = sh_8051f_dio_read_port_pcr(pTestedPin->gpio); pAdjPin->bkCR = sh_8051f_dio_read_port_cr(pAdjPin->gpio); pAdjPin->bkVAL = sh_8051f_dio_read_port_val(pAdjPin->gpio); pAdjPin->bkPCR = sh_8051f_dio_read_port_pcr(pAdjPin->gpio); } if(((readv >>(pTestedPin->gpio&0xF))&1) != SH_DIO_MODE_IN ) return SH_CHK_FAIL_DIO; /* pull up */ readv = sh_8051f_dio_read_port_pcr(pTestedPin->gpio); readv |= (1<<(pTestedPin->gpio&0xF)); sh_8051f_dio_write_port_pcr(pTestedPin->gpio,readv); /*adjacent pin output 0*/ readv = sh_8051f_dio_read_port_cr(pAdjPin->gpio); readv |= (1<<(pAdjPin->gpio&0xF)); C51 COMPILER V9.01 SH_IEC60730B_8051F_DIO 10/11/2023 14:22:17 PAGE 4 sh_8051f_dio_write_port_cr(pAdjPin->gpio,readv); /*set output mode*/ sh_8051f_dio_write_pin(pAdjPin->gpio,SH_DIO_PINV_0); /*out 0*/ return checkResult; } /******************************************************************************* * * @brief This function executes the digital output test. * The test is focused only to test one digital pin. * * @param *pTestedPin - pointer to tested pin struct. * @param delay - the delay needed to recognize the value change on tested pin. * * @return SH_CHK_PASS * SH_CHK_FAIL_DIO * ******************************************************************************/ SHT_RESULT sh_8051f_dio_output(SHT_GPIO_ID pin, SHT_U8 delay) { SHT_RESULT shResult = SH_CHK_PASS; SHT_U8 readv = sh_8051f_dio_read_port_cr(pin); if(((readv >>(pin&0xF))&1) != SH_DIO_MODE_OUT ) shResult = SH_CHK_FAIL_DIO; else { SHT_U8 bkVAL = sh_8051f_dio_read_port_val(pin); sh_8051f_dio_write_pin(pin,SH_DIO_PINV_0); readv = delay; while(readv){readv--;} readv = sh_8051f_dio_read_port_val(pin); if(((readv >>(pin&0xF))&1) != SH_DIO_PINV_0) shResult = SH_CHK_FAIL_DIO; else { sh_8051f_dio_write_pin(pin,SH_DIO_PINV_1); readv = readv; while(readv){readv--;} readv = sh_8051f_dio_read_port_val(pin); if(((readv >>(pin&0xF))&1) != SH_DIO_PINV_1) shResult = SH_CHK_FAIL_DIO; } sh_8051f_dio_write_port_val(pin,bkVAL); } return shResult; } #endif MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = ---- ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = ---- ---- IDATA SIZE = ---- ---- BIT SIZE = ---- ---- END OF MODULE INFORMATION. C51 COMPILER V9.01 SH_IEC60730B_8051F_DIO 10/11/2023 14:22:17 PAGE 5 C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)