#include "bsp_relay.h" #include "../msp/pwm.h" #include "../app/app_paraid.h" #if 0 //可惜sbit不能作为参数值 U8 g_relay_data[RELAY_NUM][2] = { RELAY_PRINTER, ULN1B, RELAY_PC, ULN2B, RELAY_LED, ULN3B, RELAY_LED_FUYIN, ULN4B, RELAY_LED_RENXIANG, ULN5B, RELAY_12V_RESV, 5ULN6B, }; #endif void _ULN1B_HANDLER(U8 oper) { ULN1B = oper; } void _ULN2B_HANDLER(U8 oper) { ULN2B = oper; } void _ULN3B_HANDLER(U8 oper) { ULN3B = oper; } void _ULN4B_HANDLER(U8 oper) { ULN4B = oper; } void _ULN5B_HANDLER(U8 oper) { ULN5B = oper; } void _ULN6B_HANDLER(U8 oper) { ULN6B = oper; } void _ULN8B_HANDLER(U8 oper) { ULN8B = oper; } void _CBC_HANDLER(U8 oper) { switch(oper) { case RELAY_KAI: D_pwer12_off(); break; case RELAY_BI: D_pwer12_on(); break; default: break; } } #if 0 struct _s_relay_oper s_relay_oper[RELAY_NUM] = { //status这里全部为RELAY_BI,如果系统看门狗重启,值会保存在flash_page0,从而读取设定 //oper_max_time这里全部为0,真实值由flash->page1设定 //relay_name, relay_handler, initital, status, oper_max_time, oper_stmp {RELAY_PRINTER, _ULN1B_HANDLER, RELAY_BI, RELAY_BI, 0, 0}, //常闭 {RELAY_PC, _ULN2B_HANDLER, RELAY_KAI, RELAY_KAI, 0, 0}, //常开 {RELAY_LED, _ULN3B_HANDLER, RELAY_BI, RELAY_BI, 0, 0}, //常闭 {RELAY_LED_FUYIN, _ULN4B_HANDLER, RELAY_KAI, RELAY_KAI, 0, 0}, //常开 {RELAY_LED_RENXIANG,_ULN5B_HANDLER, RELAY_KAI, RELAY_KAI, 0, 0}, //常开 {RELAY_12V_RESV, _ULN6B_HANDLER, RELAY_BI, RELAY_BI, 0, 0}, {RELAY_PRINTER_1, _ULN8B_HANDLER, RELAY_BI, RELAY_BI, 0, 0}, //常闭 {RELAY_CBC, _CBC_HANDLER, RELAY_NONE, RELAY_NONE, 0, 0}, //无常闭常开特性 }; U8 L2_relay_convert_and_do(int i,int val) { U8 oper = val; if(s_relay_oper[i].relay_initial == RELAY_BI) //常闭 { oper = val; } else if(s_relay_oper[i].relay_initial == RELAY_KAI) //常开 { oper = !val; } return oper; } #endif #if 0 void L1_relay_on(vU8 n,vU8 val) { U8 i = 0; for(i=0;i> i) & 0x1) { // L1_relay_on(i,((val >> i) & 0x1 == PROTO_RELAY_KAI ? RELAY_KAI : RELAY_BI)); L1_relay_on(i, val >> i & 0x1); } } } } #endif #if 0 //全关(断开) void L2_relay_poweroff_all(void) { _CBC_HANDLER(RELAY_KAI); L1_relay_on(RELAY_PC, RELAY_KAI); L1_relay_on(RELAY_PRINTER, RELAY_KAI); L1_relay_on(RELAY_PRINTER_1, RELAY_KAI); } void L2_relay_poweron_all(void) { U8 i = 0; _CBC_HANDLER(RELAY_BI); for(i=0;i