262 lines
14 KiB
Plaintext
262 lines
14 KiB
Plaintext
|
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)
|