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

📄 ioport2程序.txt

📁 dsp中的扩展io口的算法
💻 TXT
字号:
#define IER0          *(int *)0x00 
#define IFR0          *(int *)0x01 
#define ST0_55        *(int *)0x02 
#define ST1_55        *(int *)0x03 
#define ST3_55        *(int *)0x04 
#define ST0           *(int *)0x06 
#define ST1           *(int *)0x07 
#define AC0L          *(int *)0x08 
#define AC0H          *(int *)0x09 
#define AC0G          *(int *)0x0A 
#define AC1L          *(int *)0xOB 
#define AC1H          *(int *)0x0C 
#define AC1G          *(int *)0x0D 
#define T3_1          *(int *)0x0E 
#define TRN0          *(int *)0x0F
#define AR0           *(int *)0x10 
#define AR1           *(int *)0x11 
#define AR2           *(int *)0x12 
#define AR3           *(int *)0x13 
#define AR4           *(int *)0x14 
#define AR5           *(int *)0x15 
#define AR6           *(int *)0x16 
#define AR7           *(int *)0x17 
#define SP            *(int *)0x18 
#define BK03          *(int *)0x19 
#define BRC0          *(int *)0x1A 
#define RSA0L         *(int *)0x1B 
#define REA0L         *(int *)0x1C 
#define PMST          *(int *)0x1D 
#define XPC           *(int *)0x1E 
#define T0            *(int *)0x20 
#define T1            *(int *)0x21 
#define T2            *(int *)0x22 
#define T3            *(int *)0x23 
#define AC2L          *(int *)0x24 
#define AC2H          *(int *)0x25 
#define AC2G          *(int *)0x26 
#define CDP          *(int *)0x27
#define AC3L         *(int *)0x28
#define AC3H         *(int *)0x29
#define AC3G         *(int *)0x2A
#define DPH          *(int *)0x2B
#define MDP05        *(int *)0x2C
#define MDP67        *(int *)0x2D
#define DP           *(int *)0x2E
#define PDP          *(int *)0x2F
#define BK47         *(int *)0x30
#define BKC          *(int *)0x31
#define BSA01        *(int *)0x32
#define BSA23        *(int *)0x33
#define BSA45        *(int *)0x34
#define BSA67        *(int *)0x35
#define BSAC         *(int *)0x36
#define BIOS         *(int *)0x37
#define TRN1         *(int *)0x38
#define BRC1         *(int *)0x39
#define BRS1         *(int *)0x3A
#define CSR          *(int *)0x3B
#define RSA0H_1      *(int *)0x3C
#define RSA0L_1      *(int *)0x3D
#define REA0H        *(int *)0x3E
#define REA0L_2      *(int *)0x3F
#define RSA1H        *(int *)0x40
#define RSA1L        *(int *)0x41
#define REA1H        *(int *)0x42
#define REA1L        *(int *)0x43
#define RPTC         *(int *)0x44
#define IER1         *(int *)0x45
#define IFR1         *(int *)0x46
#define DBIER0       *(int *)0x47
#define DBIER1       *(int *)0x48
#define IVPD         *(int *)0x49
#define IVPH         *(int *)0x4A
#define ST2_55       *(int *)0x4B
#define SSP          *(int *)0x4C
#define SP_1         *(int *)0x4D
#define SPH          *(int *)0x4E
#define CDPH         *(int *)0x4F





#define LED *(int *)0x400001





void interrupt tint( void );
void CLK_init( void );
void SDRAM_init( void );
void INTR_init( void );
void TIME_init(void);
void TMCR_Reset( void );
void SetDSPPLL(unsigned int uPLL);






#define SCANCODE_0 0x70
#define SCANCODE_1 0x69
#define SCANCODE_2 0x72
#define SCANCODE_3 0x7A
#define SCANCODE_4 0x6B
#define SCANCODE_5 0x73
#define SCANCODE_6 0x74
#define SCANCODE_7 0x6C
#define SCANCODE_8 0x75
#define SCANCODE_9 0x7D
#define SCANCODE_Del 0x49
#define SCANCODE_Enter 0x5A
#define SCANCODE_Plus 0x79
#define SCANCODE_Minus 0x7B
#define SCANCODE_Mult 0x7C
#define SCANCODE_Divid 0x4A
#define SCANCODE_Num 0x77





