IT1 = 1; //INT1 下降沿中断
// IT1 = 0; //INT1 上升,下降沿中断
PCON |= 0x02; //Sleep
_nop_();
_nop_();
_nop_();
}
}
}
}
}
/**********************************************/
//========================================================================
// 函数: void delay_ms(unsigned char ms)
// 描述: 延时函数。
// 参数: ms,要延时的ms数, 这里只支持1~255ms. 自动适应主时钟.
// 返回: none.
// 版本: VER1.0
// 日期: 2013-4-1
// 备注:
//========================================================================
void delay_ms(u8 ms)
{
u16 i;
do{
i = MAIN_Fosc / 13000;
while(--i) ; //14T per loop
}while(--ms);
}
/********************* INT0中断函数 *************************/
void INT0_int (void) interrupt INT0_VECTOR //进中断时已经清除标志
{
EX0 = 0; //INT0 Disable
IE0 = 0; //外中断0标志位
}
/********************* INT1中断函数 *************************/
void INT1_int (void) interrupt INT1_VECTOR //进中断时已经清除标志
{
EX1 = 0; //INT1 Disable
IE1 = 0; //外中断1标志位
}
/**************** 向HC595发送一个字节函数 ******************/
void Send_595(u8 dat)
{
u8 i;
for(i=0; i<8; i++)
{
dat <<= 1;
P_HC595_SER = CY;
P_HC595_SRCLK = 1;
P_HC595_SRCLK = 0;
}
}
/********************** 显示扫描函数 ************************/
void DisplayScan(void)
{
Send_595(~T_COM[display_index]); //输出位码
Send_595(t_display[LED8[display_index]]); //输出段码
P_HC595_RCLK = 1;
P_HC595_RCLK = 0; //锁存输出数据
if(++display_index >= 8) display_index = 0; //8位结束回0
}
[1] [2]