本帖最后由 tang87633187 于 2018-7-27 11:07 编辑
void delay( int t )
{ int k,j;
for(k=0;k<t;k++)
for(j=0;j<1000;j++)
;
}
void SCLK(char i)
{ if(i==1)
GPIO_PinSet(GPIO_PTC0);
else
GPIO_PinClear(GPIO_PTC0);
}
void RCLK(char i)
{ if(i==1)
GPIO_PinSet(GPIO_PTC1);
else
GPIO_PinClear(GPIO_PTC1);
}
void DIO(char i)
{ if(i==1)
GPIO_PinSet(GPIO_PTD5);
else
GPIO_PinClear(GPIO_PTD5);
}
void H595_Conver( int data)
{ char t;
RCLK(0);
for(t=0;t<16;t++)
{ if((data&0x8000)==0x8000)
DIO(1);
else
DIO(0);
SCLK(1);
data=data<<1;
SCLK(0);
}
RCLK(1);
}
char led[10]={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
int main (void);
void RTC_Task(void);
/******************************************************************************
* Global functions
******************************************************************************/
/********************************************************************/
int main (void)
{ char temp;
char i;
int j,k;
/*ϵͳ³õʼ*/
sysinit();
cpu_identify();
RTC_ConfigType sRTCConfig;
RTC_ConfigType *pRTCConfig = &sRTCConfig;
printf("\nRunning the GPIO_demo project.\n");
/*ÅäÖÃRTCµÄÖжÏƵÂÊΪ1Hz*/
pRTCConfig->u16ModuloValue = 9;
pRTCConfig->bInterruptEn = RTC_INTERRUPT_ENABLE; /*ʹÄÜÖжÏ*/
pRTCConfig->bClockSource = RTC_CLKSRC_1KHZ; /*ʱÖÓԴƵÂÊΪ1khz*/
pRTCConfig->bClockPresaler = RTC_CLK_PRESCALER_100; /*·ÖƵϵÊýΪ100*/
RTC_SetCallback(RTC_Task);
RTC_Init(pRTCConfig);
GPIO_PinInit(GPIO_PTC0, GPIO_PinOutput);
GPIO_PinInit(GPIO_PTC1, GPIO_PinOutput);
GPIO_PinInit(GPIO_PTD5, GPIO_PinOutput);
while(1)
{
for(i=0;i<8;i++)
{ H595_Conver( ((0xff-led)<<8)|(0x01<<(7-i)));
delay(2);
}
}
}
|