// emif  --------------------------------------------------------
/*
#define EMIF_GCTL       0x01800000
#define EMIF_CE1        0x01800004
#define EMIF_CE0        0x01800008
#define EMIF_CE2        0x01800010
#define EMIF_CE3        0x01800014
#define EMIF_SDRAMCTL   0x01800018
#define EMIF_SDRAMTIM   0x0180001C
#define EMIF_SDRAMEXT   0x01800020
#define EMIF_CCFG       0x01840000;
*/
// interrupt  --------------------------------------------------
/*
#define IMH (*(unsigned int *)0x19c0000)
#define IML (*(unsigned int *)0x19c0004)
*/
// timer  -------------------------------------------------------
/*
#define TIMER1CTL (*(unsigned int *)0x01980000)
#define TIMER1PRD (*(unsigned int *)0x01980004)
*/
// McBSP0  ------------------------------------------------------
/*
#define SPCR0 (*(unsigned int *)0x018c0008)
#define PCR0 (*(unsigned int *)0x018c0024)
#define SPCR1 (*(unsigned int *)0x01900008)
#define PCR1 (*(unsigned int *)0x01900024)
*/
// ICETEK-VC5509-A -----------------------------------------------
#define LBDS (*((unsigned int *)0x400001))
#define DIPS (*(unsigned int *)0x400002)
// ICETEK-CTR  --------------------------------------------------
#define CTRGR (*(unsigned int *)0x600800)
#define CTRKEY (*(unsigned int *)0x602800)
#define CTRCLKEY (*(unsigned int *)0x602801)
#define CTRLA (*(unsigned int *)0x602802)
#define CTRLR (*(unsigned int *)0x602803)
#define CTRLCDCMDR (*(unsigned int *)0x602800)
#define CTRLCDCR (*(unsigned int *)0x600801)
#define CTRLCDLCR (*(unsigned int *)0x602801)
#define CTRLCDRCR (*(unsigned int *)0x600802)
// Special values -----------------------------------------------
#define LCDCMDTURNON 0x3f
#define LCDCMDTURNOFF 0x3e
#define LCDCMDSTARTLINE 0xc0
#define LCDCMDPAGE 0xb8
#define LCDCMDVERADDRESS 0x40
// C6713DSP Registers  ------------------------------------------
//cregister unsigned int IER,IFR,CSR,ICR,ISTP;

// Variables
unsigned char ledbuf[8],ledx[8];
unsigned char ledkey[10][8]=
{
	{0x00,0x00,0x7C,0x82,0x82,0x82,0x7C,0x00},	//0
	{0x00,0x00,0x00,0x84,0xFE,0x80,0x00,0x00},	//1
	{0x00,0x00,0x84,0xC2,0xA2,0x92,0x8C,0x00},	//2
	{0x00,0x00,0x44,0x92,0x92,0x92,0x6C,0x00},
	{0x00,0x00,0x30,0x28,0x24,0xFE,0x20,0x00},
	{0x00,0x00,0x4E,0x92,0x92,0x92,0x62,0x00},
	{0x00,0x00,0x7C,0x92,0x92,0x92,0x64,0x00},
	{0x00,0x00,0x02,0xC2,0x32,0x0A,0x06,0x00},
	{0x00,0x00,0x6C,0x92,0x92,0x92,0x6C,0x00},
	{0x00,0x00,0x4C,0x92,0x92,0x92,0x7C,0x00}
};
#define nMusicNumber 52
unsigned int music[nMusicNumber][2]=
{
	{101,1920},{121,1440},{114,480},{101,1920},{151,1920},
	{151,480},{135,480},{121,480},{101,480},{114,960},{121,960},{135,3840},
	{121,480},{114,480},{101,480},{91,480},{101,960},{101,960},
	{76,1920},{101,1920},{114,960},{121,960},{135,1440},{151,480},{151,1920},{0,1920},
	{101,1920},{121,1440},{114,480},{101,1920},{151,1920},
	{151,480},{135,480},{121,480},{101,480},{114,960},{121,960},{135,3840},
	{121,480},{114,480},{101,480},{91,480},{101,960},{101,960},
	{76,1920},{101,1920},{114,960},{121,960},{135,1440},{151,480},{151,1920},{0,1920}
};
unsigned int pwm[8]={ 0x86,0x87,0x83,0x8b,0x89,0x8d,0x8c,0x8e };
unsigned char dbClearKey;

