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

📄 int.c

📁 Keil c工程
💻 C
字号:

#include "..\h\INT.h"


void Finish() interrupt 2	//using 0
{
}

static byte MS10=0,uS100=0,SEC=0;					//单位为10mS,100uS

word TASK_TIMER;		
void timer0() interrupt 1		//T0
{
uS100++;
if(uS100==100) {uS100=0;MS10++;}
if(MS10==100)  {MS10=0;SEC++;}

TASK_TIMER--;

}

void Delay100uS(word time)
{
TASK_TIMER=time;
//while(TASK_TIMER);			//wait TASK_TIMER reduced to 0,may execute other task
							//可能导致恰好错过,造成无响应。
while(TASK_TIMER<10);		//设置1mS的缓冲时间。
}

word GetCurruntTime(void)  //10mS为单位
{
return(SEC*100+MS10);
}

void in_int() interrupt 0
{
}

/*
void time1()  interrupt 3
{}
*/

byte COMFRAME[8]={COMFLAGSTART,'0','0','0','0','0','0',COMFLAGEND};		//接收缓存
bit FRAMEEND=0;				//接受完一帧数据置1 
byte RECEIVE_BYTE=0;		//接收到的字节数
byte transmite_num=0;		//已经发送的字节数
byte FRAME_T[8]={COMFLAGSTART,'0','0','0','0','0','0',COMFLAGEND};
bit transmite_finish=1;			//桢发送完毕置1,只有发送完一桢后才能发送下一桢

void com() interrupt  4			
{

if(RI)				//接收部分
  {
     if(RECEIVE_BYTE==0)
	    {
		 if(SBUF==COMFLAGSTART) {RECEIVE_BYTE=1;COMFRAME[0]=COMFLAGSTART;}
		}
	 else if(RECEIVE_BYTE<7) 
	    {
		  COMFRAME[RECEIVE_BYTE]=SBUF;
		  RECEIVE_BYTE++;
		}
	 else if(RECEIVE_BYTE==7)
	    {
		 if(SBUF==COMFLAGEND) FRAMEEND=1;
		 RECEIVE_BYTE=0;
		}
	 RI=0;
  }

if(TI) 				//发送部分
		{
		     TI=0;
			 if(transmite_num<7)	//一桢尚未发送完
				{
				 transmite_num++;
				 SBUF=FRAME_T[transmite_num];
				}	
		     else 
			    {transmite_num=0; //一桢发送完成则重置状态
			 	 transmite_finish=1;}
		}
}



void ecc(void)				//发送数据的校验,从COMFLAGSTART一直加到ECC的结果为0
{
byte i,e=0;
byte *frame=&FRAME_T;

for(i=0;i<6;i++) e+=*(frame+i);
*(frame+6)=0x100-e;
}


void ComTransmite(void)			//发送一桢数据,仅启动,其余工作由中断完成
{
extern bit transmite_finish;

  while(!transmite_finish);
  transmite_finish=0;
  SBUF=COMFLAGSTART;
}

bit ComRecieve(void)			//接收完一桢后后,置1,返回响应
{
byte *p=&COMFRAME;
byte *frame=&FRAME_T;

if(FRAMEEND)
	{
	 FRAMEEND=0;
	 //*frame=COMFLAGSTART;
	 *(frame+1)=COMRECIEVE_OK; 
	 *(frame+2)=*(p+1);
	 ecc();
     ComTransmite();			//??

	 return(1);
	}
else return(0);
}

⌨️ 快捷键说明

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