//****************************************************************************
// @Module Project Settings
// @Filename MAIN.c
// @Project tiaoshi.dav
//----------------------------------------------------------------------------
// @Controller Infineon XC2267M-104F80
//
// @Compiler Keil
//
// @Codegenerator 2.0
//
// @Description This file contains the project initialization function.
//
//----------------------------------------------------------------------------
// @Date 2025/6/14 14:52:15
//
//****************************************************************************
// 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)
// ¿ÂĬµç¶¯ ´Ë´¦¶¨ÒåÑÓʱº¯Êý
void delay(int time)
{
unsigned int i;
for(i=0;i<time;i++)
{
_nop_();_nop_();_nop_();
}
}
// ¿ÂĬµç¶¯ ´Ë´¦¶¨Ò忪¹ØÁ¿×´Ì¬º¯Êý
void Switch_State(void)
{
//ST[0]µÄ״̬£º1£¨ÓÐЧ£©»òÕß0£¨ÎÞЧ£©¡£8λ´ÓµÍµ½¸ß¶ÔÓ¦SP0-SP7.¹Ü½Å¸ßµçƽʱÓÐЧ¡£
if(P7_IN_P2==0) //SP0
ST[0]=ST[0]|0x01;
else
ST[0]=ST[0]&0xfe;
if(P7_IN_P1==0) //SP1
ST[0]=ST[0]|0x02;
else
ST[0]=ST[0]&0xfd;
if(P6_IN_P1==0) //SP2
ST[0]=ST[0]|0x04;
else
ST[0]=ST[0]&0xfb;
if(P6_IN_P2==0) //SP3
ST[0]=ST[0]|0x08;
else
ST[0]=ST[0]&0xf7;
if(P5_IN_P3==0) //SP4
ST[0]=ST[0]|0x10;
else
ST[0]=ST[0]&0xef;
if(P5_IN_P5==0) //SP5
ST[0]=ST[0]|0x20;
else
ST[0]=ST[0]&0xdf;
if(P5_IN_P8==0) //SP6
ST[0]=ST[0]|0x40;
else
ST[0]=ST[0]&0xbf;
if(P5_IN_P9==0) //SP7
ST[0]=ST[0]|0x80;
else
ST[0]=ST[0]&0x7f;
//ST[1]µÄ״̬£º1£¨ÓÐЧ£©»òÕß0£¨ÎÞЧ£©¡£8λ´ÓµÍµ½¸ß¶ÔÓ¦SG0-SG7.¹Ü½ÅµÍµçƽʱÓÐЧ¡£
if(P5_IN_P10==0) //SG0
ST[1]=ST[1]|0x01;
else
ST[1]=ST[1]&0xfe;
if(P5_IN_P11==0) //SG1
ST[1]=ST[1]|0x02;
else
ST[1]=ST[1]&0xfd;
if(P5_IN_P13==0) //SG2
ST[1]=ST[1]|0x04;
else
ST[1]=ST[1]&0xfb;
if(P5_IN_P15==0) //SG3
ST[1]=ST[1]|0x08;
else
ST[1]=ST[1]&0xf7;
if(P2_IN_P12==0) //SG4
ST[1]=ST[1]|0x10;
else
ST[1]=ST[1]&0xef;
if(P2_IN_P11==0) //SG5
ST[1]=ST[1]|0x20;
else
ST[1]=ST[1]&0xdf;
if(P2_IN_P2==0) //SG6
ST[1]=ST[1]|0x40;
else
ST[1]=ST[1]&0xbf;
if(P4_IN_P0==0) //SG7
ST[1]=ST[1]|0x80;
else
ST[1]=ST[1]&0x7f;
//ST[2]µÄ״̬£º1£¨ÓÐЧ£©»òÕß0£¨ÎÞЧ£©¡£7λ´ÓµÍµ½¸ß¶ÔÓ¦SG8-SG14.¹Ü½ÅµÍµçƽʱÓÐЧ¡£
if(P4_IN_P1==0) //SG8
ST[2]=ST[2]|0x01;
else
ST[2]=ST[2]&0xfe;
if(P2_IN_P8==0) //SG9
ST[2]=ST[2]|0x02;
else
ST[2]=ST[2]&0xfd;
if(P2_IN_P13==0) //SG10
ST[2]=ST[2]|0x04;
else
ST[2]=ST[2]&0xfb;
if(P2_IN_P10==0) //SG11
ST[2]=ST[2]|0x08;
else
ST[2]=ST[2]&0xf7;
if(P10_IN_P6==0) //SG12
ST[2]=ST[2]|0x10;
else
ST[2]=ST[2]&0xef;
if(P10_IN_P7==0) //SG13
ST[2]=ST[2]|0x20;
else
ST[2]=ST[2]&0xdf;
if(P1_IN_P7==0) //SG14
ST[2]=ST[2]|0x40;
else
ST[2]=ST[2]&0xbf;
//ST[3]µÄ״̬£º1£¨ÓÐЧ£©»òÕß0£¨ÎÞЧ£©¡£8λ´ÓµÍµ½¸ß¶ÔÓ¦SP8-SP15.¹Ü½Å¸ßµçƽʱÓÐЧ¡£
if(P10_IN_P9==0) //SP8
ST[3]=ST[3]|0x01;
else
ST[3]=ST[3]&0xfe;
if(P10_IN_P12==0) //SP9
ST[3]=ST[3]|0x02;
else
ST[3]=ST[3]&0xfd;
if(P1_IN_P3==0) //SP10
ST[3]=ST[3]|0x04;
else
ST[3]=ST[3]&0xfb;
if(P10_IN_P14==0) //SP11
ST[3]=ST[3]|0x08;
else
ST[3]=ST[3]&0xf7;
if(P1_IN_P4==0) //SP12
ST[3]=ST[3]|0x10;
else
ST[3]=ST[3]&0xef;
if(P10_IN_P15==0) //SP13
ST[3]=ST[3]|0x20;
else
ST[3]=ST[3]&0xdf;
if(P1_IN_P5==0) //SP14
ST[3]=ST[3]|0x40;
else
ST[3]=ST[3]&0xbf;
if(P1_IN_P6==0) //SP15
ST[3]=ST[3]|0x80;
else
ST[3]=ST[3]&0x7f;
}
void Switch_Control(void)
{
//µÍ±ß¿ª¹Ø£º´ÓÉϵ½ÏÂΪ1~10 1:off 0:on OUT¹Ü½ÅÓÐЧÏ൱Óڵء£
P7_OUT_P3 = ST[4]&0x01; //µÍ±ß¿ª¹Ø1
P7_OUT_P4 =(ST[4]>>1)&0x01; //µÍ±ß¿ª¹Ø2
P6_OUT_P0 =(ST[4]>>2)&0x01; //µÍ±ß¿ª¹Ø3
P10_OUT_P10=(ST[4]>>3)&0x01; //µÍ±ß¿ª¹Ø4
P10_OUT_P11=(ST[4]>>4)&0x01; //µÍ±ß¿ª¹Ø5
P1_OUT_P2 =(ST[4]>>5)&0x01; //µÍ±ß¿ª¹Ø6
P10_OUT_P8 =(ST[4]>>6)&0x01; //µÍ±ß¿ª¹Ø7
P10_OUT_P13=(ST[4]>>7)&0x01; //µÍ±ß¿ª¹Ø8
P0_OUT_P7 = ST[5]&0x01; //µÍ±ß¿ª¹Ø9
P1_OUT_P0 =(ST[5]>>1)&0x01; //µÍ±ß¿ª¹Ø10
//¸ß±ß¿ª¹Ø£º´ÓÉϵ½ÏÂΪ1~4 1:on 0:off£¬OUT¹Ü½ÅÓÐЧÏ൱ÓÚ+24V/12V¡£
P10_OUT_P3 = ST[6]&0x01; //¸ß±ß¿ª¹Ø1
P0_OUT_P5 =(ST[6]>>1)&0x01; //¸ß±ß¿ª¹Ø2
P10_OUT_P4 =(ST[6]>>2)&0x01; //¸ß±ß¿ª¹Ø3
P1_OUT_P1 =(ST[6]>>3)&0x01; //¸ß±ß¿ª¹Ø4
}
// ¿ÂĬµç¶¯ ´Ë´¦¶¨ÒåÄ£Êýת»»º¯Êý ´ÓÉϵ½ÏÂÊÇͨµÀAI1~6
void ADC_State(void)
{
ADC1_vStartSeq0ReqChNum(0,0,0,0);
while(!(ADC1_RCR0 & 0x1000)); //AI1£¬5V¶ÔÓ¦0x03FF¡£
ADC_High[1]=((ADC1_RESR0>>2)&0x0300)>>8; //high 2bit
ADC_Low[1] =((ADC1_RESR0>>2)&0x00ff); //low 8bit
delay(500);
ADC1_vStartSeq0ReqChNum(0,0,0,2);
while(!(ADC1_RCR2 & 0x1000)); //AI2£¬5V¶ÔÓ¦0x03FF¡£
ADC_High[2]=((ADC1_RESR2>>2)&0x0300)>>8; //high 2bit
ADC_Low[2] =((ADC1_RESR2>>2)&0x00ff); //low 8bit
delay(500);
ADC1_vStartSeq0ReqChNum(0,0,0,4);
while(!(ADC1_RCR4 & 0x1000)); //AI3£¬5V¶ÔÓ¦0x03FF¡£
ADC_High[3]=((ADC1_RESR4>>2)&0x0300)>>8; //high 2bit
ADC_Low[3] =((ADC1_RESR4>>2)&0x00ff); //low 8bit
delay(500);
ADC1_vStartSeq0ReqChNum(0,0,0,5);
while(!(ADC1_RCR5 & 0x1000)); // AI4£¬24V/5V¶ÔÓ¦0x03FF¡£
ADC_High[4]=((ADC1_RESR5>>2)&0x0300)>>8; //high 2bit
ADC_Low[4] =((ADC1_RESR5>>2)&0x00ff); //low 8bit
delay(500);
ADC1_vStartSeq0ReqChNum(0,0,0,6);
while(!(ADC1_RCR6 & 0x1000)); // AI5£¬24V/5V¶ÔÓ¦0x03FF¡£
ADC_High[5]=((ADC1_RESR6>>2)&0x0300)>>8; //high 2bit
ADC_Low[5] =((ADC1_RESR6>>2)&0x00ff); //low 8bit
delay(500);
ADC0_vStartSeq0ReqChNum(0,0,0,0);
while(!(ADC0_RCR0 & 0x1000)); // AI6£¬24V/5V¶ÔÓ¦0x03FF¡£
ADC_High[6]=((ADC0_RESR0>>2)&0x0300)>>8; //high 2bit
ADC_Low[6] =((ADC0_RESR0>>2)&0x00ff); //low 8bit
}
// ¿ÂĬµç¶¯ ´Ë´¦¶¨ÒåµÍ±ß¿ª¹ØSPI¿ØÖÆÄ£Ê½ ±¾º¯ÊýÐèÔÚwhileÖÐÑ»·
void SPI_Control(void)
{
P0_OUT_P3=1; //
delay(3); //
P0_OUT_P3=0; //
delay(3); //
//
U1C0_SSC_vSendData(0x24ff); //
while(!U1C0_SSC_ubTxDataReady()); //
//
P0_OUT_P3=1; //
delay(3); //
P0_OUT_P3=0; //
delay(3); //
U1C0_SSC_vSendData(0x27ff); //
while(!U1C0_SSC_ubTxDataReady()); //
//
P0_OUT_P3=1; //
delay(3); //
P0_OUT_P3=0; //
delay(3); //
U1C0_SSC_vSendData(0x2ecf); //
while(!U1C0_SSC_ubTxDataReady()); //
//
delay(3); //
P0_OUT_P3=1; //
}
// USER CODE END
//****************************************************************************
// @Function void MAIN_vInit(void)
//
//----------------------------------------------------------------------------
// @Description This function initializes the microcontroller.
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2025/6/14
//
//****************************************************************************
// USER CODE BEGIN (Init,1)
// USER CODE END
void MAIN_vInit(void)
{
SCS_ErrorType Error;
// USER CODE BEGIN (Init,2)
// USER CODE END
// globally disable interrupts
PSW_IEN = 0;
/// -----------------------------------------------------------------------
/// Configuration of the System Clock:
/// -----------------------------------------------------------------------
/// - VCO clock used, input clock is connected
/// - input frequency is 8.00 MHz
/// - configured system frequency is 80.00 MHz
/// - system clock is 80.00MHz
MAIN_vUnlockProtecReg(); // unlock write security
// initialize CCU6 timer T13 for SCS driver
SCS_InitTimer();
// perform transition from base mode to normal operating mode
Error = SCS_GoFromBaseToNormalMode();
// restore CCU6 timer used by SCS driver
SCS_RestoreTimer();
// -----------------------------------------------------------------------
// Initialization of the Peripherals:
// -----------------------------------------------------------------------
// initializes the Parallel Ports
IO_vInit();
// initializes the General Purpose Timer Unit (GPT1)
GPT1_vInit();
// initializes the General Purpose Timer Unit (GPT2)
GPT2_vInit();
// initializes the Capture / Compare Unit 2 (CAPCOM2)
CC2_vInit();
// initializes the Analog / Digital Converter (ADC0)
ADC0_vInit();
// initializes the Analog / Digital Converter (ADC1)
ADC1_vInit();
// initializes the MultiCAN Module (CAN)
CAN_vInit();
// initializes the USIC0 Module
USIC0_vInit();
// initializes the USIC1 Module
USIC1_vInit();
// -----------------------------------------------------------------------
// Initialization of the Bank Select registers:
// -----------------------------------------------------------------------
// USER CODE BEGIN (Init,3)
delay(1000);
// USER CODE END
MAIN_vLockProtecReg(); // lock write security
// globally enable interrupts
PSW_IEN = 1;
} // End of function MAIN_vInit
//****************************************************************************
// @Function void MAIN_vUnlockProtecReg(void)
//
//----------------------------------------------------------------------------
// @Description This function makes it possible to write one protected
// register.
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2025/6/14
//
//****************************************************************************
// USER CODE BEGIN (UnlockProtecReg,1)
// USER CODE END
void MAIN_vUnlockProtecReg(void)
{
SCU_SLC = 0xAAAA; // command 0
SCU_SLC = 0x5554; // command 1
SCU_SLC = 0x96FF; // command 2
SCU_SLC = 0x0000; // command 3
} // End of function MAIN_vUnlockProtecReg
//****************************************************************************
// @Function void MAIN_vLockProtecReg(void)
//
//----------------------------------------------------------------------------
// @Description This function makes it possible to lock one protected
// register.
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2025/6/14
//
//****************************************************************************
// USER CODE BEGIN (LockProtecReg,1)
// USER CODE END
void MAIN_vLockProtecReg(void)
{
SCU_SLC = 0xAAAA; // command 0
SCU_SLC = 0x5554; // command 1
SCU_SLC = 0x96FF; // command 2
SCU_SLC = 0x1800; // command 3;
SCU_SLC = 0x8EFF; // command 4
} // End of function MAIN_vLockProtecReg
//****************************************************************************
// @Function void main(void)
//
//----------------------------------------------------------------------------
// @Description This is the main function.
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2025/6/14
//
//****************************************************************************
// USER CODE BEGIN (Main,1)
adcValue1 = 0x0000;
adcValue2 = 0x0000;
float voltage1;
float voltage2;
float pedalOpening0;
float pedalOpening1;
float ADC_to_Voltage(adcValue)
{
return (adcValue * 5.0) / 1024.0;
}
float Calculate_Pedal_Opening(float voltage)
{
return (voltage / 5.0) * 100.0;
}
// ¿ÂĬµç¶¯ ´Ë´¦½øÐбäÁ¿¶¨Òå ÔÚMAIN.HÖнøÐбäÁ¿È«¾ÖÉùÃ÷
ubyte ST[8]; // ¿ª¹ØÁ¿²É¼¯¼°¿ØÖÆ
ubyte Data3[8], Data4[8], Data5[8],CAN_Mark[8]; // CAN½ÓÊÕÊý¾Ý ÖжϱêÖ¾ ²âÊÔ·¢ËÍÊý¾Ý
ubyte CAN_Test[8]={0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF};
ubyte CAN_Break_Timer=0,CAN_Break_Flag=0; // CAN¶ÏÏßʱ¼ä ¶ÏÏß±êÖ¾
ubyte CC2_Mark[8],Period_Low[8],Period_High[8]; // »ô¶ûÂÖËÙ ²¶×½ÖÐ¶Ï ÖÜÆÚ¸ßµÍ×Ö½Ú
uword Period[8]; // ÖÜÆÚ
ubyte ADC_High[8]={0},ADC_Low[8]={0}; // Ä£ÄâÁ¿×ª»»¸ßµÍ×Ö½Ú
ubyte T_Mark[8]={0},T_Mark_i[8]={0}; // ¶¨Ê±Æ÷±êÖ¾
// USER CODE END
void main(void)
{
// USER CODE BEGIN (Main,2)
adcValue1 = 0x0000;
adcValue2 = 0x0000;
//¿ÂĬµç¶¯ ³õʼ»¯±äÁ¿
ST[4] = 0xFF;
ST[5] = 0xFF;
ST[6] = 0x00;
// USER CODE END
MAIN_vInit();
// USER CODE BEGIN (Main,3)
// USER CODE END
while(1)
{
// USER CODE BEGIN (Main,4)
SPI_Control(); // SPI¿ØÖÆ whileÖÐÑ»·
// ³ÌÐò´ÓÕâÀ↑ʼִÐÐ
ADC_State(); // Ä£ÄâÁ¿×´Ì¬²É¼¯º¯Êý
Switch_State(); // ¿ª¹ØÁ¿×´Ì¬²É¼¯º¯Êý
Switch_Control(); // ¿ª¹ØÁ¿¿ØÖƺ¯Êý
adcValue1 = (ADC_High[1] << 8) | ADC_Low[1]; //tong dao 1 de zhi
voltage1 = ADC_to_Voltage(adcValue1);
pedalOpening0 = Calculate_Pedal_Opening(voltage1);
adcValue2 = (ADC_High[2] << 8) | ADC_Low[2]; //tong dao 2 de zhi
voltage2 = ADC_to_Voltage(adcValue2);
pedalOpening1 = Calculate_Pedal_Opening(voltage2);
// USER CODE END
}
} // End of function main
// USER CODE BEGIN (MAIN_General,10)
// USER CODE END
//****************************************************************************
// @Module Parallel Ports
// @Filename IO.c
// @Project tiaoshi.dav
//----------------------------------------------------------------------------
// @Controller Infineon XC2267M-104F80
//
// @Compiler Keil
//
// @Codegenerator 2.0
//
// @Description This file contains all function prototypes and macros for
// the IO module.
//
//----------------------------------------------------------------------------
// @Date 2025/6/14 14:52:16
//
//****************************************************************************
// 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
//****************************************************************************
#define IO_NO_PULL 0x00
#define IO_PULL_DOWN 0x01
#define IO_PULL_UP 0x02
#define IO_LOOP_BACK 0x03
#define IO_INVERTED_NO_PULL 0x04
#define IO_INVERTED_PULL_DOWN 0x05
#define IO_INVERTED_PULL_UP 0x06
#define IO_INVERTED_LOOP_BACK 0x07
#define IO_PUSH_PULL 0x08
#define IO_OPEN_DRAIN 0x0C
//----------------------------------------------------------------------------
// Defines for the parameter PinName
//----------------------------------------------------------------------------
#define IO_P0_0 P0_OUT_P0
#define IO_P0_1 P0_OUT_P1
#define IO_P0_2 P0_OUT_P2
#define IO_P0_3 P0_OUT_P3
#define IO_P0_4 P0_OUT_P4
#define IO_P0_5 P0_OUT_P5
#define IO_P0_6 P0_OUT_P6
#define IO_P0_7 P0_OUT_P7
#define IO_P1_0 P1_OUT_P0
#define IO_P1_1 P1_OUT_P1
#define IO_P1_2 P1_OUT_P2
#define IO_P1_3 P1_OUT_P3
#define IO_P1_4 P1_OUT_P4
#define IO_P1_5 P1_OUT_P5
#define IO_P1_6 P1_OUT_P6
#define IO_P1_7 P1_OUT_P7
#define IO_P2_0 P2_OUT_P0
#define IO_P2_1 P2_OUT_P1
#define IO_P2_2 P2_OUT_P2
#define IO_P2_3 P2_OUT_P3
#define IO_P2_4 P2_OUT_P4
#define IO_P2_5 P2_OUT_P5
#define IO_P2_6 P2_OUT_P6
#define IO_P2_7 P2_OUT_P7
#define IO_P2_8 P2_OUT_P8
#define IO_P2_9 P2_OUT_P9
#define IO_P2_10 P2_OUT_P10
#define IO_P2_11 P2_OUT_P11
#define IO_P2_12 P2_OUT_P12
#define IO_P2_13 P2_OUT_P13
#define IO_P4_0 P4_OUT_P0
#define IO_P4_1 P4_OUT_P1
#define IO_P4_2 P4_OUT_P2
#define IO_P4_3 P4_OUT_P3
#define IO_P6_0 P6_OUT_P0
#define IO_P6_1 P6_OUT_P1
#define IO_P6_2 P6_OUT_P2
#define IO_P7_0 P7_OUT_P0
#define IO_P7_1 P7_OUT_P1
#define IO_P7_2 P7_OUT_P2
#define IO_P7_3 P7_OUT_P3
#define IO_P7_4 P7_OUT_P4
#define IO_P10_0 P10_OUT_P0
#define IO_P10_1 P10_OUT_P1
#define IO_P10_2 P10_OUT_P2
#define IO_P10_3 P10_OUT_P3
#define IO_P10_4 P10_OUT_P4
#define IO_P10_5 P10_OUT_P5
#define IO_P10_6 P10_OUT_P6
#define IO_P10_7 P10_OUT_P7
#define IO_P10_8 P10_OUT_P8
#define IO_P10_9 P10_OUT_P9
#define IO_P10_10 P10_OUT_P10
#define IO_P10_11 P10_OUT_P11
#define IO_P10_12 P10_OUT_P12
#define IO_P10_13 P10_OUT_P13
#define IO_P10_14 P10_OUT_P14
#define IO_P10_15 P10_OUT_P15
//----------------------------------------------------------------------------
// Defines used by DAvE
//----------------------------------------------------------------------------
#define INIO_P0_0 P0_IN_P0
#define INIO_P0_1 P0_IN_P1
#define INIO_P0_2 P0_IN_P2
#define INIO_P0_3 P0_IN_P3
#define INIO_P0_4 P0_IN_P4
#define INIO_P0_5 P0_IN_P5
#define INIO_P0_6 P0_IN_P6
#define INIO_P0_7 P0_IN_P7
#define SETIO_P0_0 P0_OMRL = 0x0001
#define SETIO_P0_1 P0_OMRL = 0x0002
#define SETIO_P0_2 P0_OMRL = 0x0004
#define SETIO_P0_3 P0_OMRL = 0x0008
#define SETIO_P0_4 P0_OMRL = 0x0010
#define SETIO_P0_5 P0_OMRL = 0x0020
#define SETIO_P0_6 P0_OMRL = 0x0040
#define SETIO_P0_7 P0_OMRL = 0x0080
#define CLEARIO_P0_0 P0_OMRL = 0x0100
#define CLEARIO_P0_1 P0_OMRL = 0x0200
#define CLEARIO_P0_2 P0_OMRL = 0x0400
#define CLEARIO_P0_3 P0_OMRL = 0x0800
#define CLEARIO_P0_4 P0_OMRL = 0x1000
#define CLEARIO_P0_5 P0_OMRL = 0x2000
#define CLEARIO_P0_6 P0_OMRL = 0x4000
#define CLEARIO_P0_7 P0_OMRL = 0x8000
#define TOGGLEIO_P0_0 P0_OMRL = 0x0101
#define TOGGLEIO_P0_1 P0_OMRL = 0x0202
#define TOGGLEIO_P0_2 P0_OMRL = 0x0404
#define TOGGLEIO_P0_3 P0_OMRL = 0x0808
#define TOGGLEIO_P0_4 P0_OMRL = 0x1010
#define TOGGLEIO_P0_5 P0_OMRL = 0x2020
#define TOGGLEIO_P0_6 P0_OMRL = 0x4040
#define TOGGLEIO_P0_7 P0_OMRL = 0x8080
#define CONTROLIO_P0_0(Mode) P0_IOCR00 = (P0_IOCR00 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P0_1(Mode) P0_IOCR01 = (P0_IOCR01 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P0_2(Mode) P0_IOCR02 = (P0_IOCR02 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P0_3(Mode) P0_IOCR03 = (P0_IOCR03 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P0_4(Mode) P0_IOCR04 = (P0_IOCR04 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P0_5(Mode) P0_IOCR05 = (P0_IOCR05 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P0_6(Mode) P0_IOCR06 = (P0_IOCR06 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P0_7(Mode) P0_IOCR07 = (P0_IOCR07 & ~0x00F0) | (Mode << 4)
#define INIO_P1_0 P1_IN_P0
#define INIO_P1_1 P1_IN_P1
#define INIO_P1_2 P1_IN_P2
#define INIO_P1_3 P1_IN_P3
#define INIO_P1_4 P1_IN_P4
#define INIO_P1_5 P1_IN_P5
#define INIO_P1_6 P1_IN_P6
#define INIO_P1_7 P1_IN_P7
#define SETIO_P1_0 P1_OMRL = 0x0001
#define SETIO_P1_1 P1_OMRL = 0x0002
#define SETIO_P1_2 P1_OMRL = 0x0004
#define SETIO_P1_3 P1_OMRL = 0x0008
#define SETIO_P1_4 P1_OMRL = 0x0010
#define SETIO_P1_5 P1_OMRL = 0x0020
#define SETIO_P1_6 P1_OMRL = 0x0040
#define SETIO_P1_7 P1_OMRL = 0x0080
#define CLEARIO_P1_0 P1_OMRL = 0x0100
#define CLEARIO_P1_1 P1_OMRL = 0x0200
#define CLEARIO_P1_2 P1_OMRL = 0x0400
#define CLEARIO_P1_3 P1_OMRL = 0x0800
#define CLEARIO_P1_4 P1_OMRL = 0x1000
#define CLEARIO_P1_5 P1_OMRL = 0x2000
#define CLEARIO_P1_6 P1_OMRL = 0x4000
#define CLEARIO_P1_7 P1_OMRL = 0x8000
#define TOGGLEIO_P1_0 P1_OMRL = 0x0101
#define TOGGLEIO_P1_1 P1_OMRL = 0x0202
#define TOGGLEIO_P1_2 P1_OMRL = 0x0404
#define TOGGLEIO_P1_3 P1_OMRL = 0x0808
#define TOGGLEIO_P1_4 P1_OMRL = 0x1010
#define TOGGLEIO_P1_5 P1_OMRL = 0x2020
#define TOGGLEIO_P1_6 P1_OMRL = 0x4040
#define TOGGLEIO_P1_7 P1_OMRL = 0x8080
#define CONTROLIO_P1_0(Mode) P1_IOCR00 = (P1_IOCR00 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P1_1(Mode) P1_IOCR01 = (P1_IOCR01 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P1_2(Mode) P1_IOCR02 = (P1_IOCR02 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P1_3(Mode) P1_IOCR03 = (P1_IOCR03 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P1_4(Mode) P1_IOCR04 = (P1_IOCR04 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P1_5(Mode) P1_IOCR05 = (P1_IOCR05 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P1_6(Mode) P1_IOCR06 = (P1_IOCR06 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P1_7(Mode) P1_IOCR07 = (P1_IOCR07 & ~0x00F0) | (Mode << 4)
#define INIO_P2_0 P2_IN_P0
#define INIO_P2_1 P2_IN_P1
#define INIO_P2_2 P2_IN_P2
#define INIO_P2_3 P2_IN_P3
#define INIO_P2_4 P2_IN_P4
#define INIO_P2_5 P2_IN_P5
#define INIO_P2_6 P2_IN_P6
#define INIO_P2_7 P2_IN_P7
#define INIO_P2_8 P2_IN_P8
#define INIO_P2_9 P2_IN_P9
#define INIO_P2_10 P2_IN_P10
#define INIO_P2_11 P2_IN_P11
#define INIO_P2_12 P2_IN_P12
#define INIO_P2_13 P2_IN_P13
#define SETIO_P2_0 P2_OMRL = 0x0001
#define SETIO_P2_1 P2_OMRL = 0x0002
#define SETIO_P2_2 P2_OMRL = 0x0004
#define SETIO_P2_3 P2_OMRL = 0x0008
#define SETIO_P2_4 P2_OMRL = 0x0010
#define SETIO_P2_5 P2_OMRL = 0x0020
#define SETIO_P2_6 P2_OMRL = 0x0040
#define SETIO_P2_7 P2_OMRL = 0x0080
#define SETIO_P2_8 P2_OMRH = 0x0001
#define SETIO_P2_9 P2_OMRH = 0x0002
#define SETIO_P2_10 P2_OMRH = 0x0004
#define SETIO_P2_11 P2_OMRH = 0x0008
#define SETIO_P2_12 P2_OMRH = 0x0010
#define SETIO_P2_13 P2_OMRH = 0x0020
#define CLEARIO_P2_0 P2_OMRL = 0x0100
#define CLEARIO_P2_1 P2_OMRL = 0x0200
#define CLEARIO_P2_2 P2_OMRL = 0x0400
#define CLEARIO_P2_3 P2_OMRL = 0x0800
#define CLEARIO_P2_4 P2_OMRL = 0x1000
#define CLEARIO_P2_5 P2_OMRL = 0x2000
#define CLEARIO_P2_6 P2_OMRL = 0x4000
#define CLEARIO_P2_7 P2_OMRL = 0x8000
#define CLEARIO_P2_8 P2_OMRH = 0x0100
#define CLEARIO_P2_9 P2_OMRH = 0x0200
#define CLEARIO_P2_10 P2_OMRH = 0x0400
#define CLEARIO_P2_11 P2_OMRH = 0x0800
#define CLEARIO_P2_12 P2_OMRH = 0x1000
#define CLEARIO_P2_13 P2_OMRH = 0x2000
#define TOGGLEIO_P2_0 P2_OMRL = 0x0101
#define TOGGLEIO_P2_1 P2_OMRL = 0x0202
#define TOGGLEIO_P2_2 P2_OMRL = 0x0404
#define TOGGLEIO_P2_3 P2_OMRL = 0x0808
#define TOGGLEIO_P2_4 P2_OMRL = 0x1010
#define TOGGLEIO_P2_5 P2_OMRL = 0x2020
#define TOGGLEIO_P2_6 P2_OMRL = 0x4040
#define TOGGLEIO_P2_7 P2_OMRL = 0x8080
#define TOGGLEIO_P2_8 P2_OMRH = 0x0101
#define TOGGLEIO_P2_9 P2_OMRH = 0x0202
#define TOGGLEIO_P2_10 P2_OMRH = 0x0404
#define TOGGLEIO_P2_11 P2_OMRH = 0x0808
#define TOGGLEIO_P2_12 P2_OMRH = 0x1010
#define TOGGLEIO_P2_13 P2_OMRH = 0x2020
#define CONTROLIO_P2_0(Mode) P2_IOCR00 = (P2_IOCR00 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P2_1(Mode) P2_IOCR01 = (P2_IOCR01 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P2_2(Mode) P2_IOCR02 = (P2_IOCR02 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P2_3(Mode) P2_IOCR03 = (P2_IOCR03 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P2_4(Mode) P2_IOCR04 = (P2_IOCR04 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P2_5(Mode) P2_IOCR05 = (P2_IOCR05 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P2_6(Mode) P2_IOCR06 = (P2_IOCR06 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P2_7(Mode) P2_IOCR07 = (P2_IOCR07 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P2_8(Mode) P2_IOCR08 = (P2_IOCR08 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P2_9(Mode) P2_IOCR09 = (P2_IOCR09 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P2_10(Mode) P2_IOCR10 = (P2_IOCR10 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P2_11(Mode) P2_IOCR11 = (P2_IOCR11 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P2_12(Mode) P2_IOCR12 = (P2_IOCR12 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P2_13(Mode) P2_IOCR13 = (P2_IOCR13 & ~0x00F0) | (Mode << 4)
#define INIO_P4_0 P4_IN_P0
#define INIO_P4_1 P4_IN_P1
#define INIO_P4_2 P4_IN_P2
#define INIO_P4_3 P4_IN_P3
#define SETIO_P4_0 P4_OMRL = 0x0001
#define SETIO_P4_1 P4_OMRL = 0x0002
#define SETIO_P4_2 P4_OMRL = 0x0004
#define SETIO_P4_3 P4_OMRL = 0x0008
#define CLEARIO_P4_0 P4_OMRL = 0x0100
#define CLEARIO_P4_1 P4_OMRL = 0x0200
#define CLEARIO_P4_2 P4_OMRL = 0x0400
#define CLEARIO_P4_3 P4_OMRL = 0x0800
#define TOGGLEIO_P4_0 P4_OMRL = 0x0101
#define TOGGLEIO_P4_1 P4_OMRL = 0x0202
#define TOGGLEIO_P4_2 P4_OMRL = 0x0404
#define TOGGLEIO_P4_3 P4_OMRL = 0x0808
#define CONTROLIO_P4_0(Mode) P4_IOCR00 = (P4_IOCR00 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P4_1(Mode) P4_IOCR01 = (P4_IOCR01 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P4_2(Mode) P4_IOCR02 = (P4_IOCR02 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P4_3(Mode) P4_IOCR03 = (P4_IOCR03 & ~0x00F0) | (Mode << 4)
#define INIO_P5_0 P5_IN_P0
#define INIO_P5_2 P5_IN_P2
#define INIO_P5_3 P5_IN_P3
#define INIO_P5_4 P5_IN_P4
#define INIO_P5_5 P5_IN_P5
#define INIO_P5_8 P5_IN_P8
#define INIO_P5_9 P5_IN_P9
#define INIO_P5_10 P5_IN_P10
#define INIO_P5_11 P5_IN_P11
#define INIO_P5_13 P5_IN_P13
#define INIO_P5_15 P5_IN_P15
#define INIO_P6_0 P6_IN_P0
#define INIO_P6_1 P6_IN_P1
#define INIO_P6_2 P6_IN_P2
#define SETIO_P6_0 P6_OMRL = 0x0001
#define SETIO_P6_1 P6_OMRL = 0x0002
#define SETIO_P6_2 P6_OMRL = 0x0004
#define CLEARIO_P6_0 P6_OMRL = 0x0100
#define CLEARIO_P6_1 P6_OMRL = 0x0200
#define CLEARIO_P6_2 P6_OMRL = 0x0400
#define TOGGLEIO_P6_0 P6_OMRL = 0x0101
#define TOGGLEIO_P6_1 P6_OMRL = 0x0202
#define TOGGLEIO_P6_2 P6_OMRL = 0x0404
#define CONTROLIO_P6_0(Mode) P6_IOCR00 = (P6_IOCR00 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P6_1(Mode) P6_IOCR01 = (P6_IOCR01 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P6_2(Mode) P6_IOCR02 = (P6_IOCR02 & ~0x00F0) | (Mode << 4)
#define INIO_P7_0 P7_IN_P0
#define INIO_P7_1 P7_IN_P1
#define INIO_P7_2 P7_IN_P2
#define INIO_P7_3 P7_IN_P3
#define INIO_P7_4 P7_IN_P4
#define SETIO_P7_0 P7_OMRL = 0x0001
#define SETIO_P7_1 P7_OMRL = 0x0002
#define SETIO_P7_2 P7_OMRL = 0x0004
#define SETIO_P7_3 P7_OMRL = 0x0008
#define SETIO_P7_4 P7_OMRL = 0x0010
#define CLEARIO_P7_0 P7_OMRL = 0x0100
#define CLEARIO_P7_1 P7_OMRL = 0x0200
#define CLEARIO_P7_2 P7_OMRL = 0x0400
#define CLEARIO_P7_3 P7_OMRL = 0x0800
#define CLEARIO_P7_4 P7_OMRL = 0x1000
#define TOGGLEIO_P7_0 P7_OMRL = 0x0101
#define TOGGLEIO_P7_1 P7_OMRL = 0x0202
#define TOGGLEIO_P7_2 P7_OMRL = 0x0404
#define TOGGLEIO_P7_3 P7_OMRL = 0x0808
#define TOGGLEIO_P7_4 P7_OMRL = 0x1010
#define CONTROLIO_P7_0(Mode) P7_IOCR00 = (P7_IOCR00 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P7_1(Mode) P7_IOCR01 = (P7_IOCR01 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P7_2(Mode) P7_IOCR02 = (P7_IOCR02 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P7_3(Mode) P7_IOCR03 = (P7_IOCR03 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P7_4(Mode) P7_IOCR04 = (P7_IOCR04 & ~0x00F0) | (Mode << 4)
#define INIO_P10_0 P10_IN_P0
#define INIO_P10_1 P10_IN_P1
#define INIO_P10_2 P10_IN_P2
#define INIO_P10_3 P10_IN_P3
#define INIO_P10_4 P10_IN_P4
#define INIO_P10_5 P10_IN_P5
#define INIO_P10_6 P10_IN_P6
#define INIO_P10_7 P10_IN_P7
#define INIO_P10_8 P10_IN_P8
#define INIO_P10_9 P10_IN_P9
#define INIO_P10_10 P10_IN_P10
#define INIO_P10_11 P10_IN_P11
#define INIO_P10_12 P10_IN_P12
#define INIO_P10_13 P10_IN_P13
#define INIO_P10_14 P10_IN_P14
#define INIO_P10_15 P10_IN_P15
#define SETIO_P10_0 P10_OMRL = 0x0001
#define SETIO_P10_1 P10_OMRL = 0x0002
#define SETIO_P10_2 P10_OMRL = 0x0004
#define SETIO_P10_3 P10_OMRL = 0x0008
#define SETIO_P10_4 P10_OMRL = 0x0010
#define SETIO_P10_5 P10_OMRL = 0x0020
#define SETIO_P10_6 P10_OMRL = 0x0040
#define SETIO_P10_7 P10_OMRL = 0x0080
#define SETIO_P10_8 P10_OMRH = 0x0001
#define SETIO_P10_9 P10_OMRH = 0x0002
#define SETIO_P10_10 P10_OMRH = 0x0004
#define SETIO_P10_11 P10_OMRH = 0x0008
#define SETIO_P10_12 P10_OMRH = 0x0010
#define SETIO_P10_13 P10_OMRH = 0x0020
#define SETIO_P10_14 P10_OMRH = 0x0040
#define SETIO_P10_15 P10_OMRH = 0x0080
#define CLEARIO_P10_0 P10_OMRL = 0x0100
#define CLEARIO_P10_1 P10_OMRL = 0x0200
#define CLEARIO_P10_2 P10_OMRL = 0x0400
#define CLEARIO_P10_3 P10_OMRL = 0x0800
#define CLEARIO_P10_4 P10_OMRL = 0x1000
#define CLEARIO_P10_5 P10_OMRL = 0x2000
#define CLEARIO_P10_6 P10_OMRL = 0x4000
#define CLEARIO_P10_7 P10_OMRL = 0x8000
#define CLEARIO_P10_8 P10_OMRH = 0x0100
#define CLEARIO_P10_9 P10_OMRH = 0x0200
#define CLEARIO_P10_10 P10_OMRH = 0x0400
#define CLEARIO_P10_11 P10_OMRH = 0x0800
#define CLEARIO_P10_12 P10_OMRH = 0x1000
#define CLEARIO_P10_13 P10_OMRH = 0x2000
#define CLEARIO_P10_14 P10_OMRH = 0x4000
#define CLEARIO_P10_15 P10_OMRH = 0x8000
#define TOGGLEIO_P10_0 P10_OMRL = 0x0101
#define TOGGLEIO_P10_1 P10_OMRL = 0x0202
#define TOGGLEIO_P10_2 P10_OMRL = 0x0404
#define TOGGLEIO_P10_3 P10_OMRL = 0x0808
#define TOGGLEIO_P10_4 P10_OMRL = 0x1010
#define TOGGLEIO_P10_5 P10_OMRL = 0x2020
#define TOGGLEIO_P10_6 P10_OMRL = 0x4040
#define TOGGLEIO_P10_7 P10_OMRL = 0x8080
#define TOGGLEIO_P10_8 P10_OMRH = 0x0101
#define TOGGLEIO_P10_9 P10_OMRH = 0x0202
#define TOGGLEIO_P10_10 P10_OMRH = 0x0404
#define TOGGLEIO_P10_11 P10_OMRH = 0x0808
#define TOGGLEIO_P10_12 P10_OMRH = 0x1010
#define TOGGLEIO_P10_13 P10_OMRH = 0x2020
#define TOGGLEIO_P10_14 P10_OMRH = 0x4040
#define TOGGLEIO_P10_15 P10_OMRH = 0x8080
#define CONTROLIO_P10_0(Mode) P10_IOCR00 = (P10_IOCR00 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P10_1(Mode) P10_IOCR01 = (P10_IOCR01 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P10_2(Mode) P10_IOCR02 = (P10_IOCR02 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P10_3(Mode) P10_IOCR03 = (P10_IOCR03 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P10_4(Mode) P10_IOCR04 = (P10_IOCR04 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P10_5(Mode) P10_IOCR05 = (P10_IOCR05 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P10_6(Mode) P10_IOCR06 = (P10_IOCR06 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P10_7(Mode) P10_IOCR07 = (P10_IOCR07 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P10_8(Mode) P10_IOCR08 = (P10_IOCR08 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P10_9(Mode) P10_IOCR09 = (P10_IOCR09 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P10_10(Mode) P10_IOCR10 = (P10_IOCR10 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P10_11(Mode) P10_IOCR11 = (P10_IOCR11 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P10_12(Mode) P10_IOCR12 = (P10_IOCR12 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P10_13(Mode) P10_IOCR13 = (P10_IOCR13 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P10_14(Mode) P10_IOCR14 = (P10_IOCR14 & ~0x00F0) | (Mode << 4)
#define CONTROLIO_P10_15(Mode) P10_IOCR15 = (P10_IOCR15 & ~0x00F0) | (Mode << 4)
#define INIO_P15_0 P15_IN_P0
#define INIO_P15_2 P15_IN_P2
#define INIO_P15_4 P15_IN_P4
#define INIO_P15_5 P15_IN_P5
#define INIO_P15_6 P15_IN_P6
// USER CODE BEGIN (IO_Header,4)
// USER CODE END
//****************************************************************************
// @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
//****************************************************************************
// @Interrupt Vectors
//****************************************************************************
// USER CODE BEGIN (IO_Header,9)
// USER CODE END
#endif // ifndef _IO_H_
这是一部分代码,通过我的代码再修改你的开发
最新发布