// Functions
void InitInterrupt(void);			// 初始化中断
void InitCTR();						// 初始化ICETEK-CTR
void CloseCTR();					// 关闭ICETEK-CTR上各设备
void Delay(unsigned int nTime);		// 延时子程序
void Delay1(unsigned int nTime);	// 延时子程序(带LED显示刷新)
unsigned char GetKey();				// 读取键盘输入
void RefreshLEDArray();				// 刷新发光二极管阵列显示
void SetLEDArray(int nNumber);		// 修改发光二极管阵列显示内容
char ConvertScanToChar(unsigned char cScanCode);	// 将键盘扫描码转换成字符
void LCDCMD(unsigned char dbCommand);	// 向液晶显示器发送命令
void LCDWriteLeft(unsigned char dbData);	// 写液晶显示器左半屏
void LCDCLS();							// 清除液晶显示器显示
void TurnOnLCD();						// 打开液晶显示器

void CloseCTR()
{
    CTRGR=0; 				 
    CTRLR=0; CTRLR=0x40;
    CTRLR=0x0c0;
	LCDCMD(LCDCMDTURNOFF);	
	dbClearKey=CTRCLKEY;
	LBDS=0;
}

void LCDCMD(unsigned char dbCommand)
{
	CTRLCDCMDR=dbCommand;		
	CTRLCDCR=0;
}

unsigned char GetKey()
{
	unsigned char dbReturn;
	
	dbReturn=CTRKEY;
	dbClearKey=CTRCLKEY;
	return dbReturn;
}

char ConvertScanToChar(unsigned char cScanCode)
{
	char cReturn;
	
	cReturn=0;
	switch ( cScanCode )
	{
		case SCANCODE_0: cReturn='0'; break;
		case SCANCODE_1: cReturn='1'; break;
		case SCANCODE_2: cReturn='2'; break;
		case SCANCODE_3: cReturn='3'; break;
		case SCANCODE_4: cReturn='4'; break;
		case SCANCODE_5: cReturn='5'; break;
		case SCANCODE_6: cReturn='6'; break;
		case SCANCODE_7: cReturn='7'; break;
		case SCANCODE_8: cReturn='8'; break;
		case SCANCODE_9: cReturn='9'; break;
		case SCANCODE_Plus: cReturn='+'; break;
		case SCANCODE_Minus: cReturn='-'; break;
	}
	return cReturn;
}

void InitCTR()
{
    CTRGR=0; CTRGR=0x80; CTRGR=0;
    CTRLR=0; CTRLR=0x40;
    CTRLR=0x0c0;
	LCDCMD(LCDCMDTURNOFF);	
	dbClearKey=CTRCLKEY;
	LBDS=0;
}

void Delay(unsigned int nDelay)
{
	int ii,jj,kk=0;
	for ( ii=0;ii<nDelay;ii++ )
	{
		for ( jj=0;jj<1024;jj++ )
		{
			kk++;
		}
	}
}

void Delay1(unsigned int nDelay)
{
	int ii,jj,kk=0;
	for ( ii=0;ii<nDelay;ii++ )
	{
		for ( jj=0;jj<64;jj++ )
		{
			RefreshLEDArray();
			kk++;
		}
	}
}

void RefreshLEDArray()
{
	int i;
	for ( i=0;i<8;i++ )
	{
		CTRGR=ledx[i];
		CTRLA=ledbuf[i];
	}
}

void SetLEDArray(int nNumber)
{
	int i;
	for ( i=0;i<8;i++ )
		ledbuf[i]=~ledkey[nNumber][7-i];
}

void LCDWriteLeft(unsigned char dbData)
{
	CTRLCDLCR=dbData;
	CTRLCDCR=0;
}

