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

📄 interrupt.c

📁 C51驱动nrf24l01无线发送
💻 C
字号:
																			//*************************************//
																			//																		 //
																			//		 在该页添加所需要的中断任务		 	 //
																			//																		 //
																			//*************************************//
#include "define.h"
/*********************************中断服务函数************************************/
/*外部中断0*/
void Input_Zero(void) 				interrupt 0		using 1
{		 
	// TODO: 在此添加程序代码	
	Int_flag = 1;
}

/*TO定时中断器函数*/
void TIMER_Zero(void)			interrupt 1		using 1
{				
	static uchar aa = 0;
	uchar test;
	TH0 = 0x4C;
	TL0 = 0x00;										 
							 /*error*/
	//TH0 = (65536 - (unsigned int)(SYSTEMTIMERZERO / (float)(12 / SYSTEMFOSC))) / 256;				//给定时器赋初值
	//TL0 = (65536 - (unsigned int)(SYSTEMTIMERZERO / (float)(12 / SYSTEMFOSC))) % 256;	
							/*error end*/
	// TODO: 在此添加程序代码	
	aa++;
	if(aa == 20)
	{	
		aa = 0;
		Time_flag = 1;
		miao++;
		TxBuf[0] = miao;
		TxBuf[1] = miao;
		P2 ^= BIT0;
	}
		
}

/*外部中断1*/
void Input_One(void)					interrupt 2		using 1
{		
	// TODO: 在此添加程序代码	
		
}

/*T1定时中断器函数*/
void TIMER_One(void)			interrupt 3		using 1
{
								/*error*/
	//TH1 = (65536 - (unsigned int)(SYSTEMTIMERZERO / (float)(12 / SYSTEMFOSC))) / 256;				//给定时器赋初值
	//TL1 = (65536 - (unsigned int)(SYSTEMTIMERZERO / (float)(12 / SYSTEMFOSC))) % 256;	
							/*error end*/
	// TODO: 在此添加程序代码	
			
}

/*串口中断函数*/
void UART_Service(void)		interrupt 4		using 1						
{			
	unsigned char R_Data;
	if(RI)
	{
		RI=0;
		R_Data=SBUF;
		Restart(R_Data);/*实时监测自定义下载命令*/
		/*下面为实际的串口接收中断处理*/
		// TODO: 在此添加程序代码	

 	}
	else
	{
		//TI=0;
		/*下面为实际的串口发送中断处理*/
		// TODO: 在此添加程序代码	
		
	}
}

void Restart(unsigned char R_Data)
{
	static unsigned char di = 0;
	if(R_Data == download[di])
	{
		di++;
		if(download[di] == '\0')
		{				
			EX0 = OFF;								//关闭外部中断0				
			ET0 = OFF;								//关闭T0定时器中断
			TR0 = OFF;								//关闭T0定时器
			EX1 = OFF;								//关闭外部中断1		
			ET1 = OFF;								//关闭T1定时器中断
			TR1 = OFF;								//关闭T1定时器
			ES 	= OFF;								//关闭串口中断
			TR1	= OFF;								//关闭T1定时器	
			EA 	= OFF;								//关闭总中断

															 /*error*/
			//TH0 = (65536 - (unsigned int)(SYSTEMTIMERZERO / (float)(12 / SYSTEMFOSC))) / 256;				//给定时器赋初值
			//TL0 = (65536 - (unsigned int)(SYSTEMTIMERZERO / (float)(12 / SYSTEMFOSC))) % 256;
														 /*error end*/

										/*此处延时1ms左右再重启系统,姑且就用11.0592MHz的晶振作为系统时钟来计算*/
			TH0	=	(65536 - SYSTEMRESTART) / 256; 
			TL0 = (65536 - SYSTEMRESTART) % 256;
			TR0 = ON;								//启动T0定时器

			//WDT_CONTR = 0x3f;		//最长看门狗定时,时间至少为1.25秒
			//while(!TF0);			 	//等待定时器溢出
			//IAP_CONTR = 0x60;		/*定时时间到软复位到ISP程序区*/
		}
	}
	else
		di=0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -