
*
*
*Function: 微波电源开关通道切换指令板程序
**********************************************************************************************/
#include /********************************************************************************************** * * Note: 数组、变量和指针等的声明 * Function: * **********************************************************************************************/ int receive_data[100]; int OK[4]={0x0023,0x004F,0x004B,0x0024}; int send_data1[3]={0x0023,0x0031,0x0024}; int send_data2[3]={0x0023,0x0032,0x0024}; int send_data3[3]={0x0023,0x0033,0x0024}; int send_data4[3]={0x0023,0x0034,0x0024}; int send_data5[3]={0x0023,0x0035,0x0024}; int send_data6[3]={0x0023,0x0036,0x0024}; int send_data7[3]={0x0023,0x0037,0x0024}; int send_data8[3]={0x0023,0x0038,0x0024}; int *send; int receive_counter=0; int send_length=0; int send_counter=0; int receive_flag=0; int resend_flag=0; int OK_flag=0; int KEY_mode=1; /********************************************************************************************** * * Note: 函数声明 * Function: * **********************************************************************************************/ void __attribute__((__interrupt__)) _U1RXInterrupt(void); void __attribute__((__interrupt__)) _U1TXInterrupt(void); void __attribute__((__interrupt__)) _T1Interrupt(void); void __attribute__((__interrupt__)) _CNInterrupt(void); void delay(int z); void PORT_Init(void); void TIMER_Init(void); void UART_Init(void); /********************************************************************************************** * * Note: 主函数 * Function: 完成各模块的初始化,等待中断, * **********************************************************************************************/ int main(void) TIMER_Init(); IFS0bits.U1TXIF = 1; resend_flag=0; switch(KEY_mode) //选择开关状态 { PORTFbits.RF6 = 1; { PORTFbits.RF6 = 0; { PORTFbits.RF6 = 1; { PORTFbits.RF6 = 0; } } } /********************************************************************************************** * * Note: UART接收中断服务程序ISR * Function: 完成接收到的数据的存储和判断,并置位相应的标志位 * { IFS0bits.U1RXIF = 0; //清零接收中断标志 receive_data[receive_counter]=U1RXREG; //接收数据 receive_counter++; if(receive_data[receive_counter-1]==0x0024) //接收完成? { //置位接收完成标志 OK_flag=1; //接收到OK } receive_counter=0; //归零接收计数器 } } { IFS0bits.U1TXIF = 0; //清零发送中断标志 send_counter=0; //归零发送计数器 U1TXREG=*(send+send_counter); //发送数据 /********************************************************************************************** * * Note: Timer1中断服务程序ISR * Function: 发送开关切换指令 * { if(PORTFbits.RF1==0) //判断按键是否按下 { switch(KEY_mode) //选择开关状态 } } } /********************************************************************************************** * * Note: UART接收引脚电平变化中断服务程序ISR,以及延时子程序 * Function: 完成接收到的数据的存储和判断,并置位相应的标志位 * **********************************************************************************************/ { IFS0bits.CNIF = 0; //清除中断标志 if(PORTFbits.RF4==0) //判断按键是否按下 KEY_mode++; //开关模式加1 } { } /********************************************************************************************** * * ------------------------------------------END----------------------------------------------- * **********************************************************************************************/
