//////////////////////////////////////////////////////////////////////////// ///@copyright Copyright (c) 2018, 传控科技 All rights reserved. ///------------------------------------------------------------------------- /// @file bsp_test.c.c /// @brief bsp @ driver config ///------------------------------------------------------------------------- /// @version 1.0 /// @author CC /// @date 20180331 /// @note cc_AS_stc02 ////////////////////////////////////////////////////////////////////////////// #include "task_key.h" #include "../clib/clib.h" struct _s_task_key_ s_task_key_handle; void L0_key_init(void) { //使能 INT1下降沿中断 IT0 = 0; //外部中断允许 EX0 = 1; //使能 INT1下降沿中断 IT1 = 0; //外部中断允许 EX1 = 1; L1_task_init(&s_task_key_handle.task); L3_task_s_go(s_task_key_handle,D_task_init); } void INT0_isrHanddle(void) D_SERVE_INT0 { struct _s_task_key_ *p = &s_task_key_handle; EX0=0; //关中断 //do sth if(key1 == 0) { //Lc_delay_ms(10);//按键防抖 if(key1 == 0) { p->key1_ok = 1; while(!key1) { p->time1++; } } } IE0 = 0; //清除INT0中断程序执行过程中的中断请求 EX0 = 1; //开中断 } void INT1_isrHanddle(void) D_SERVE_INT1 { struct _s_task_key_ *p = &s_task_key_handle; EX1 = 0; //关中断 //do sth if(key2 == 0) { //Lc_delay_ms(10); if(key2 == 0) { p->key2_ok = 1; while(!key2) { p->time2++; } } } IE1 = 0; //清除INT1中断程序执行过程中的中断请求 EX1 = 1; //开中断 } void L3_task_key_handle(struct _s_task_key_ *p) { if(p->key1_ok) { if(p->time1>=180) { LED1 = ~LED1; } else { LED2 = ~LED2; } p->key1_ok = 0; p->time1=0; } if(p->key2_ok) { if(p->time2>=180) { LED1 = ~LED1; } else { LED2 = ~LED2; } p->key2_ok = 0; p->time2=0; } if(key3 == 0) { //Lc_delay_ms(10);//按键防抖 if(key3 == 0) { p->key3_ok = 1; while(!key3) { p->time3++; } } } if(p->key3_ok) { if(p->time3>=180) { LED1 = ~LED1; } else { LED2 = ~LED2; } p->key3_ok = 0; p->time3=0; } }