⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 interrupt.c

📁 M200一个与单片机通信的C语言软件源代码
💻 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 + -