c语言程序睡眠,单片机睡眠-外中断INT0 INT1唤醒(汇编+C语言程序)

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

}

c2c9ed493cd281aa86d8a6f5178c4c01.gif [1] [2] 610626052e95c7fbe3d254abc769d9ad.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值