ZDBMS/output/sh_iec60730b_8051f_dio.lst

262 lines
14 KiB
Plaintext
Raw Normal View History

2025-02-06 07:35:32 +00:00
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)