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

📄 2407user.h

📁 前段时间做的DSP开发项目
💻 H
📖 第 1 页 / 共 3 页
字号:
#ifndef _2407USER
#define _2407USER

#include "2407c.h"

//////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                          //
//                       //*General definitions and extension functions*//                  //
//                                                                                          //
//                                                                                          //
//////////////////////////////////////////////////////////////////////////////////////////////

#define ENABLE_INT asm(" clrc INTM")
#define DISABLE_INT asm(" setc INTM")

#define HIBYTE(h) (/*(char)*/(/*(int)*/(h>>8)&0x00FF))
#define LOBYTE(l) (/*(char)*//*(int)*/(l)&0x00FF))

#define INT1 0x0001
#define INT2 0x0002
#define INT3 0x0004
#define INT4 0x0008
#define INT5 0x0010
#define INT6 0x0020

//////////////////////////////////////////////////////////////////////////////////System init
void common_init_system(unsigned int intlevel/*set 0 to enable all int*/,unsigned int mul/*set 0 for 1.33*/)
{
	DISABLE_INT;
	asm(" setc SXM");
	asm(" clrc OVM");
	asm(" clrc CNF");
	if(intlevel==0)
		*IMR|=0x003F;
	else
		*IMR|=intlevel;
	*IFR=0xFFFF;
	*WDCR=0xE8;
	switch(mul)
	{
	case 4:
		*SCSR1=0x81FE;
		break;
	case 2:
		*SCSR1=0x83FE;
		break;
	case 1:
		*SCSR1=0x87FE;
		break;
	case 0:
		*SCSR1=0x85FE;
		break;
	}
	ENABLE_INT;
}

///////////////////////////////////////////////////////////////////////////////Delay function
void delay(long int n)
{
	int i,k;
	long int j;
	for (j=1;j<=n;j++)
		for (i=0;i<64;i++)k=0;
}

/////////////////////////////////////////////////////////////////////////////////////IO Port
#ifdef _USEIOPA0
#define IOPA0 0
#endif

#ifdef _USEIOPA1
#define IOPA1 1
#endif

#ifdef _USEIOPA2
#define IOPA2 2
#endif

#ifdef _USEIOPA3
#define IOPA3 3
#endif

#ifdef _USEIOPA4
#define IOPA4 4
#endif

#ifdef _USEIOPA5
#define IOPA5 5
#endif

#ifdef _USEIOPA6
#define IOPA6 6
#endif

#ifdef _USEIOPA7
#define IOPA7 7
#endif

#ifdef _USEIOPB0
#define IOPB0 8
#endif

#ifdef _USEIOPB1
#define IOPB1 9
#endif

#ifdef _USEIOPB2
#define IOPB2 10
#endif

#ifdef _USEIOPB3
#define IOPB3 11
#endif

#ifdef _USEIOPB4
#define IOPB4 12
#endif

#ifdef _USEIOPB5
#define IOPB5 13
#endif

#ifdef _USEIOPB6
#define IOPB6 14
#endif

#ifdef _USEIOPB7
#define IOPB7 15
#endif

#ifdef _USEIOPC0
#define IOPC0 16
#endif

#ifdef _USEIOPC1
#define IOPC1 17
#endif

#ifdef _USEIOPC2
#define IOPC2 18
#endif

#ifdef _USEIOPC3
#define IOPC3 19
#endif

#ifdef _USEIOPC4
#define IOPC4 20
#endif

#ifdef _USEIOPC5
#define IOPC5 21
#endif

#ifdef _USEIOPC6
#define IOPC6 22
#endif

#ifdef _USEIOPC7
#define IOPC7 23
#endif

#ifdef _USEIOPD0
#define IOPD0 24
#endif

#ifdef _USEIOPE0
#define IOPE0 25
#endif

#ifdef _USEIOPE1
#define IOPE1 26
#endif

#ifdef _USEIOPE2
#define IOPE2 27
#endif

#ifdef _USEIOPE3
#define IOPE3 28
#endif

#ifdef _USEIOPE4
#define IOPE4 29
#endif

#ifdef _USEIOPE5
#define IOPE5 30
#endif

#ifdef _USEIOPE6
#define IOPE6 31
#endif

#ifdef _USEIOPE7
#define IOPE7 32
#endif

#ifdef _USEIOPF0
#define IOPF0 33
#endif

