diff --git a/IO.C b/IO.C new file mode 100644 index 0000000..ab7720d --- /dev/null +++ b/IO.C @@ -0,0 +1,296 @@ +//**************************************************************************** +// @Module GPIO +// @Filename IO.C +// @Project CL2.0.dav +//---------------------------------------------------------------------------- +// @Controller Infineon XC886CLM-8FF +// +// @Compiler Keil +// +// @Codegenerator 1.3 +// +// @Description: This file contains functions that use the IO module. +// +//---------------------------------------------------------------------------- +// @Date 2025/1/18 20:45:29 +// +//**************************************************************************** + +// USER CODE BEGIN (IO_General,1) + +// USER CODE END + + + +//**************************************************************************** +// @Project Includes +//**************************************************************************** + +#include "MAIN.H" + +// USER CODE BEGIN (IO_General,2) + +// USER CODE END + + +//**************************************************************************** +// @Macros +//**************************************************************************** + +// USER CODE BEGIN (IO_General,3) + +// USER CODE END + + +//**************************************************************************** +// @Defines +//**************************************************************************** + +// USER CODE BEGIN (IO_General,4) + +// USER CODE END + + +//**************************************************************************** +// @Typedefs +//**************************************************************************** + +// USER CODE BEGIN (IO_General,5) + +// USER CODE END + + +//**************************************************************************** +// @Imported Global Variables +//**************************************************************************** + +// USER CODE BEGIN (IO_General,6) + +// USER CODE END + + +//**************************************************************************** +// @Global Variables +//**************************************************************************** + +// USER CODE BEGIN (IO_General,7) + +// USER CODE END + + +//**************************************************************************** +// @External Prototypes +//**************************************************************************** + +// USER CODE BEGIN (IO_General,8) + +// USER CODE END + + +//**************************************************************************** +// @Prototypes Of Local Functions +//**************************************************************************** + +// USER CODE BEGIN (IO_General,9) + +// USER CODE END + + +//**************************************************************************** +// @Function void IO_vInit(void) +// +//---------------------------------------------------------------------------- +// @Description This is the initialization function of the IO function +// library. It is assumed that the SFRs used by this library +// are in their reset state. +// +//---------------------------------------------------------------------------- +// @Returnvalue None +// +//---------------------------------------------------------------------------- +// @Parameters None +// +//---------------------------------------------------------------------------- +// @Date 2025/1/18 +// +//**************************************************************************** + +// USER CODE BEGIN (IO_Init,1) + +// USER CODE END + +void IO_vInit(void) +{ + // USER CODE BEGIN (IO_Init,2) + + // USER CODE END + + + /// *********************************************************************** + /// Note : All peripheral related IO configurations are done in the + /// respective peripheral modules (alternate functions selection) + /// + /// If no pins are selected DAvE assumes that registers are in default + /// settings + /// *********************************************************************** + + /// ----------------------------------------------------------------------- + /// Configuration of Port P0: + /// ----------------------------------------------------------------------- + /// P0.0: + /// - is used as general purpose output + /// - push/pull output is selected + /// - the pin status is low level + /// - pull-down device is assigned + /// P0.1: + /// - is used as alternate input for the UART Receive Input + /// - pull-up device is assigned + /// P0.2: + /// - is used as general purpose output + /// - push/pull output is selected + /// - the pin status is high level + /// - pull-up device is assigned + /// P0.3: + /// - is used as general purpose output + /// - open drain output is selected + /// - the pin status is high level + /// - pull-up device is assigned + /// P0.5: + /// - is used as alternate input for the External Interrupt Input 0 + /// - pull-up device is assigned + + SFR_PAGE(_pp3, noSST); // switch to page 3 + P0_OD = 0x08; // load open-drain register + + SFR_PAGE(_pp1, noSST); // switch to page 1 + P0_PUDSEL = 0xFE; // load pullup/pulldown select register + P0_PUDEN = 0xEF; // load pullup/pulldown enable register + + SFR_PAGE(_pp0, noSST); // switch to page 0 + P0_DIR = 0x0D; // load direction register + P0_DATA = 0x0C; // load data output register + + + /// ----------------------------------------------------------------------- + /// Configuration of Port P1: + /// ----------------------------------------------------------------------- + /// P1.0: + /// - is used as alternate input for the MCAN Node 0 Receiver Input + /// - pull-up device is assigned + /// P1.1: + /// - is used as alternate output for the MCAN Node 0 Transmitter Output + /// - push/pull output is selected + /// - pull-up device is assigned + /// P1.2: + /// - is used as general input + /// - pull-up device is assigned + /// P1.3: + /// - is used as general input + /// - pull-up device is assigned + /// P1.4: + /// - is used as general input + /// - pull-up device is assigned + /// P1.5: + /// - is used as general purpose output + /// - push/pull output is selected + /// - the pin status is low level + /// - pull-down device is assigned + /// P1.6: + /// - is used as general purpose output + /// - push/pull output is selected + /// - the pin status is low level + /// - pull device is disabled (tristate) + + SFR_PAGE(_pp3, noSST); // switch to page 3 + P1_OD = 0x00; // load open-drain register + + SFR_PAGE(_pp1, noSST); // switch to page 1 + P1_PUDSEL = 0xDF; // load pullup/pulldown select register + P1_PUDEN = 0xBF; // load pullup/pulldown enable register + + SFR_PAGE(_pp0, noSST); // switch to page 0 + P1_DIR = 0x60; // load direction register + + + /// ----------------------------------------------------------------------- + /// Configuration of Port P2: + /// ----------------------------------------------------------------------- + /// - no pin of port P2 is used + + /// ----------------------------------------------------------------------- + /// Configuration of Port P3: + /// ----------------------------------------------------------------------- + /// P3.2: + /// - is used as general purpose output + /// - open drain output is selected + /// - the pin status is low level + /// - pull-up device is assigned + /// P3.3: + /// - is used as general purpose output + /// - open drain output is selected + /// - the pin status is low level + /// - pull-up device is assigned + /// P3.4: + /// - is used as general purpose output + /// - open drain output is selected + /// - the pin status is low level + /// - pull-up device is assigned + /// P3.5: + /// - is used as general purpose output + /// - open drain output is selected + /// - the pin status is low level + /// - pull-up device is assigned + /// P3.6: + /// - is used as general purpose output + /// - push/pull output is selected + /// - the pin status is low level + /// - pull-down device is assigned + /// P3.7: + /// - is used as general purpose output + /// - push/pull output is selected + /// - the pin status is low level + /// - pull-down device is assigned + + SFR_PAGE(_pp3, noSST); // switch to page 3 + P3_OD = 0x3C; // load open-drain register + + SFR_PAGE(_pp1, noSST); // switch to page 1 + P3_PUDSEL = 0x3F; // load pullup/pulldown select register + P3_PUDEN = 0xFC; // load pullup/pulldown enable register + + SFR_PAGE(_pp0, noSST); // switch to page 0 + P3_DIR = 0xFC; // load direction register + + + /// ----------------------------------------------------------------------- + /// Configuration of Port P4: + /// ----------------------------------------------------------------------- + /// P4.3: + /// - is used as general purpose output + /// - push/pull output is selected + /// - the pin status is low level + /// - pull-down device is assigned + + + SFR_PAGE(_pp1, noSST); // switch to page 1 + P4_PUDSEL = 0x00; // load pullup/pulldown select register + P4_PUDEN = 0x08; // load pullup/pulldown enable register + + SFR_PAGE(_pp0, noSST); // switch to page 0 + P4_DIR = 0x08; // load direction register + + + + // USER CODE BEGIN (IO_Init,3) + + // USER CODE END + +} // End of function IO_vInit + + + + +// USER CODE BEGIN (IO_General,10) + +// USER CODE END + diff --git a/IO.H b/IO.H new file mode 100644 index 0000000..3605c35 --- /dev/null +++ b/IO.H @@ -0,0 +1,248 @@ +//**************************************************************************** +// @Module GPIO +// @Filename IO.H +// @Project CL2.0.dav +//---------------------------------------------------------------------------- +// @Controller Infineon XC886CLM-8FF +// +// @Compiler Keil +// +// @Codegenerator 1.3 +// +// @Description: This file contains all function prototypes and macros for +// the IO module. +// +//---------------------------------------------------------------------------- +// @Date 2025/1/18 20:45:29 +// +//**************************************************************************** + +// USER CODE BEGIN (IO_Header,1) + +// USER CODE END + + + +#ifndef _IO_H_ +#define _IO_H_ + +//**************************************************************************** +// @Project Includes +//**************************************************************************** + +// USER CODE BEGIN (IO_Header,2) + +// USER CODE END + + +//**************************************************************************** +// @Macros +//**************************************************************************** + +// USER CODE BEGIN (IO_Header,3) + +// USER CODE END + + +//**************************************************************************** +// @Defines +//**************************************************************************** + +// USER CODE BEGIN (IO_Header,4) + +// USER CODE END + +// Port 0 + +sbit P0_0 = 0x80; +sbit P0_1 = 0x81; +sbit P0_2 = 0x82; +sbit P0_3 = 0x83; +sbit P0_4 = 0x84; +sbit P0_5 = 0x85; +sbit P0_7 = 0x87; + +// Port 1 + +sbit P1_0 = 0x90; +sbit P1_1 = 0x91; +sbit P1_2 = 0x92; +sbit P1_3 = 0x93; +sbit P1_4 = 0x94; +sbit P1_5 = 0x95; +sbit P1_6 = 0x96; +sbit P1_7 = 0x97; + +// Port 2 + +sbit P2_0 = 0xA0; +sbit P2_1 = 0xA1; +sbit P2_2 = 0xA2; +sbit P2_3 = 0xA3; +sbit P2_4 = 0xA4; +sbit P2_5 = 0xA5; +sbit P2_6 = 0xA6; +sbit P2_7 = 0xA7; + +// Port 3 + +sbit P3_0 = 0xB0; +sbit P3_1 = 0xB1; +sbit P3_2 = 0xB2; +sbit P3_3 = 0xB3; +sbit P3_4 = 0xB4; +sbit P3_5 = 0xB5; +sbit P3_6 = 0xB6; +sbit P3_7 = 0xB7; + +// Port 4 + +sbit P4_0 = 0xC8; +sbit P4_1 = 0xC9; +sbit P4_3 = 0xCB; + +//**************************************************************************** +// @Typedefs +//**************************************************************************** + +// USER CODE BEGIN (IO_Header,5) + +// USER CODE END + + +//**************************************************************************** +// @Imported Global Variables +//**************************************************************************** + +// USER CODE BEGIN (IO_Header,6) + +// USER CODE END + + +//**************************************************************************** +// @Global Variables +//**************************************************************************** + +// USER CODE BEGIN (IO_Header,7) + +// USER CODE END + + +//**************************************************************************** +// @Prototypes Of Global Functions +//**************************************************************************** + +void IO_vInit(void); + + +// USER CODE BEGIN (IO_Header,8) + +// USER CODE END + + +//**************************************************************************** +// @Macro IO_ubReadPin(PinName) +// +//---------------------------------------------------------------------------- +// @Description This macro returns the status of the chosen portpin. +// Note: +// 'PinName' identifies the pin of a bit-addressable port. The +// default names can be changed in the port configuration +// dialog. +// +//---------------------------------------------------------------------------- +// @Returnvalue Status of the chosen portpin +// +//---------------------------------------------------------------------------- +// @Parameters PinName: +// Pin to be read +// +//---------------------------------------------------------------------------- +// @Date 2025/1/18 +// +//**************************************************************************** + +#define IO_ubReadPin(PinName) PinName + +//**************************************************************************** +// @Macro IO_vSetPin(PinName) +// +//---------------------------------------------------------------------------- +// @Description The chosen portpin is set to '1'. +// Note: +// 'PinName' identifies the pin of a bit-addressable port. The +// default names can be changed in the port configuration +// dialog. +// +//---------------------------------------------------------------------------- +// @Returnvalue None +// +//---------------------------------------------------------------------------- +// @Parameters PinName: +// Pin to be set to '1' +// +//---------------------------------------------------------------------------- +// @Date 2025/1/18 +// +//**************************************************************************** + +#define IO_vSetPin(PinName) PinName = 1 + +//**************************************************************************** +// @Macro IO_vResetPin(PinName) +// +//---------------------------------------------------------------------------- +// @Description The chosen portpin is set to '0'. +// Note: +// 'PinName' identifies the pin of a bit-addressable port. The +// default names can be changed in the port configuration +// dialog. +// +//---------------------------------------------------------------------------- +// @Returnvalue None +// +//---------------------------------------------------------------------------- +// @Parameters PinName: +// Pin to be set to '0' +// +//---------------------------------------------------------------------------- +// @Date 2025/1/18 +// +//**************************************************************************** + +#define IO_vResetPin(PinName) PinName = 0 + +//**************************************************************************** +// @Macro IO_vTogglePin(PinName) +// +//---------------------------------------------------------------------------- +// @Description The chosen portpin will be toggled. +// Note: +// 'PinName' identifies the pin of a bit-addressable port. The +// default names can be changed in the port configuration +// dialog. +// +//---------------------------------------------------------------------------- +// @Returnvalue None +// +//---------------------------------------------------------------------------- +// @Parameters PinName: +// Pin to be toggled +// +//---------------------------------------------------------------------------- +// @Date 2025/1/18 +// +//**************************************************************************** + +#define IO_vTogglePin(PinName) PinName ^= 1 + +//**************************************************************************** +// @Interrupt Vectors +//**************************************************************************** + +// USER CODE BEGIN (IO_Header,9) + +// USER CODE END + + +#endif // ifndef _IO_H_ diff --git a/MAIN.C b/MAIN.C new file mode 100644 index 0000000..be592b2 --- /dev/null +++ b/MAIN.C @@ -0,0 +1,273 @@ +//**************************************************************************** +// @Module Project Settings +// @Filename MAIN.C +// @Project CL2.0.dav +//---------------------------------------------------------------------------- +// @Controller Infineon XC886CLM-8FF +// +// @Compiler Keil +// +// @Codegenerator 1.3 +// +// @Description This file contains the Project initialization function. +// +//---------------------------------------------------------------------------- +// @Date 2025/1/18 20:45:29 +// +//**************************************************************************** + +// USER CODE BEGIN (MAIN_General,1) + +// USER CODE END + + + +//**************************************************************************** +// @Project Includes +//**************************************************************************** + +#include "MAIN.H" + +// USER CODE BEGIN (MAIN_General,2) + +// USER CODE END + + +//**************************************************************************** +// @Macros +//**************************************************************************** + +// USER CODE BEGIN (MAIN_General,3) + +// USER CODE END + + +//**************************************************************************** +// @Defines +//**************************************************************************** + +// USER CODE BEGIN (MAIN_General,4) + +// USER CODE END + + +//**************************************************************************** +// @Typedefs +//**************************************************************************** + +// USER CODE BEGIN (MAIN_General,5) + +// USER CODE END + + +//**************************************************************************** +// @Imported Global Variables +//**************************************************************************** + +// USER CODE BEGIN (MAIN_General,6) + +// USER CODE END + + +//**************************************************************************** +// @Global Variables +//**************************************************************************** + +// USER CODE BEGIN (MAIN_General,7) + +// USER CODE END + + +//**************************************************************************** +// @External Prototypes +//**************************************************************************** + + +// USER CODE BEGIN (MAIN_General,8) + +// USER CODE END + + +//**************************************************************************** +// @Prototypes Of Local Functions +//**************************************************************************** + +// USER CODE BEGIN (MAIN_General,9) + +// USER CODE END + + +//**************************************************************************** +// @Function void MAIN_vInit(void) +// +//---------------------------------------------------------------------------- +// @Description This function initializes the microcontroller. It is +// assumed that the SFRs are in their reset state. +// +//---------------------------------------------------------------------------- +// @Returnvalue None +// +//---------------------------------------------------------------------------- +// @Parameters None +// +//---------------------------------------------------------------------------- +// @Date 2025/1/18 +// +//**************************************************************************** + +// USER CODE BEGIN (MAIN_Init,1) + +// USER CODE END + +void MAIN_vInit(void) +{ + // USER CODE BEGIN (MAIN_Init,2) + + // USER CODE END + + /// ----------------------------------------------------------------------- + /// Configuration of the System Clock: + /// ----------------------------------------------------------------------- + /// - External Osc is selected (configuration is done in the startup file + /// 'START_XC.A51') + /// - PLL Mode, NDIV = 24 + /// - input frequency is 8 MHz + + + // FCLK runs at 2 times the frequency of PCLK. + SFR_PAGE(_su1, noSST); // switch to page1 + + CMCON = 0x10; // load Clock Control Register + + SFR_PAGE(_su0, noSST); // switch to page0 + + + /// ********************************************************************************* + /// Note : All peripheral related IO configurations are done in the + /// respective peripheral modules (alternate functions selection) + /// ********************************************************************************* + + /// Initialization of module 'GPIO' + IO_vInit(); + + /// Initialization of module 'Timer 2' + T2_vInit(); + + /// Initialization of module 'Watch Dog Timer' + WDT_vInit(); + + /// Initialization of module 'Power Saving Modes' + PS_vInit(); + + /// Initialization of module 'MultiCAN Controller ' + CAN_vInit(); + + /// Initialization of 'Shared interrupts' + SHINT_vInit(); + + // Interrupt Priority + + IP = 0x00; // load Interrupt Priority Register + IPH = 0x00; // load Interrupt Priority High Register + IP1 = 0x00; // load Interrupt Priority 1 Register + IPH1 = 0x00; // load Interrupt Priority 1 High Register + + + // USER CODE BEGIN (MAIN_Init,3) + + // USER CODE END + + //// Interrupt structure 2 mode 0 is selected. + + //// Interrupt service routine choice 2 is selected. + + // globally enable interrupts + EA = 1; + +} // End of function MAIN_vInit + + +//**************************************************************************** +// @Function void main(void) +// +//---------------------------------------------------------------------------- +// @Description This is the main function. +// +//---------------------------------------------------------------------------- +// @Returnvalue None +// +//---------------------------------------------------------------------------- +// @Parameters None +// +//---------------------------------------------------------------------------- +// @Date 2025/1/18 +// +//**************************************************************************** + +// USER CODE BEGIN (MAIN_Main,1) + +// USER CODE END + +void main(void) +{ + // USER CODE BEGIN (MAIN_Main,2) +// ulong i,j; +// static ubyte tmp[8] = {0}; +// for(j=0;j<200;j++){for(i=0;i<133;i++);} + + // USER CODE END + + MAIN_vInit(); + + // USER CODE BEGIN (MAIN_Main,3) + SCU_PAGE = 0; + SP = 0xC0; // Initialize Stack Pointer to 0xC0; +// CanTransmit(); + +// BM8563_InitTime(); +// BM8563_Set4HourAlarm();// + KGF_PIN = 1;//KGF唤醒 + BATTERY_PIN = 1; + + + SetConfig(CFG_MPS_Single,CFG_Repeatbility_High); +// FlgCan_1 = 1;//复位后延时一段时间再调用CAN发送 + // USER CODE END + +// SetConfig(1,CFG_MPS_Single,CFG_Repeatbility_High); + + RomNum = Search_ROM(romid); //搜索当前总线上的所有芯片,将ROM ID存入数组romid,并返回芯片个数 + + + while(1) + { + + // USER CODE BEGIN (MAIN_Main,4) +// for(j=0;j<200;j++){for(i=0;i<133;i++)WDT_vRefresh();} +// tmp[3] = (ubyte)CntCan_1; +// tmp[2] = (ubyte)(CntCan_1>>8); + +// SwSample(); + CanRXTX(); + CanErrorProcess(); + WDT_vRefresh(); +// LedDr(); + BootMain(); + + +// tmp[1] = (ubyte)CntCan_1; +// tmp[0] = (ubyte)(CntCan_1>>8); +// CAN_vLoadData(0x2, (ulong *)(tmp)); // Add this Line +// CAN_vTransmit(2); +// for(j=0;j<200;j++){for(i=0;i<133;i++)WDT_vRefresh();} + // USER CODE END + + } + +} // End of function main + + +// USER CODE BEGIN (MAIN_General,10) + +// USER CODE END + diff --git a/MAIN.H b/MAIN.H new file mode 100644 index 0000000..df8056c --- /dev/null +++ b/MAIN.H @@ -0,0 +1,625 @@ +//**************************************************************************** +// @Module Project Settings +// @Filename MAIN.H +// @Project CL2.0.dav +//---------------------------------------------------------------------------- +// @Controller Infineon XC886CLM-8FF +// +// @Compiler Keil +// +// @Codegenerator 1.3 +// +// @Description This is the include header file for all other modules. +// +//---------------------------------------------------------------------------- +// @Date 2025/1/18 20:45:27 +// +//**************************************************************************** + +// USER CODE BEGIN (MAIN_Header,1) + +// USER CODE END + + + +#ifndef _MAIN_H_ +#define _MAIN_H_ + +//**************************************************************************** +// @Project Includes +//**************************************************************************** + +// USER CODE BEGIN (MAIN_Header,2) + +// USER CODE END + + +//**************************************************************************** +// @Macros +//**************************************************************************** + +// Please ensure that SCU_PAGE is switched to Page 1 before using these macros +#define MAIN_vUnlockProtecReg() PASSWD = 0x9B +#define MAIN_vlockProtecReg() PASSWD = 0xAB + + +// USER CODE BEGIN (MAIN_Header,3) + +// USER CODE END + + +//**************************************************************************** +// @Defines +//**************************************************************************** + +// USER CODE BEGIN (MAIN_Header,4) + +// USER CODE END + +#define bool bit +#define ulong unsigned long +#define uword unsigned int +#define ubyte unsigned char + + +#define KEIL + + +//**************************************************************************** +// @Prototypes Of Global Functions +//**************************************************************************** + + +// USER CODE BEGIN (MAIN_Header,5) + +// USER CODE END + + +// ------------------------------------------------------------------------- +// Declaration of SFRs +// ------------------------------------------------------------------------- + +// Notes: You can avoid the problem that your compiler does not yet support +// the latest derivatives if you use the SFR definitions generated +// by DAvE instead of those that come along with your compiler (in +// the "Register File"). + +// PORT SFRs are defined in file 'IO.H'. + +// SFR byte definitions +sfr ACC = 0xE0; +sfr ADC_CHCTR0 = 0xCA; +sfr ADC_CHCTR1 = 0xCB; +sfr ADC_CHCTR2 = 0xCC; +sfr ADC_CHCTR3 = 0xCD; +sfr ADC_CHCTR4 = 0xCE; +sfr ADC_CHCTR5 = 0xCF; +sfr ADC_CHCTR6 = 0xD2; +sfr ADC_CHCTR7 = 0xD3; +sfr ADC_CHINCR = 0xCB; +sfr ADC_CHINFR = 0xCA; +sfr ADC_CHINPR = 0xCD; +sfr ADC_CHINSR = 0xCC; +sfr ADC_CRCR1 = 0xCA; +sfr ADC_CRMR1 = 0xCC; +sfr ADC_CRPR1 = 0xCB; +sfr ADC_ETRCR = 0xCF; +sfr ADC_EVINCR = 0xCF; +sfr ADC_EVINFR = 0xCE; +sfr ADC_EVINPR = 0xD3; +sfr ADC_EVINSR = 0xD2; +sfr ADC_GLOBCTR = 0xCA; +sfr ADC_GLOBSTR = 0xCB; +sfr ADC_INPCR0 = 0xCE; +sfr ADC_LCBR = 0xCD; +sfr ADC_PAGE = 0xD1; +sfr ADC_PRAR = 0xCC; +sfr ADC_Q0R0 = 0xCF; +sfr ADC_QBUR0 = 0xD2; +sfr ADC_QINR0 = 0xD2; +sfr ADC_QMR0 = 0xCD; +sfr ADC_QSR0 = 0xCE; +sfr ADC_RCR0 = 0xCA; +sfr ADC_RCR1 = 0xCB; +sfr ADC_RCR2 = 0xCC; +sfr ADC_RCR3 = 0xCD; +sfr ADC_RESR0H = 0xCB; +sfr ADC_RESR0L = 0xCA; +sfr ADC_RESR1H = 0xCD; +sfr ADC_RESR1L = 0xCC; +sfr ADC_RESR2H = 0xCF; +sfr ADC_RESR2L = 0xCE; +sfr ADC_RESR3H = 0xD3; +sfr ADC_RESR3L = 0xD2; +sfr ADC_RESRA0H = 0xCB; +sfr ADC_RESRA0L = 0xCA; +sfr ADC_RESRA1H = 0xCD; +sfr ADC_RESRA1L = 0xCC; +sfr ADC_RESRA2H = 0xCF; +sfr ADC_RESRA2L = 0xCE; +sfr ADC_RESRA3H = 0xD3; +sfr ADC_RESRA3L = 0xD2; +sfr ADC_VFCR = 0xCE; +sfr B = 0xF0; +sfr BCON = 0xBD; +sfr BG = 0xBE; +sfr CAN_ADCON = 0xD8; +sfr CAN_ADH = 0xDA; +sfr CAN_ADL = 0xD9; +sfr CAN_DATA0 = 0xDB; +sfr CAN_DATA1 = 0xDC; +sfr CAN_DATA2 = 0xDD; +sfr CAN_DATA3 = 0xDE; +sfr CCU6_CC60RH = 0xFB; +sfr CCU6_CC60RL = 0xFA; +sfr CCU6_CC60SRH = 0xFB; +sfr CCU6_CC60SRL = 0xFA; +sfr CCU6_CC61RH = 0xFD; +sfr CCU6_CC61RL = 0xFC; +sfr CCU6_CC61SRH = 0xFD; +sfr CCU6_CC61SRL = 0xFC; +sfr CCU6_CC62RH = 0xFF; +sfr CCU6_CC62RL = 0xFE; +sfr CCU6_CC62SRH = 0xFF; +sfr CCU6_CC62SRL = 0xFE; +sfr CCU6_CC63RH = 0x9B; +sfr CCU6_CC63RL = 0x9A; +sfr CCU6_CC63SRH = 0x9B; +sfr CCU6_CC63SRL = 0x9A; +sfr CCU6_CMPMODIFH = 0xA7; +sfr CCU6_CMPMODIFL = 0xA6; +sfr CCU6_CMPSTATH = 0xFF; +sfr CCU6_CMPSTATL = 0xFE; +sfr CCU6_IENH = 0x9D; +sfr CCU6_IENL = 0x9C; +sfr CCU6_INPH = 0x9F; +sfr CCU6_INPL = 0x9E; +sfr CCU6_ISH = 0x9D; +sfr CCU6_ISL = 0x9C; +sfr CCU6_ISRH = 0xA5; +sfr CCU6_ISRL = 0xA4; +sfr CCU6_ISSH = 0xA5; +sfr CCU6_ISSL = 0xA4; +sfr CCU6_MCMCTR = 0xA7; +sfr CCU6_MCMOUTH = 0x9B; +sfr CCU6_MCMOUTL = 0x9A; +sfr CCU6_MCMOUTSH = 0x9F; +sfr CCU6_MCMOUTSL = 0x9E; +sfr CCU6_MODCTRH = 0xFD; +sfr CCU6_MODCTRL = 0xFC; +sfr CCU6_PAGE = 0xA3; +sfr CCU6_PISEL0H = 0x9F; +sfr CCU6_PISEL0L = 0x9E; +sfr CCU6_PISEL2 = 0xA4; +sfr CCU6_PSLR = 0xA6; +sfr CCU6_T12DTCH = 0xA5; +sfr CCU6_T12DTCL = 0xA4; +sfr CCU6_T12H = 0xFB; +sfr CCU6_T12L = 0xFA; +sfr CCU6_T12MSELH = 0x9B; +sfr CCU6_T12MSELL = 0x9A; +sfr CCU6_T12PRH = 0x9D; +sfr CCU6_T12PRL = 0x9C; +sfr CCU6_T13H = 0xFD; +sfr CCU6_T13L = 0xFC; +sfr CCU6_T13PRH = 0x9F; +sfr CCU6_T13PRL = 0x9E; +sfr CCU6_TCTR0H = 0xA7; +sfr CCU6_TCTR0L = 0xA6; +sfr CCU6_TCTR2H = 0xFB; +sfr CCU6_TCTR2L = 0xFA; +sfr CCU6_TCTR4H = 0x9D; +sfr CCU6_TCTR4L = 0x9C; +sfr CCU6_TRPCTRH = 0xFF; +sfr CCU6_TRPCTRL = 0xFE; +sfr CD_CON = 0xA1; +sfr CD_CORDXH = 0x9B; +sfr CD_CORDXL = 0x9A; +sfr CD_CORDYH = 0x9D; +sfr CD_CORDYL = 0x9C; +sfr CD_CORDZH = 0x9F; +sfr CD_CORDZL = 0x9E; +sfr CD_STATC = 0xA0; +sfr CMCON = 0xBA; +sfr COCON = 0xBE; +sfr DPH = 0x83; +sfr DPL = 0x82; +sfr EO = 0xA2; +sfr EXICON0 = 0xB7; +sfr EXICON1 = 0xBA; +sfr FDCON = 0xE9; +sfr FDRES = 0xEB; +sfr FDSTEP = 0xEA; +sfr FEAH = 0xBD; +sfr FEAL = 0xBC; +sfr HWBPDR = 0xF7; +sfr HWBPSR = 0xF6; +sfr ID = 0xB3; +sfr IEN0 = 0xA8; +sfr IEN1 = 0xE8; +sfr IP = 0xB8; +sfr IP1 = 0xF8; +sfr IPH = 0xB9; +sfr IPH1 = 0xF9; +sfr IRCON0 = 0xB4; +sfr IRCON1 = 0xB5; +sfr IRCON2 = 0xB6; +sfr IRCON3 = 0xB4; +sfr IRCON4 = 0xB5; +sfr MDU_MD0 = 0xB2; +sfr MDU_MD1 = 0xB3; +sfr MDU_MD2 = 0xB4; +sfr MDU_MD3 = 0xB5; +sfr MDU_MD4 = 0xB6; +sfr MDU_MD5 = 0xB7; +sfr MDU_MDUCON = 0xB1; +sfr MDU_MDUSTAT = 0xB0; +sfr MDU_MR0 = 0xB2; +sfr MDU_MR1 = 0xB3; +sfr MDU_MR2 = 0xB4; +sfr MDU_MR3 = 0xB5; +sfr MDU_MR4 = 0xB6; +sfr MDU_MR5 = 0xB7; +sfr MISC_CON = 0xE9; +sfr MMBPCR = 0xF3; +sfr MMCR = 0xF1; +sfr MMCR2 = 0xE9; +sfr MMDR = 0xF5; +sfr MMICR = 0xF4; +sfr MMSR = 0xF2; +sfr MMWR1 = 0xEB; +sfr MMWR2 = 0xEC; +sfr MODPISEL = 0xB3; +sfr MODPISEL1 = 0xB7; +sfr MODPISEL2 = 0xBA; +sfr MODSUSP = 0xBD; +sfr NMICON = 0xBB; +sfr NMISR = 0xBC; +sfr OSC_CON = 0xB6; +sfr P0_ALTSEL0 = 0x80; +sfr P0_ALTSEL1 = 0x86; +sfr P0_DATA = 0x80; +sfr P0_DIR = 0x86; +sfr P0_OD = 0x80; +sfr P0_PUDEN = 0x86; +sfr P0_PUDSEL = 0x80; +sfr P1_ALTSEL0 = 0x90; +sfr P1_ALTSEL1 = 0x91; +sfr P1_DATA = 0x90; +sfr P1_DIR = 0x91; +sfr P1_OD = 0x90; +sfr P1_PUDEN = 0x91; +sfr P1_PUDSEL = 0x90; +sfr P2_DATA = 0xA0; +sfr P2_DIR = 0xA1; +sfr P2_PUDEN = 0xA1; +sfr P2_PUDSEL = 0xA0; +sfr P3_ALTSEL0 = 0xB0; +sfr P3_ALTSEL1 = 0xB1; +sfr P3_DATA = 0xB0; +sfr P3_DIR = 0xB1; +sfr P3_OD = 0xB0; +sfr P3_PUDEN = 0xB1; +sfr P3_PUDSEL = 0xB0; +sfr P4_ALTSEL0 = 0xC8; +sfr P4_ALTSEL1 = 0xC9; +sfr P4_DATA = 0xC8; +sfr P4_DIR = 0xC9; +sfr P4_OD = 0xC8; +sfr P4_PUDEN = 0xC9; +sfr P4_PUDSEL = 0xC8; +sfr P5_ALTSEL0 = 0x92; +sfr P5_ALTSEL1 = 0x93; +sfr P5_DATA = 0x92; +sfr P5_DIR = 0x93; +sfr P5_OD = 0x92; +sfr P5_PUDEN = 0x93; +sfr P5_PUDSEL = 0x92; +sfr PASSWD = 0xBB; +sfr PCON = 0x87; +sfr PLL_CON = 0xB7; +sfr PMCON0 = 0xB4; +sfr PMCON1 = 0xB5; +sfr PMCON2 = 0xBB; +sfr PORT_PAGE = 0xB2; +sfr PSW = 0xD0; +sfr SBUF = 0x99; +sfr SCON = 0x98; +sfr SCU_PAGE = 0xBF; +sfr SP = 0x81; +sfr SSC_BRH = 0xAF; +sfr SSC_BRL = 0xAE; +sfr SSC_CONH_O = 0xAB; +sfr SSC_CONH_P = 0xAB; +sfr SSC_CONL_O = 0xAA; +sfr SSC_CONL_P = 0xAA; +sfr SSC_PISEL = 0xA9; +sfr SSC_RBL = 0xAD; +sfr SSC_TBL = 0xAC; +sfr SYSCON0 = 0x8F; +sfr T21_RC2H = 0xC3; +sfr T21_RC2L = 0xC2; +sfr T21_T2CON = 0xC0; +sfr T21_T2H = 0xC5; +sfr T21_T2L = 0xC4; +sfr T21_T2MOD = 0xC1; +sfr T2_RC2H = 0xC3; +sfr T2_RC2L = 0xC2; +sfr T2_T2CON = 0xC0; +sfr T2_T2H = 0xC5; +sfr T2_T2L = 0xC4; +sfr T2_T2MOD = 0xC1; +sfr TCON = 0x88; +sfr TH0 = 0x8C; +sfr TH1 = 0x8D; +sfr TL0 = 0x8A; +sfr TL1 = 0x8B; +sfr TMOD = 0x89; +sfr UART1_BCON = 0xCA; +sfr UART1_BG = 0xCB; +sfr UART1_FDCON = 0xCC; +sfr UART1_FDRES = 0xCE; +sfr UART1_FDSTEP = 0xCD; +sfr UART1_SBUF = 0xC9; +sfr UART1_SCON = 0xC8; +sfr WDTCON = 0xBB; // located in the mapped SFR area +sfr WDTH = 0xBF; // located in the mapped SFR area +sfr WDTL = 0xBE; // located in the mapped SFR area +sfr WDTREL = 0xBC; // located in the mapped SFR area +sfr WDTWINB = 0xBD; // located in the mapped SFR area +sfr XADDRH = 0xB3; + +// SFR bit definitions + +// CD_STATC +sbit CD_BSY = 0xA0; +sbit DMAP = 0xA4; +sbit EOC = 0xA2; +sbit ERROR = 0xA1; +sbit INT_EN = 0xA3; +sbit KEEPX = 0xA5; +sbit KEEPY = 0xA6; +sbit KEEPZ = 0xA7; + +// IEN0 +sbit EA = 0xAF; +sbit ES = 0xAC; +sbit ET0 = 0xA9; +sbit ET1 = 0xAB; +sbit ET2 = 0xAD; +sbit EX0 = 0xA8; +sbit EX1 = 0xAA; + +// IEN1 +sbit EADC = 0xE8; +sbit ECCIP0 = 0xEC; +sbit ECCIP1 = 0xED; +sbit ECCIP2 = 0xEE; +sbit ECCIP3 = 0xEF; +sbit ESSC = 0xE9; +sbit EX2 = 0xEA; +sbit EXM = 0xEB; + +// IP1 +sbit PADC = 0xF8; +sbit PCCIP0 = 0xFC; +sbit PCCIP1 = 0xFD; +sbit PCCIP2 = 0xFE; +sbit PCCIP3 = 0xFF; +sbit PSSC = 0xF9; +sbit PX2 = 0xFA; +sbit PXM = 0xFB; + +// IP +sbit PS = 0xBC; +sbit PT0 = 0xB9; +sbit PT1 = 0xBB; +sbit PT2 = 0xBD; +sbit PX0 = 0xB8; +sbit PX1 = 0xBA; + +// MDU_MDUSTAT +sbit IERR = 0xB1; +sbit IRDY = 0xB0; +sbit MDU_BSY = 0xB2; + +// PSW +sbit AC = 0xD6; +sbit CY = 0xD7; +sbit F0 = 0xD5; +sbit F1 = 0xD1; +sbit OV = 0xD2; +sbit P = 0xD0; +sbit RS0 = 0xD3; +sbit RS1 = 0xD4; + +// SCON +sbit RB8 = 0x9A; +sbit REN = 0x9C; +sbit RI = 0x98; +sbit SM0 = 0x9F; +sbit SM1 = 0x9E; +sbit SM2 = 0x9D; +sbit TB8 = 0x9B; +sbit TI = 0x99; + +// T2_T2CON and T21_T2CON +sbit C_T2 = 0xC1; +sbit CP_RL2 = 0xC0; +sbit EXEN2 = 0xC3; +sbit EXF2 = 0xC6; +sbit TF2 = 0xC7; +sbit TR2 = 0xC2; + +// TCON +sbit IE0 = 0x89; +sbit IE1 = 0x8B; +sbit IT0 = 0x88; +sbit IT1 = 0x8A; +sbit TF0 = 0x8D; +sbit TF1 = 0x8F; +sbit TR0 = 0x8C; +sbit TR1 = 0x8E; + +// UART1_SCON +sbit RB8_1 = 0xCA; +sbit REN_1 = 0xCC; +sbit RI_1 = 0xC8; +sbit SM0_1 = 0xCF; +sbit SM1_1 = 0xCE; +sbit SM2_1 = 0xCD; +sbit TB8_1 = 0xCB; +sbit TI_1 = 0xC9; + + +// Definition of the 16-bit SFR +// sfr16 data type to access two 8-bit SFRs as a single 16-bit SFR. + +sfr16 CAN_ADLH = 0xD9; // 16-bit Address +sfr16 CAN_DATA01 = 0xDB; // 16-bit Address +sfr16 CAN_DATA23 = 0xDD; // 16-bit Address +sfr16 CCU6_CC60RLH = 0xFA; // 16-bit Address +sfr16 CCU6_CC60SRLH = 0xFA; // 16-bit Address +sfr16 CCU6_CC61RLH = 0xFC; // 16-bit Address +sfr16 CCU6_CC61SRLH = 0xFC; // 16-bit Address +sfr16 CCU6_CC62RLH = 0xFE; // 16-bit Address +sfr16 CCU6_CC62SRLH = 0xFE; // 16-bit Address +sfr16 CCU6_CC63RLH = 0x9A; // 16-bit Address +sfr16 CCU6_CC63SRLH = 0x9A; // 16-bit Address +sfr16 CCU6_T12LH = 0xFA; // 16-bit Address +sfr16 CCU6_T12PRLH = 0x9C; // 16-bit Address +sfr16 CCU6_T13LH = 0xFC; // 16-bit Address +sfr16 CCU6_T13PRLH = 0x9E; // 16-bit Address +sfr16 T21_RC2LH = 0xC2; // 16-bit Address +sfr16 T21_T2LH = 0xC4; // 16-bit Address +sfr16 T2_RC2LH = 0xC2; // 16-bit Address +sfr16 T2_T2LH = 0xC4; // 16-bit Address + +// Definition of the PAGE SFR + +// PORT_PAGE +#define _pp0 PORT_PAGE=0 // PORT_PAGE postfix +#define _pp1 PORT_PAGE=1 // PORT_PAGE postfix +#define _pp2 PORT_PAGE=2 // PORT_PAGE postfix +#define _pp3 PORT_PAGE=3 // PORT_PAGE postfix + +// ADC_PAGE +#define _ad0 ADC_PAGE=0 // ADC_PAGE postfix +#define _ad1 ADC_PAGE=1 // ADC_PAGE postfix +#define _ad2 ADC_PAGE=2 // ADC_PAGE postfix +#define _ad3 ADC_PAGE=3 // ADC_PAGE postfix +#define _ad4 ADC_PAGE=4 // ADC_PAGE postfix +#define _ad5 ADC_PAGE=5 // ADC_PAGE postfix +#define _ad6 ADC_PAGE=6 // ADC_PAGE postfix + +// SCU_PAGE +#define _su0 SCU_PAGE=0 // SCU_PAGE postfix +#define _su1 SCU_PAGE=1 // SCU_PAGE postfix +#define _su2 SCU_PAGE=2 // SCU_PAGE postfix +#define _su3 SCU_PAGE=3 // SCU_PAGE postfix + +// CCU6_PAGE +#define _cc0 CCU6_PAGE=0 // CCU6_PAGE postfix +#define _cc1 CCU6_PAGE=1 // CCU6_PAGE postfix +#define _cc2 CCU6_PAGE=2 // CCU6_PAGE postfix +#define _cc3 CCU6_PAGE=3 // CCU6_PAGE postfix + +#define SST0 0x80 // Save SFR page to ST0 +#define RST0 0xC0 // Restore SFR page from ST0 +#define SST1 0x90 // Save SFR page to ST1 +#define RST1 0xD0 // Restore SFR page from ST1 +#define SST2 0xA0 // Save SFR page to ST2 +#define RST2 0xE0 // Restore SFR page from ST2 +#define SST3 0xB0 // Save SFR page to ST3 +#define RST3 0xF0 // Restore SFR page from ST3 +#define noSST 0x00 // Switch page without saving + +#define SFR_PAGE(pg,op) pg+op + +// SYSCON0_RMAP +// The access to the mapped SFR area is enabled. +#define SET_RMAP() SYSCON0 |= 0x01 + +// The access to the standard SFR area is enabled. +#define RESET_RMAP() SYSCON0 &= ~0x01 + + +#define _su SCU_PAGE // SCU_PAGE + +#define STR_PAGE(pg,op) { _push_(op); \ + pg ; } + +#define RST_PAGE(op) _pop_(op) + +//**************************************************************************** +// @Typedefs +//**************************************************************************** + +// USER CODE BEGIN (MAIN_Header,6) + +// USER CODE END + + +//**************************************************************************** +// @Imported Global Variables +//**************************************************************************** + +// USER CODE BEGIN (MAIN_Header,7) + +// USER CODE END + + +//**************************************************************************** +// @Global Variables +//**************************************************************************** + +// USER CODE BEGIN (MAIN_Header,8) + +// USER CODE END + + +//**************************************************************************** +// @Prototypes Of Global Functions +//**************************************************************************** + +// USER CODE BEGIN (MAIN_Header,9) + +// USER CODE END + + +//**************************************************************************** +// @Interrupt Vectors +//**************************************************************************** + +// USER CODE BEGIN (MAIN_Header,10) + +// USER CODE END + + +//**************************************************************************** +// @Project Includes +//**************************************************************************** + + + +#include + +#include "IO.H" +#include "T2.H" +#include "WDT.H" +#include "PS.H" +#include "CAN.H" +#include "SHARED_INT.H" + + + + + + + +// USER CODE BEGIN (MAIN_Header,11) +#include "Config.H" +// USER CODE END + + +#endif // ifndef _MAIN_H_ diff --git a/PS.C b/PS.C new file mode 100644 index 0000000..b581d11 --- /dev/null +++ b/PS.C @@ -0,0 +1,295 @@ +//**************************************************************************** +// @Module Power Saving Modes +// @Filename PS.C +// @Project CL2.0.dav +//---------------------------------------------------------------------------- +// @Controller Infineon XC886CLM-8FF +// +// @Compiler Keil +// +// @Codegenerator 1.3 +// +// @Description: This file contains functions that use the PS module. +// +//---------------------------------------------------------------------------- +// @Date 2025/1/21 08:53:36 +// +//**************************************************************************** + +// USER CODE BEGIN (PS_General,1) + +// USER CODE END + + + +//**************************************************************************** +// @Project Includes +//**************************************************************************** + +#include "MAIN.H" + +// USER CODE BEGIN (PS_General,2) + +// USER CODE END + + +//**************************************************************************** +// @Macros +//**************************************************************************** + +// USER CODE BEGIN (PS_General,3) + +// USER CODE END + + +//**************************************************************************** +// @Defines +//**************************************************************************** + +// USER CODE BEGIN (PS_General,4) + +// USER CODE END + + +//**************************************************************************** +// @Typedefs +//**************************************************************************** + +// USER CODE BEGIN (PS_General,5) + +// USER CODE END + + +//**************************************************************************** +// @Imported Global Variables +//**************************************************************************** + +// USER CODE BEGIN (PS_General,6) + +// USER CODE END + + +//**************************************************************************** +// @Global Variables +//**************************************************************************** + +// USER CODE BEGIN (PS_General,7) + +// USER CODE END + + +//**************************************************************************** +// @External Prototypes +//**************************************************************************** + +// USER CODE BEGIN (PS_General,8) + +// USER CODE END + + +//**************************************************************************** +// @Prototypes Of Local Functions +//**************************************************************************** + +// USER CODE BEGIN (PS_General,9) + +// USER CODE END + + +//**************************************************************************** +// @Function void PS_vInit(void) +// +//---------------------------------------------------------------------------- +// @Description This is the initialization function of the Power Saving +// function library. It is assumed that the SFRs used by this +// library are in their reset state. +// +// This function does not contain any generated C-code, but it +// is possible to insert application specific source lines. +// +//---------------------------------------------------------------------------- +// @Returnvalue None +// +//---------------------------------------------------------------------------- +// @Parameters None +// +//---------------------------------------------------------------------------- +// @Date 2025/1/21 +// +//**************************************************************************** + +// USER CODE BEGIN (PS_Init,1) + +// USER CODE END + +void PS_vInit(void) +{ + // USER CODE BEGIN (PS_Init,2) + + // USER CODE END + + /// Slow Down Clock is 48.00 MHz + /// which is 1/4 of the System Clock fSYS + + /// wake up with reset is selected + + + SFR_PAGE(_su1, noSST); // switch to page1 with out saving + + /// Pin P0.1 (input) + /// - used as wake up pin via RXD_1 from powerdown + + /// Pin P0.5 (input) + /// - used as wake up pin via EXINT0 from powerdown + + PMCON0 = 0x13; // wakeup control register + + // ---------- Modules configuration status for PMCON1 reg.---------- + + /// ADC enabled + /// SSC disabled + /// CCU enabled + /// T2 enabled + /// MDU enabled + /// CAN enabled + /// CDC enabled + PMCON1 = 0x02; // Power mode control register 1 + + SFR_PAGE(_su3, noSST); // switch to page3 with out saving + + // ---------- Modules configuration status for PMCON2 reg.---------- + + /// T21 enabled + /// UART1 enabled + PMCON2 = 0x00; // Power mode control register 2 + + SFR_PAGE(_su0, noSST); // switch to page0 with out saving + + IEN0 |= 0x01; // interrupt enable register 0 + TCON = 0x01; // Set TCON.IT0 + + MODPISEL = 0x01; // load peripheral input select reg + +} // End of function PS_vInit + + +//**************************************************************************** +// @Function void PS_vSetPowerDown(void) +// +//---------------------------------------------------------------------------- +// @Description This function invokes the software power down mode by +// execution of following steps: +// - the external wake-up from software power down remains +// disabled +// - bit PD in SFR PMCON0 will be set +// (this will stop all controller functions) +// +//---------------------------------------------------------------------------- +// @Returnvalue None +// +//---------------------------------------------------------------------------- +// @Parameters None +// +//---------------------------------------------------------------------------- +// @Date 2025/1/21 +// +//**************************************************************************** + +void PS_vSetPowerDown(void) +{ + // enter software power down mode + STR_PAGE(_su1, _su); // push current SCU page and switch to page1 + + /// External wake-up enabled + + /// Wake-up via pin RxD_1 and EXINT0 is selected + PMCON0|=0x03; + + MAIN_vUnlockProtecReg(); // open access to protected register + + PMCON0 |= 0x04; // set PD + + MAIN_vlockProtecReg(); // close access to protected register + + RST_PAGE(_su); // restore the old SCU page + +} // End of function PS_vSetPowerDown + + +//**************************************************************************** +// @Function void PS_vSetSlowDown(void) +// +//---------------------------------------------------------------------------- +// @Description This function activates the slow down mode by setting bit +// SD in SFR PMCON0. +// Note: DAvE's project settings for the on-chip peripheral +// components are only valid for normal clock operation. +// During slow down mode the behavior of the peripherals can +// differ from these settings due to the reduced clock rate! +// +//---------------------------------------------------------------------------- +// @Returnvalue None +// +//---------------------------------------------------------------------------- +// @Parameters None +// +//---------------------------------------------------------------------------- +// @Date 2025/1/21 +// +//**************************************************************************** + +//void PS_vSetSlowDown(void) +//{ + +// STR_PAGE(_su1, _su); // push current SCU page and switch to page1 + + +// MAIN_vUnlockProtecReg(); // open access to protected register + +// PMCON0 |= 0x08; // set SD + +// MAIN_vlockProtecReg(); // close access to protected register + +// RST_PAGE(_su); // restore the old SCU page + +//} // End of function PS_vSetSlowDown + + +//**************************************************************************** +// @Function void PS_vResetSlowDown(void) +// +//---------------------------------------------------------------------------- +// @Description This function terminates the slow down mode by clearing bit +// SD in SFR PMCON0. +// +//---------------------------------------------------------------------------- +// @Returnvalue None +// +//---------------------------------------------------------------------------- +// @Parameters None +// +//---------------------------------------------------------------------------- +// @Date 2025/1/21 +// +//**************************************************************************** + +//void PS_vResetSlowDown(void) +//{ + +// STR_PAGE(_su1, _su); // push current SCU page and switch to page1 + +// MAIN_vUnlockProtecReg(); // open access to protected register + +// PMCON0 &= ~(ubyte)0x08; // clear SD + +// MAIN_vlockProtecReg(); // close access to protected register + +// RST_PAGE(_su); // restore the old SCU page + +//} // End of function PS_vResetSlowDown + + +// USER CODE BEGIN (PS_General,10) + +// USER CODE END +