📄 2407user.h
字号:
#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 + -