#include "io.h"

//如果使用keil仿真调试，不能操作P0.5，P0.6口，否则会运行出错
//P0/P1/P2/P3 口可按位操作,P4/P5 口只能寄存器操作   P5.5为RST口
/*将所有IO寄存器清零*/
void IO_CLR()
{
    P0CR = 0xFF;		//PxCR=0是输入，=1是输出
    P1CR = 0xFF;
    P2CR = 0xFF;
    P3CR = 0xFF;
    P4CR = 0xFF;
    P5CR = 0x3F;		//0011 1111
	
    P0PCR = 0x00;		//PxPCR=0是上拉禁止，=1是上拉使能
    P1PCR = 0x00;
    P2PCR = 0x00;
    P3PCR = 0x00;
    P4PCR = 0x00;
    P5PCR = 0x00;
	
		ALFSEL0 = 0x00;		//复用选择寄存器
		ALFSEL1 = 0x00;		//复用选择寄存器 
	
		P0 = 0;		//所有引脚输出低电平
    P1 = 0;
    P2 = 0;
    P3 = 0;
    P4 = 0;
    P5 = 0;
		delay_ms(100);
}

void IO_Test(void)
{ 
	//IO设置输出
	P0CR |= 0x9F;		//1001 1111		使用|=操作的话可以保留第5,6位原本的状态	这里5,6两位做SWD调试接口了
	P1CR |= 0xFF;
	P2CR |= 0xFF;	
	P3CR |= 0xFF;
	P4CR = 0xFF;
	P5CR = 0x1F;		//0001 1111
	
	while(1)
	{
		P0 |= 0x9F;
		P1 |= 0xFF;
		P2 |= 0xFF;
		P3 |= 0xFF;
		P4 = 0xFF;
		P5 = 0x1F;		
		delay_ms(100);
		P0 &= 0x60;		//0110 0000
		P1 &= 0x00;
		P2 &= 0x00;
		P3 &= 0x00;
		P4 = 0x00;
		P5 = 0x00;
		delay_ms(100);
	}
}