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

📄 2407user.h

📁 前段时间做的DSP开发项目
💻 H
📖 第 1 页 / 共 3 页
字号:
			tmp|=0x0100;
			tmp&=0xFFFE; 
			*PFDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOP1
    case IOPF1:
		{
			tmp=*PFDATDIR;
			tmp|=0x0200;
			tmp&=0xFFFD; 
			*PFDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOP2
    case IOPF2:
		{
			tmp=*PFDATDIR;
			tmp|=0x0400;
			tmp&=0xFFFB; 
			*PFDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOP3
    case IOPF3:
		{
			tmp=*PFDATDIR;
			tmp|=0x0800;
			tmp&=0xFFF7; 
			*PFDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOP4
    case IOPF4:
		{
			tmp=*PFDATDIR;
			tmp|=0x1000;
			tmp&=0xFFEF; 
			*PFDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOP5
    case IOPF5:
		{
			tmp=*PFDATDIR;
			tmp|=0x2000;
			tmp&=0xFFDF; 
			*PFDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOP6
    case IOPF6:
		{
			tmp=*PFDATDIR;
			tmp|=0x4000;
			tmp&=0xFFBF; 
			*PFDATDIR=tmp;
			break;
		}
#endif
	}		
}

////////////////////////////////////////////////////////////////////////////////////CAN Module
#ifdef _USECAN

#ifdef _USEMBX0
#define MBX0 41
#endif

#ifdef _USEMBX1
#define MBX1 42
#endif

#ifdef _USEMBX2
#define MBX2 43
#endif

#ifdef _USEMBX3
#define MBX3 44
#endif

#ifdef _USEMBX4
#define MBX4 45
#endif

#ifdef _USEMBX5
#define MBX5 46
#endif

#define DIRSEND 47
#define DIRRECV 48

void clr_mbx(unsigned int mbxid)
{
	switch(mbxid)
	{
#ifdef _USEMBX0
	case MBX0:
		*CANMCR|=0x0100;
		*CANMBX0A=0x0000;
		*CANMBX0B=0x0000;
		*CANMBX0C=0x0000;
		*CANMBX0D=0x0000;
		*CANMCR=0x0480;
		break;		
#endif

#ifdef _USEMBX1
	case MBX1:
		*CANMCR|=0x0100;
		*CANMBX1A=0x0000;
		*CANMBX1B=0x0000;
		*CANMBX1C=0x0000;
		*CANMBX1D=0x0000;
		*CANMCR=0x0480;
		break;		
#endif

#ifdef _USEMBX2
	case MBX2:
		*CANMCR|=0x0100;
		*CANMBX2A=0x0000;
		*CANMBX2B=0x0000;
		*CANMBX2C=0x0000;
		*CANMBX2D=0x0000;
		*CANMCR=0x0480;
		break;		
#endif

#ifdef _USEMBX3
	case MBX3:
		*CANMCR|=0x0100;
		*CANMBX3A=0x0000;
		*CANMBX3B=0x0000;
		*CANMBX3C=0x0000;
		*CANMBX3D=0x0000;
		*CANMCR=0x0480;
		break;		
#endif

#ifdef _USEMBX4
	case MBX4:
		*CANMCR|=0x0100;
		*CANMBX4A=0x0000;
		*CANMBX4B=0x0000;
		*CANMBX4C=0x0000;
		*CANMBX4D=0x0000;
		*CANMCR=0x0480;
		break;		
#endif

#ifdef _USEMBX5
	case MBX5:
		*CANMCR|=0x0100;
		*CANMBX5A=0x0000;
		*CANMBX5B=0x0000;
		*CANMBX5C=0x0000;
		*CANMBX5D=0x0000;
		*CANMCR=0x0480;
		break;		
#endif
	}
}

void init_can(unsigned int bcr1,unsigned int bcr2,unsigned int intmask/*interrupt mask*/)//Set BCR1 BCR2 and int mask register
{
	*MCRB|=0x00C0;
	*CANIFR=0xFFFF;
	*CANIMR=intmask;
	*CANMCR|=0x1000;
	*CANMDER=0x0000;
	
	while(*CANGSR&0x0010==0)continue;
	*CANBCR2=bcr2;
	*CANBCR1=bcr1;
	*CANMCR&=0xEFFF;
	while(*CANGSR&0x0010!=0)continue;
}

void init_mbxsend(unsigned int mbxid/*which mailbox's gonna to send*/,unsigned int frameidl,unsigned int frameidh/*message id*/)//Set data frame id, 8 byte
{
#ifdef EXTID
	switch(mbxid)
	{
#ifdef _USEMBX2
	case MBX2:
		{
			*CANMDER&=0xFFFB;
			
			*CANMCR|=0x0100;
			*CANMSGID2L=frameidl;
			*CANMSGID2H=frameidh;
			//*CANMSGID2H&=0xDFFF;
			//*CANMSGID2H|=0xC000;
			*CANMSGCTRL2=0x0008;
			
			*CANMBX2A=0x0000;
			*CANMBX2B=0x0000;
			*CANMBX2C=0x0000;
			*CANMBX2D=0x0000;
			*CANMCR=0x0480;
            *CANIMR=0xFFFF;
            *CANIFR=0xFFFF;
			
			*CANMDER|=0x0004;
			break;
		}
#endif
		
#ifdef _USEMBX3
	case MBX3:
		{
			*CANMDER&=0xFFF7;
			
			*CANMCR|=0x0100;
			*CANMSGID3L=frameidl;
			*CANMSGID3H=frameidh;
			//*CANMSGID3H&=0xDFFF;
			//*CANMSGID3H|=0xC000;
			*CANMSGCTRL3=0x0008;
			
			*CANMBX3A=0x0000;
			*CANMBX3B=0x0000;
			*CANMBX3C=0x0000;
			*CANMBX3D=0x0000;
			*CANMCR=0x0480;
            *CANIMR=0xFFFF;
            *CANIFR=0xFFFF;

			*CANMDER|=0x0008;
			break;
		}
#endif
		
#ifdef _USEMBX4
	case MBX4:
		{
			*CANMDER&=0xFFEF;
			
			*CANMCR|=0x0100;
			*CANMSGID4L=frameidl;
			*CANMSGID4H=frameidh;
			//*CANMSGID4H&=0xDFFF;
			//*CANMSGID4H|=0xC000;
			*CANMSGCTRL4=0x0008;
			
			*CANMBX4A=0x0000;
			*CANMBX4B=0x0000;
			*CANMBX4C=0x0000;
			*CANMBX4D=0x0000;
			*CANMCR=0x0480;
            *CANIMR=0xFFFF;
            *CANIFR=0xFFFF;

			*CANMDER|=0x0010;
			break;
		}
#endif
		
#ifdef _USEMBX5
	case MBX5:
		{
			*CANMDER&=0xFFDF;
			
			*CANMCR|=0x0100;
			*CANMSGID5L=frameidl;
			*CANMSGID5H=frameidh;
			//*CANMSGID5H&=0xDFFF;
			//*CANMSGID5H|=0xC000;
			*CANMSGCTRL5=0x0008;
			
			*CANMBX5A=0x0000;
			*CANMBX5B=0x0000;
			*CANMBX5C=0x0000;
			*CANMBX5D=0x0000;
			*CANMCR=0x0480;
            *CANIMR=0xFFFF;
            *CANIFR=0xFFFF;

			*CANMDER|=0x0020;
			break;
		}
#endif
	}

#else
	switch(mbxid)
	{
#ifdef _USEMBX2
	case MBX2:
		{
			*CANMDER&=0xFFFB;
			
			*CANMCR|=0x0100;
			*CANMSGID2H=frameidh;
			//*CANMSGID2H&=0x4FFF;
			//*CANMSGID2H|=0x4000;
			*CANMSGID2L=frameidl;
			*CANMSGCTRL2=0x0008;
			
			*CANMBX2A=0x0000;
			*CANMBX2B=0x0000;
			*CANMBX2C=0x0000;
			*CANMBX2D=0x0000;
			*CANMCR=0x0480;
            *CANIMR=0xFFFF;
            *CANIFR=0xFFFF;
			
			*CANMDER|=0x0004;
			break;
		}
#endif
		
#ifdef _USEMBX3
	case MBX3:
		{
			*CANMDER&=0xFFF7;
			
			*CANMCR|=0x0100;
			*CANMSGID3H=frameidh;
			//*CANMSGID3H&=0x4FFF;
			//*CANMSGID3H|=0x4000;
			*CANMSGID3L=frameidl;
			*CANMSGCTRL3=0x0008;
			
			*CANMBX3A=0x0000;
			*CANMBX3B=0x0000;
			*CANMBX3C=0x0000;
			*CANMBX3D=0x0000;
			*CANMCR=0x0480;
            *CANIMR=0xFFFF;
            *CANIFR=0xFFFF;
			
			*CANMDER|=0x0008;
			break;
		}
#endif
		
#ifdef _USEMBX4
	case MBX4:
		{
			*CANMDER&=0xFFEF;
			
			*CANMCR|=0x0100;
			*CANMSGID4H=frameidh;
			//*CANMSGID4H&=0x4FFF;
			//*CANMSGID4H|=0x4000;
			*CANMSGID4L=frameidl;
			*CANMSGCTRL4=0x0008;
			
			*CANMBX4A=0x0000;
			*CANMBX4B=0x0000;
			*CANMBX4C=0x0000;
			*CANMBX4D=0x0000;
			*CANMCR=0x0480;
            *CANIMR=0xFFFF;
            *CANIFR=0xFFFF;
			
			*CANMDER|=0x0010;
			break;
		}
#endif
		
#ifdef _USEMBX5
	case MBX5:
		{
			*CANMDER&=0xFFDF;
			
			*CANMCR|=0x0100;
			*CANMSGID5H=frameidh;
			//*CANMSGID5H&=0x4FFF;
			//*CANMSGID5H|=0x4000;
			*CANMSGID5L=frameidl;
			*CANMSGCTRL5=0x0008;
			
			*CANMBX5A=0x0000;
			*CANMBX5B=0x0000;
			*CANMBX5C=0x0000;
			*CANMBX5D=0x0000;
			*CANMCR=0x0480;
            *CANIMR=0xFFFF;
            *CANIFR=0xFFFF;
			
			*CANMDER|=0x0020;
			break;
		}
#endif
	}
#endif
}

void can_send(unsigned int mbxid,unsigned int* pdata)//Send data
{
	if(!pdata) return;
	switch(mbxid)
	{
#ifdef _USEMBX2
	case MBX2:
		{
			*CANMDER&=0xFFFB;
            *CANMCR|=0X0100;
            *CANMBX2A=pdata[0];
            *CANMBX2B=pdata[1];
            *CANMBX2C=pdata[2];
            *CANMBX2D=pdata[3];
            *CANMCR=0x0480;
			*CANMDER&=0xFFBF;
            *CANMDER|=0x0004;
						
			*CANTCR=0x0010;
			while(*CANTCR&0x1000==0)continue;
			*CANTCR=0x1000;
			break;
		}
#endif
		
#ifdef _USEMBX3
	case MBX3:
		{
			*CANMDER&=0xFFF7;
            *CANMCR|=0X0100;
            *CANMBX3A=pdata[0];
            *CANMBX3B=pdata[1];
            *CANMBX3C=pdata[2];
            *CANMBX3D=pdata[3];
            *CANMCR=0x0480;
			*CANMDER&=0xFF7F;
            *CANMDER|=0x0008;
			
			*CANTCR=0x0020;
			while(*CANTCR&0x2000==0)continue;
			*CANTCR=0x2000;
			break;
		}
#endif
		
#ifdef _USEMBX4
	case MBX4:
		{
			*CANMDER&=0xFFEF;
            *CANMCR|=0X0100;
            *CANMBX4A=pdata[0];
            *CANMBX4B=pdata[1];
            *CANMBX4C=pdata[2];
            *CANMBX4D=pdata[3];
            *CANMCR=0x0480;
            *CANMDER|=0x0010;
			
			*CANTCR=0x0040;
			while(*CANTCR&0x4000==0)continue;
			*CANTCR=0x4000;
			break;
		}
#endif
		
#ifdef _USEMBX5
	case MBX5:
		{
			*CANMDER&=0xFFDF;
            *CANMCR|=0X0100;
            *CANMBX5A=pdata[0];
            *CANMBX5B=pdata[1];
            *CANMBX5C=pdata[2];
            *CANMBX5D=pdata[3];
            *CANMCR=0x0480;
            *CANMDER|=0x0020;
			
			*CANTCR=0x0080;
			while(*CANTCR&0x8000==0)continue;
			*CANTCR=0x8000;
			break;
		}
#endif
	}
}

void init_mbxrecv(unsigned int mbxid,unsigned int frameidrl,unsigned int frameidrh,unsigned int maskl,unsigned int maskh)//Receive data,standard frame
{
#ifdef EXTID
	switch(mbxid)
	{
#ifdef _USEMBX0
	case MBX0:
		{
			*CANMDER&=0xFFFE;
			*CANMCR|=0x0100;
			*CANLAM0H=maskh;
			*CANLAM0L=maskl;
			//*CANLAM0H|=0x8000;
			
			*CANMSGID0L=frameidrl;
			*CANMSGID0H=frameidrh;
			
			//*CANMSGID0H&=0xDFFF;
			//*CANMSGID0H|=0xC000;
			
			*CANMBX0A=0x0000;
			*CANMBX0B=0x0000;
			*CANMBX0C=0x0000;
			*CANMBX0D=0x0000;
			*CANMCR=0x0480;
			*CANMDER|=0x0001;
			break;
		}
#endif
		
#ifdef _USEMBX1
	case MBX1:
		{
			*CANMDER&=0xFFFD;
			*CANMCR|=0x0100;
			*CANLAM0H=maskh;
			*CANLAM0L=maskl;
			//*CANLAM0H|=0x8000;
			
			*CANMSGID1L=frameidrl;
			*CANMSGID1H=frameidrh;
			
			//*CANMSGID1H&=0xDFFF;
			//*CANMSGID1H|=0xC000;
			
			*CANMBX1A=0x0000;
			*CANMBX1B=0x0000;
			*CANMBX1C=0x0000;
			*CANMBX1D=0x0000;
			*CANMCR=0x0480;
			*CANMDER|=0x0002;
			break;
		}
#endif
		
#ifdef _USEMBX2
	case MBX2:
		{
			*CANMDER&=0xFFFB;
			*CANMCR|=0x0100;
			*CANLAM1H=maskh;
			*CANLAM1L=maskl;
			//*CANLAM1H|=0x8000;
			
			*CANMSGID2L=frameidrl;
			*CANMSGID2H=frameidrh;
			
			//*CANMSGID2H&=0xDFFF;
			//*CANMSGID2H|=0xC000;
			
			*CANMBX2A=0x0000;
			*CANMBX2B=0x0000;
			*CANMBX2C=0x0000;
			*CANMBX2D=0x0000;
			*CANMCR=0x0480;
			*CANMDER|=0x0044;
			break;
		}
#endif
		
#ifdef _USEMBX3
	case MBX3:
		{
			*CANMDER&=0xFFF7;
			*CANMCR|=0x0100;
			*CANLAM1H=maskh;
			*CANLAM1L=maskl;
			//*CANLAM1H|=0x8000;
			
			*CANMSGID3L=frameidrl;
			*CANMSGID3H=frameidrh;
			
			//*CANMSGID3H&=0xDFFF;
			//*CANMSGID3H|=0xC000;
			
			*CANMBX3A=0x0000;
			*CANMBX3B=0x0000;
			*CANMBX3C=0x0000;
			*CANMBX3D=0x0000;
			*CANMCR=0x0480;
			*CANMDER|=0x0088;
			break;
		}
#endif
	}
#else
	switch(mbxid)
	{
#ifdef _USEMBX0
	case MBX0:
		{
			*CANMDER&=0xFFFE;
			*CANMCR|=0x0100;
			*CANLAM0H=maskh;
			//*CANLAM0H=(*CANLAM0H)<<2;
			//*CANLAM0H&=0x7FFF;
			*CANLAM0L=maskl;
			*CANMSGID0H=frameidrh;
			//*CANMSGID0H&=0x4FFF;
			//*CANMSGID0H|=0x4000;
			*CANMSGID0L=frameidrl;
			
			*CANMBX0A=0x0000;
			*CANMBX0B=0x0000;
			*CANMBX0C=0x0000;
			*CANMBX0D=0x0000;
			*CANMCR=0x0480;
			*CANMDER|=0x0001;
			break;
		}
#endif
		
#ifdef _USEMBX1
	case MBX1:
		{
			*CANMDER&=0xFFFD;
			*CANMCR|=0x0100;
			*CANLAM0H=maskh;
			//*CANLAM0H=(*CANLAM0H)<<2;
			//*CANLAM0H&=0x7FFF;
			*CANLAM0L=maskl;
			*CANMSGID1H=frameidrh;
			//*CANMSGID1H&=0x4FFF;
			//*CANMSGID1H|=0x4000;
			*CANMSGID1L=frameidrl;
			
			*CANMBX1A=0x0000;
			*CANMBX1B=0x0000;
			*CANMBX1C=0x0000;
			*CANMBX1D=0x0000;
			*CANMCR=0x0480;
			*CANMDER|=0x0002;
			break;
		}
#endif
		
#ifdef _USEMBX2
	case MBX2:
		{
			*CANMDER&=0xFFFB;
			*CANMCR|=0x0100;
			*CANLAM1H=maskh;
			//*CANLAM1H=(*CANLAM1H)<<2;
			//*CANLAM1H&=0x7FFF;
			*CANLAM1L=maskl;
			*CANMSGID2H=frameidrh;
			//*CANMSGID2H&=0x4FFF;
			//*CANMSGID2H|=0x4000;
			*CANMSGID2L=frameidrl;
			
			*CANMBX2A=0x0000;
			*CANMBX2B=0x0000;
			*CANMBX2C=0x0000;
			*CANMBX2D=0x0000;
			*CANMCR=0x0480;
			*CANMDER|=0x0044;
			break;
		}
#endif
		
#ifdef _USEMBX3
	case MBX3:
		{
			*CANMDER&=0xFFF7;
			*CANMCR|=0x0100;
			*CANLAM1H=maskh;
			//*CANLAM1H=(*CANLAM1H)<<2;
			//*CANLAM1H&=0x7FFF;
			*CANLAM1L=maskl;
			*CANMSGID3H=frameidrh;
			//*CANMSGID3H&=0x4FFF;
			//*CANMSGID3H|=0x4000;
			*CANMSGID3L=frameidrl;
			
			*CANMBX3A=0x0000;
			*CANMBX3B=0x0000;
			*CANMBX3C=0x0000;
			*CANMBX3D=0x0000;
			*CANMCR=0x0480;
			*CANMDER|=0x0088;
			break;
		}
#endif
	}
#endif
}

void can_recv(unsigned int mbxidr,unsigned int *pdatar)//Set in the int routine
{
	switch(mbxidr)
	{
#ifdef _USEMBX0
	case MBX0:
		{
			while(*CANRCR&0x0010==0)continue;
			pdatar[0]=*CANMBX0A;
			pdatar[1]=*CANMBX0B;
			pdatar[2]=*CANMBX0C;
			pdatar[3]=*CANMBX0D;
			*CANRCR=0x0010;
			break;
		}
#endif
		
#ifdef _USEMBX1
	case MBX1:
		{
			while(*CANRCR&0x0020==0)continue;
			pdatar[0]=*CANMBX1A;
			pdatar[1]=*CANMBX1B;
			pdatar[2]=*CANMBX1C;
			pdatar[3]=*CANMBX1D;
			*CANRCR=0x0020;
			break;
		}
#endif
		
#ifdef _USEMBX2
	case MBX2:
		{
			while(*CANRCR&0x0040==0)continue;
			pdatar[0]=*CANMBX2A;
			pdatar[1]=*CANMBX2B;
			pdatar[2]=*CANMBX2C;
			pdatar[3]=*CANMBX2D;
			*CANRCR=0x0040;
			break;
		}
#endif
		
#ifdef _USEMBX3
	case MBX3:
		{
			while(*CANRCR&0x0080==0)continue;
			pdatar[0]=*CANMBX3A;
			pdatar[1]=*CANMBX3B;
			pdatar[2]=*CANMBX3C;
			pdatar[3]=*CANMBX3D;
			*CANRCR=0x0080;
			break;
		}
#endif
	}
}
#endif

/////////////////////////////////////////////////////////////////////////////////////////timer
#ifdef _USETIMER

#ifdef _USET1
#define T1 48
#endif

#ifdef _USET2
#define T2 49
#endif

#ifdef _USET3
#define T3 50
#endif

#ifdef _USET4
#define T4 51
#endif

void init_timer(unsigned int timer,unsigned int p/*cycle p*/,int adc)
{
	switch(timer)
	{
#ifdef _USET1
	case T1:
		{
			if(adc)
				*GPTCONA|=0x0100;
			*EVAIMRA|=0x0080;
			*EVAIFRA&=0x0080;
			*T1CON=0xF60C;
			*T1PR=p;
			*T1CNT=0x0000;
			break;
		}
#endif
		
#ifdef _USET2
	case T2:
		{
			if(adc)
				*GPTCONA|=0x0400;
			*EVAIMRB|=0x0001;
			*EVAIFRB&=0x0001;
			*T2CON=0xF60C;
			*T2PR=p;
			*T2CNT=0x0000;
			break;
		}
#endif
		
#ifdef _USET3
	case T3:
		{
			if(adc)
				*GPTCONB|=0x0100;
			*EVBIMRA|=0x0080;
			*EVBIFRA&=0x0080;
			*T3CON=0xF60C;
			*T3PR=p;
			*T3CNT=0x0000;
			break;
		}
#endif
		
#ifdef _USET4
	case T4:
		{
			if(adc)
				*GPTCONB|=0x0400;
			*EVBIMRB|=0x0001;
			*EVBIFRB&=0x0001;
			*T4CON=0xF60C;
			*T4PR=p;
			*T4CNT=0x0000;
			break;
		}
#endif
	}
}

void start_t(unsigned int timer)
{
	switch(timer)
	{
#ifdef _USET1
	case T1:
		*T1CON|=0x0040;
		break;
#endif
		
#ifdef _USET2
	case T2:
		*T2CON|=0x0040;
		break;
#endif
		
#ifdef _USET3
	case T3:
		*T3CON|=0x0040;
		break;
#endif
		
#ifdef _USET4
	case T4:
		*T4CON|=0x0040;
		break;
#endif
	}
}
#endif

#ifdef _USERS232

void rs232init(unsigned int sysclk)
{
    unsigned int uWork;
    unsigned int BRR;
    unsigned long int tmp1,tmp2;
    uWork=*MCRA;
	uWork|=0x03;		/* use SCITXD,SCIRXD */
	*MCRA=uWork;
	*SCICCR=0x07;		/* 8位字符,1停止位,无校验*/
	*SCICTL1=0x03;	/* 使能发送和接收 */
	*SCICTL2=0x00; 	/* 禁止接收和发送中断 */
	tmp1=sysclk*10000;
	tmp2=96*8;
	BRR=tmp1/tmp2-1;    /* 波特率,32MHz 8字 */
	*SCIHBAUD=(BRR&0xFF00)>>8;
	*SCILBAUD=BRR&0x00FF;
	*SCICTL1=0x23;	 /* 使能发送和接收,复位SCI */
}

void rs232send(unsigned char *prtxdata,unsigned int nSize,unsigned int nDelay)
{    
	unsigned int tmp;
	int i;
	DISABLE_INT;
    for (i=0;i<nSize;i++)
	{
		do
		{
			tmp=*SCICTL2;
		}while(tmp&0x00C0!=0x00C0);   /*查询发送*/
		*SCITXBUF=*(prtxdata+i);
		delay(nDelay);
	}
	ENABLE_INT;
}

#endif

#ifdef _USESPI

void init_spi(int IsMaster/*主从模式*/,int IsUpTrigger/*触发模式*/,int spibrr/*波特率*/,int BitLen/*发送字长*/,int intlevel)
{
	if(IsUpTrigger)
		*SPICCR=0x0F&BitLen;
	else
	{
		*SPICCR=0x0F&BitLen;
		*SPICCR|=0x40;
	}

	if(IsMaster)
		*SPICTL=0x0017;
	else *SPICTL=0x0013;

	*SPIBRR=spibrr;
	*MCRB|=0x003C;
	//*MCRC&=0xFFFE;
    if(intlevel==INT1)
		*SPIPRI=0xBF;
	if(intlevel==INT5)
		*SPIPRI=0xFF;
	*SPICCR|=0x80;
}

void spi_send(int txbuf)
{
	int flag;
	*SPITXBUF=txbuf;
	while(1)
	{
		flag=*SPISTS&0x40;
		if(flag==0x40)break;
	}
	*SPIRXBUF=*SPIRXBUF;
}

int get_spi_rxbuf()
{
	int rxbuf;
	rxbuf=*SPIRXBUF;
	return rxbuf;
}

#endif

#endif

⌨️ 快捷键说明

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