#ifdef _USEIOPF1
#define IOPF1 34
#endif

#ifdef _USEIOPF2
#define IOPF2 35
#endif

#ifdef _USEIOPF3
#define IOPF3 36
#endif

#ifdef _USEIOPF4
#define IOPF4 37
#endif

#ifdef _USEIOPF5
#define IOPF5 38
#endif

#ifdef _USEIOPF6
#define IOPF6 39
#endif

#define IO_NONE 40

////////////////////////////////////////////////////////////////////////IO port init function
void init_ioport(unsigned int port)
{
	switch(port)
	{
		//IOPA
#ifdef _USEIOPA0
	case IOPA0:
		{
			*MCRA=*MCRA&0xFFFE;
			break;
		}
#endif

#ifdef _USEIOPA1
    case IOPA1:
		{
			*MCRA=*MCRA&0xFFFD;
			break;
		}
#endif

#ifdef _USEIOPA2
    case IOPA2:
		{
			*MCRA=*MCRA&0xFFFB;
			break;
		}
#endif

#ifdef _USEIOPA3
    case IOPA3:
		{
			*MCRA=*MCRA&0xFFF7;
			break;
		}
#endif

#ifdef _USEIOPA4
    case IOPA4:
		{
			*MCRA=*MCRA&0xFFEF;
			break;
		}
#endif

#ifdef _USEIOPA5
    case IOPA5:
		{
			*MCRA=*MCRA&0xFFDF;
			break;
		}
#endif

#ifdef _USEIOPA6
    case IOPA6:
		{
			*MCRA=*MCRA&0xFFBF;
			break;
		}
#endif

#ifdef _USEIOPA7
    case IOPA7:
		{
			*MCRA=*MCRA&0xFF7F;
			break;
		}
#endif
		//IOPB
#ifdef _USEIOPB0
	case IOPB0:
		{
			*MCRA=*MCRA&0xFEFF;
			break;
		}
#endif

#ifdef _USEIOPB1		
	case IOPB1:
		{
			*MCRA=*MCRA&0xFDFF;
			break;
		}
#endif

#ifdef _USEIOPB2
	case IOPB2:
		{
			*MCRA=*MCRA&0xFBFF;
			break;
		}
#endif

#ifdef _USEIOPB3
	case IOPB3:
		{
			*MCRA=*MCRA&0xF7FF;
			break;
		}
#endif

#ifdef _USEIOPB4
	case IOPB4:
		{
			*MCRA=*MCRA&0xEFFF;
			break;
		}
#endif

#ifdef _USEIOPB5
	case IOPB5:
		{
			*MCRA=*MCRA&0xDFFF;
			break;
		}
#endif

#ifdef _USEIOPB6
	case IOPB6:
		{
			*MCRA=*MCRA&0xBFFF;
			break;
		}
#endif

#ifdef _USEIOPB7
	case IOPB7:
		{
			*MCRA=*MCRA&0x7FFF;
			break;
		}
#endif
		//IOPC
#ifdef _USEIOPC0
	case IOPC0:
		{
			*MCRB=*MCRB&0xFFFE;
			break;
		}
#endif

#ifdef _USEIOPC1
	case IOPC1:
		{
			*MCRB=*MCRB&0xFFFD;
			break;
		}
#endif

#ifdef _USEIOPC2
	case IOPC2:
		{
			*MCRB=*MCRB&0xFFFB;
			break;
		}
#endif

#ifdef _USEIOPC3
	case IOPC3:
		{
			*MCRB=*MCRB&0xFFF7;
			break;
		}
#endif

#ifdef _USEIOPC4
	case IOPC4:
		{
			*MCRB=*MCRB&0xFFEF;
			break;
		}
#endif

#ifdef _USEIOPC5
	case IOPC5:
		{
			*MCRB=*MCRB&0xFFDF;
			break;
		}
#endif

#ifdef _USEIOPC6
	case IOPC6:
		{
			*MCRB=*MCRB&0xFFBF;
			break;
		}
#endif

#ifdef _USEIOPC7
	case IOPC7:
		{
			*MCRB=*MCRB&0xFF7F;
			break;
		}
#endif
		//IOPD
#ifdef _USEIOPD0
	case IOPD0:
		{
			*MCRB=*MCRB&0xFEFF;
			break;
		}
#endif
		//IOPE
#ifdef _USEIOPE0
	case IOPE0:
		{
			*MCRC=*MCRC&0xFFFE;
			break;
		}
#endif

#ifdef _USEIOPE1
	case IOPE1:
		{
			*MCRC=*MCRC&0xFFFD;
			break;
		}
#endif

#ifdef _USEIOPE2
	case IOPE2:
		{
			*MCRC=*MCRC&0xFFFB;
			break;
		}
#endif

#ifdef _USEIOPE3
	case IOPE3:
		{
			*MCRC=*MCRC&0xFFF7;
			break;
		}
#endif

#ifdef _USEIOPE4
	case IOPE4:
		{
			*MCRC=*MCRC&0xFFEF;
			break;
		}
#endif

#ifdef _USEIOPE5
	case IOPE5:
		{
			*MCRC=*MCRC&0xFFDF;
			break;
		}
#endif

#ifdef _USEIOPE6
	case IOPE6:
		{
			*MCRC=*MCRC&0xFFBF;
			break;
		}
#endif

#ifdef _USEIOPE7
	case IOPE7:
		{
			*MCRC=*MCRC&0xFF7F;
			break;
		}
#endif
		//IOPF
#ifdef _USEIOPF0
	case IOPF0:
		{
			*MCRC=*MCRC&0xFEFF;
			break;
		}
#endif

#ifdef _USEIOPF1
	case IOPF1:
		{
			*MCRC=*MCRC&0xFDFF;
			break;
		}
#endif

#ifdef _USEIOPF2
	case IOPF2:
		{
			*MCRC=*MCRC&0xFBFF;
			break;
		}
#endif

#ifdef _USEIOPF3
	case IOPF3:
		{
			*MCRC=*MCRC&0xF7FF;
			break;
		}
#endif

#ifdef _USEIOPF4
	case IOPF4:
		{
			*MCRC=*MCRC&0xEFFF;
			break;
		}
#endif

#ifdef _USEIOPF5
	case IOPF5:
		{
			*MCRC=*MCRC&0xDFFF;
			break;
		}
#endif

#ifdef _USEIOPF6
	case IOPF6:
		{
			*MCRC=*MCRC&0xBFFF;
			break;
		}
#endif
	}
}

