所以采用下面的写法效果也是一样的,而且更容易理解
/**************** 向HC595发送一个字节函数 ******************/
void Send_595(u8 dat)
{
u8 i;
for(i=0; i<8; i++)
{
dat <<= 1;
P_HC595_SER = CY;
P_HC595_SRCLK = 0;
P_HC595_SRCLK = 1;
}
}
/********************** 显示扫描函数 ************************/
void DisplayScan(void)
{
Send_595(t_display[LED8[display_index]]); //输出段码
Send_595(~T_COM[display_index]); //输出位码
P_HC595_RCLK = 0;
P_HC595_RCLK = 1;
if(++display_index >= 8) display_index = 0; //8位结束回0
}
/********************** Timer0 1ms中断函数 ************************/
void timer0 (void) interrupt 1
{
DisplayScan(); //1ms扫描显示一位
B_1ms = 1; //1ms标志
}
|