void LCDWriteRight(unsigned char dbData)
{
	CTRLCDRCR=dbData;
	CTRLCDCR=0;
}

void TurnOnLCD()
{
	LCDCMD(LCDCMDTURNON);
}

void LCDCLS()
{
	int i,j;
	LCDCMD(LCDCMDSTARTLINE);
	for ( i=0;i<8;i++ )
	{
		LCDCMD(LCDCMDPAGE+i);
		LCDCMD(LCDCMDVERADDRESS);
		for ( j=0;j<64;j++ )
			LCDWriteLeft(0);
		LCDCMD(LCDCMDPAGE+i);
		LCDCMD(LCDCMDVERADDRESS);
		for ( j=0;j<64;j++ )
			LCDWriteRight(0);
	}
}






#define SCANCODE_0 0x70
#define SCANCODE_1 0x69
#define SCANCODE_2 0x72
#define SCANCODE_3 0x7A
#define SCANCODE_4 0x6B
#define SCANCODE_5 0x73
#define SCANCODE_6 0x74
#define SCANCODE_7 0x6C
#define SCANCODE_8 0x75
#define SCANCODE_9 0x7D
#define SCANCODE_Del 0x49
#define SCANCODE_Enter 0x5A
#define SCANCODE_Plus 0x79
#define SCANCODE_Minus 0x7B
#define SCANCODE_Mult 0x7C
#define SCANCODE_Divid 0x4A
#define SCANCODE_Num 0x77





main()
{
	unsigned int uLED[4]={1,2,4,8};            //1=0001h,2=0010h,4=0100h,8=1000h
	int i;
	
	CLK_init();
	SDRAM_init();
	while ( 1 )
	{
		for ( i=0;i<4;i++ )
		{
			LBDS=uLED[i];
			Delay(1024);
		}
		for ( i=3;i>=0;i-- )
		{
			LBDS=uLED[i];
			Delay(1024);
		}
	}
}

void CLK_init()
{
   ioport unsigned int *clkmd;
   clkmd=(unsigned int *)0x1c00;
   *clkmd =0x2033;	// 0x2033就是工作频率不变;//0x2413;// 144MHz=0x2613
}

void SDRAM_init( void )
{      
    ioport unsigned int *ebsr  =(unsigned int *)0x6c00;
    ioport unsigned int *egcr  =(unsigned int *)0x800;
    ioport unsigned int *emirst=(unsigned int *)0x801;
    //ioport unsigned int *emibe =(unsigned int *)0x802;  
    ioport unsigned int *ce01  =(unsigned int *)0x803;
    //ioport unsigned int *ce02  =(unsigned int *)0x804;
    //ioport unsigned int *ce03  =(unsigned int *)0x805;
    ioport unsigned int *ce11  =(unsigned int *)0x806;
    //ioport unsigned int *ce12  =(unsigned int *)0x807;
    //ioport unsigned int *ce13  =(unsigned int *)0x808;
    ioport unsigned int *ce21  =(unsigned int *)0x809;
    //ioport unsigned int *ce22  =(unsigned int *)0x80A;
    //ioport unsigned int *ce23  =(unsigned int *)0x80B;
    ioport unsigned int *ce31  =(unsigned int *)0x80C;
    //ioport unsigned int *ce32  =(unsigned int *)0x80D;
    //ioport unsigned int *ce33  =(unsigned int *)0x80E;
    ioport unsigned int *sdc1  =(unsigned int *)0x80F;
    //ioport unsigned int *sdper =(unsigned int *)0x810;
    //ioport unsigned int *sdcnt =(unsigned int *)0x811;
    ioport unsigned int *init  =(unsigned int *)0x812;
    ioport unsigned int *sdc2  =(unsigned int *)0x813;
    *ebsr   = 0x221;
    *egcr   = 0x220;
    *egcr   = 0x220;
    *ce01   = 0x3000;
    *ce11   = 0x1fff;
    *ce21   = 0x1fff;
    *ce31   = 0x1fff;
    *emirst = 0;
    *sdc1   = 0x5958;
    *sdc2   = 0x38F;
    *init   = 0;
}     

⌨️ 快捷键说明

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