////////////////////////////////////////////////////////////////////////////////////Operate IO
void io_out1(unsigned int portnameout1)
{
	unsigned int tmp;
	
	switch(portnameout1)
	{
		//IOPA
#ifdef _USEIOPA0
	case IOPA0:
		{
			tmp=*PADATDIR;
			tmp|=0x0100;
			tmp|=0x0001; 
			*PADATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPA1
    case IOPA1:
		{
			tmp=*PADATDIR;
			tmp|=0x0200;
			tmp|=0x0002; 
			*PADATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPA2
    case IOPA2:
		{
			tmp=*PADATDIR;
			tmp|=0x0400;
			tmp|=0x0004; 
			*PADATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPA3
    case IOPA3:
		{
			tmp=*PADATDIR;
			tmp|=0x0800;
			tmp|=0x0008; 
			*PADATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPA4
    case IOPA4:
		{
			tmp=*PADATDIR;
			tmp|=0x1000;
			tmp|=0x0010; 
			*PADATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPA5
    case IOPA5:
		{
			tmp=*PADATDIR;
			tmp|=0x2000;
			tmp|=0x0020; 
			*PADATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPA6
    case IOPA6:
		{
			tmp=*PADATDIR;
			tmp|=0x4000;
			tmp|=0x0040; 
			*PADATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPA7
    case IOPA7:
		{
			tmp=*PADATDIR;
			tmp|=0x8000;
			tmp|=0x0080; 
			*PADATDIR=tmp;
			break;
		}
#endif
		//IOPB
#ifdef _USEIOPB0
	case IOPB0:
		{
			tmp=*PBDATDIR;
			tmp|=0x0100;
			tmp|=0x0001; 
			*PBDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPB1
	case IOPB1:
		{
			tmp=*PBDATDIR;
			tmp|=0x0200;
			tmp|=0x0002; 
			*PBDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPB2
	case IOPB2:
		{
			tmp=*PBDATDIR;
			tmp|=0x0400;
			tmp|=0x0004;
			*PBDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPB3
	case IOPB3:
		{
			tmp=*PBDATDIR;
			tmp|=0x0800;
			tmp|=0x0008; 
			*PBDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPB4
	case IOPB4:
		{
			tmp=*PBDATDIR;
			tmp|=0x1000;
			tmp|=0x0010; 
			*PBDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPB5
	case IOPB5:
		{
			tmp=*PBDATDIR;
			tmp|=0x2000;
			tmp|=0x0020; 
			*PBDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPB6
	case IOPB6:
		{
			tmp=*PBDATDIR;
			tmp|=0x4000;
			tmp|=0x0040; 
			*PBDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPB7
	case IOPB7:
		{
			tmp=*PBDATDIR;
			tmp|=0x8000;
			tmp|=0x0080; 
			*PBDATDIR=tmp;
			break;
		}
#endif
		//IOPC
#ifdef _USEIOPC0
	case IOPC0:
		{
			tmp=*PCDATDIR;
			tmp|=0x0100;
			tmp|=0x0001; 
			*PCDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPC1
	case IOPC1:
		{
			tmp=*PCDATDIR;
			tmp|=0x0200;
			tmp|=0x0002; 
			*PCDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPC2
	case IOPC2:
		{
			tmp=*PCDATDIR;
			tmp|=0x0400;
			tmp|=0x0004;
			*PCDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPC3
	case IOPC3:
		{
			tmp=*PCDATDIR;
			tmp|=0x0800;
			tmp|=0x0008; 
			*PCDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPC4
	case IOPC4:
		{
			tmp=*PCDATDIR;
			tmp|=0x1000;
			tmp|=0x0010; 
			*PCDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPC5
	case IOPC5:
		{
			tmp=*PCDATDIR;
			tmp|=0x2000;
			tmp|=0x0020; 
			*PCDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPC6
	case IOPC6:
		{
			tmp=*PCDATDIR;
			tmp|=0x4000;
			tmp|=0x0040;  
			*PCDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPC7
	case IOPC7:
		{
			tmp=*PCDATDIR;
			tmp|=0x8000;
			tmp|=0x0080; 
			*PCDATDIR=tmp;
			break;
		}
#endif
		//IOPD
#ifdef _USEIOPD0
	case IOPD0:
		{
			tmp=*PDDATDIR;
			tmp|=0x0100;
			tmp|=0x0001; 
			*PDDATDIR=tmp;
			break;
		}
#endif
		//IOPE
#ifdef _USEIOPE0
	case IOPE0:
		{
			tmp=*PEDATDIR;
			tmp|=0x0100;
			tmp|=0x0001; 
			*PEDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPE1
	case IOPE1:
		{
			tmp=*PEDATDIR;
			tmp|=0x0200;
			tmp|=0x0002; 
			*PEDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPE2
	case IOPE2:
		{
			tmp=*PEDATDIR;
			tmp|=0x0400;
			tmp|=0x0004;
			*PEDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPE3
	case IOPE3:
		{
			tmp=*PEDATDIR;
			tmp|=0x0800;
			tmp|=0x0008; 
			*PEDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPE4
	case IOPE4:
		{
			tmp=*PEDATDIR;
			tmp|=0x1000;
			tmp|=0x0010;  
			*PEDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPE5
	case IOPE5:
		{
			tmp=*PEDATDIR;
			tmp|=0x2000;
			tmp|=0x0020;  
			*PEDATDIR=tmp;
			break;
		}

#endif

#ifdef _USEIOPE6
	case IOPE6:
		{
			tmp=*PEDATDIR;
			tmp|=0x4000;
			tmp|=0x0040;
			*PEDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPE7
	case IOPE7:
		{
			tmp=*PEDATDIR;
			tmp|=0x8000;
			tmp|=0x0080; 
			*PEDATDIR=tmp;
			break;
		}
#endif
		//IOPF
#ifdef _USEIOPF0
	case IOPF0:
		{
			tmp=*PFDATDIR;
			tmp|=0x0100;
			tmp|=0x0001; 
			*PFDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPF1		
	case IOPF1:
		{
			tmp=*PFDATDIR;
			tmp|=0x0200;
			tmp|=0x0002; 
			*PFDATDIR=tmp;
			break;
		}
#endif

#ifdef _USEIOPF2
	case IOPF2:
		{
			tmp=*PFDATDIR;
			tmp|=0x0400;

⌨️ 快捷键说明

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