ZDBMS/output/sh_iec60730b_8051f_dio.lst

262 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_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)