📄 interrupt.c
字号:
/***********************************************************************************
/----------------------Copyright (c) 2005 ~ 2008 Miartech. All Rights Reserved.-----------------------/
/***********************************************************************************
**-----------------------------------------File Info--------------------------------------------
** Last modified Date: 2008-06-24
** Descriptions: Timer/Counter Interrupt Fuctions
**--------------------------------------------------------------------------------------------
** Created By: Kelven
** Created Date: 2007-04-17
**--------------------------------------------------------------------------------------------
** Modified by: Kelven
** Modified date: 2007-09-04
** Version: V4.0.0
** Descriptions:
**--------------------------------------------------------------------------------------------
** Modified by: Kelven
** Modified date: 2008-06-24
** Version: V4.0.1
** Descriptions: Updating Key Configrating Function, Added PLC Chip Register Value Setting Module
***********************************************************************************/
#include "..\inc\Interrupt.h"
extern BYTE xdata g_cUart_Rate_Value;
extern BYTE PLC_Word_Rec_Overtime;
extern FLAG_YES_NO ACK_Frame_Flag;
extern FLAG_YES_NO Config_Param_Completed;
/*-------------------------------Global Value Definition ----------------------------------------*/
BYTE cSend_Timeout_Cnt;
WORD wTime_5MS = 0;
/*------------------------------------------------------------------------------------------*/
/***********************************************************************************
** Function Name: INIT_Timer0
** Input Parameters:None
** Output Parameters:None
** Implement:Timer0 Initialization & Enable Timer0 Working
***********************************************************************************/
void INIT_Timer0(void)
{
TMOD &= 0xF0;
TMOD |= 0x01; //Set Timer0 Mode:1->16bits Counter;
TL0 = (BYTE)(TCNT_5MS);
TH0 = (BYTE)(TCNT_5MS >> 8);
TR0 = 0; // Start timer 0
ET0 = 0; // Enable Timer 0 interrupt
}
/***********************************************************************************
** Function Name: TIM_IsrTimer0
** Input Parameters:None
** Output Parameters:None
** Implement:Internal Tick Generator
***********************************************************************************/
void TIM_IsrTimer0(void) interrupt 1
{
TL0 = (BYTE)(TCNT_5MS);
TH0 = (BYTE)(TCNT_5MS >> 8);
PLC_Word_Rec_Overtime++;
if (++wTime_5MS >= 200)
{
if(cSend_Timeout_Cnt > 0)
{
cSend_Timeout_Cnt --;
}
wTime_5MS = 0;
}
}
/***********************************************************************************
** Function Name: BaudRate_Init
** Input Parameters:None
** Output Parameters:None
** Implement:BaudRate Initialization
***********************************************************************************/
void BaudRate_Init(BYTE cBaud_Rate)
{
TMOD &= 0x0F;
TMOD |= 0x20;
TH1 = cBaud_Rate;
TL1 = cBaud_Rate;
TR1 = 0;
ET1 = 0;
}
/***********************************************************************************
** Function Name: ISr_Serial
** Input Parameters:None
** Output Parameters:None
** Implement:Serial Port Transmit & Receive Interrupt
***********************************************************************************/
void ISr_Serial(void) interrupt 4
{
BYTE Return_Status;
if(RI == 1)
{
if ( Config_Param_Completed == FLAG_NO )
{
if (SBUF == FRAME_HEADER_BYTE)
{
RS232_Receive_Frame();
}
else if (SBUF == ACK_Recv_Data_Correct || SBUF == ACK_Recv_Data_Error)
{
if (ACK_Frame_Flag == FLAG_YES)
{
Return_Status = SBUF;
Receive_ACK_RS232(Return_Status);
ACK_Frame_Flag = FLAG_NO;
}
else
{
RI = 0;
}
}
}
else
{
RI = 0;
}
}
}
/***********************************************************************************
** End Of File **
***********************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -