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

📄 54xx.h

📁 一个完整的C语言构架的串行口通信的源程序
💻 H
字号:
/*****************************************************************************/
/* 54xx.h   v1.00                                                            */
/* Copyright (c) 2004	8511                    							 */
/*****************************************************************************/
/*C54 映射寄存器定义.H*/
/*地址定义*/
extern volatile unsigned ST0;	/* status0 register */
asm("_ST0 .set 0x6");	

extern volatile unsigned ST1;	/* status1 register */
asm("_ST1 .set 0x7");

extern volatile unsigned PMST;	/* processor mode status register */
asm("_PMST .set 0x1D");

extern volatile unsigned IMR;	/* interrupt mask register */
asm("_IMR .set 0x0");

extern volatile unsigned IFR;	/* interrtupt flag register */
asm("_IFR .set 0x1");

extern volatile unsigned Timer;	/* Timer register */
asm("_Timer .set 0x24");

extern volatile unsigned PRD;	/* Timer period counter */
asm("_PRD .set 0x25");

extern volatile unsigned TCR;	/* Timer control register */
asm("_TCR .set 0x26");

extern volatile unsigned CLKMD;	/* Clkmd control register */
asm("_CLKMD .set 0x58");

extern volatile unsigned SWWSR;	/* software wait-states register */
asm("_SWWSR .set 0x28");

extern volatile unsigned BSCR;	/* Band-switching control register */
asm("_BSCRD .set 0x29");

extern volatile unsigned SWCR;	/* software control wait-states register */
asm("_SWCR .set 0x2b");


/*参数定义*/
/*ST0 状态寄存器0*/
#define ST0_ARP 	(1<<13)
#define ST0_TC		(1<<12)
#define ST0_C		(1<<11)
#define ST0_OVA		(1<<10)
#define ST0_OVB		(1<<9)
#define ST0_DP 		(1<<0)

#define ST0_ARP_INI 0
#define ST0_TC_INI	1
#define ST0_C_INI	1
#define ST0_OVA_INI	0
#define ST0_OVB_INI	0
#define ST0_DP_INI 	0

#define ST0_INI 	(ST0_ARP_INI*ST0_ARP+ST0_TC_INI*ST0_TC+ST0_C_INI*ST0_C+ST0_OVA_INI*ST0_OVA+ST0_OVB_INI*ST0_OVB+ST0_DP_INI*ST0_DP)
/*ST1 状态寄存器1*/
#define ST1_BRAF 	(1<<15)
#define ST1_CPL		(1<<14)
#define ST1_XF		(1<<13)
#define ST1_HM		(1<<12)
#define ST1_INTM	(1<<11)
#define ST1_OVM		(1<<9)
#define ST1_SXM		(1<<8)
#define ST1_C16		(1<<7)
#define ST1_FRCT	(1<<6)
#define ST1_CMPT	(1<<5)
#define ST1_ASM		(1<<0)

#define ST1_BRAF_INI 	0
#define ST1_CPL_INI		1
#define ST1_XF_INI		1
#define ST1_HM_INI		0
#define ST1_INTM_INI	0
#define ST1_OVM_INI		0
#define ST1_SXM_INI		1
#define ST1_C16_INI		0
#define ST1_FRCT_INI	0
#define ST1_CMPT_INI	0
#define ST1_ASM_INI		0

#define ST1_INI 	(ST1_BRAF_INI*ST1_BRAF+ST1_CPL_INI*ST1_CPL+ST1_XF_INI*ST1_XF+ST1_HM_INI*ST1_XF+ST1_INTM_INI*ST1_INTM+ST1_OVM_INI*ST1_OVM+ST1_SXM_INI*ST1_SXM+ST1_C16_INI*ST1_C16+ST1_FRCT_INI*ST1_FRCT+ST1_CMPT_INI*ST1_CMPT+ST1_ASM_INI*ST1_ASM)

/*PMST 处理器模式状态寄存器*/
#define PMST_IPTR 	(1<<7)
#define PMST_MPMC 	(1<<6)
#define PMST_OVLY 	(1<<5)
#define PMST_AVIS 	(1<<4)
#define PMST_DPROM 	(1<<3)
#define PMST_CLKOFF (1<<2)
#define PMST_SMUL 	(1<<1)
#define PMST_SST 	(1<<0)

#define PMST_IPTR_INI 	0x1FF
#define PMST_MPMC_INI 	1	/*此处根据实际值进行修改*/
#define PMST_OVLY_INI 	0
#define PMST_AVIS_INI 	0
#define PMST_DPROM_INI 	1
#define PMST_CLKOFF_INI 0
#define PMST_SMUL_INI 	1
#define PMST_SST_INI 	1

#define PMST_INI	(PMST_IPTR_INI*PMST_IPTR+PMST_MPMC_INI*PMST_MPMC+PMST_OVLY_INI*PMST_OVLY+PMST_AVIS_INI*PMST_AVIS+PMST_DPROM_INI*PMST_DPROM+PMST_CLKOFF_INI*PMST_CLKOFF+PMST_SMUL_INI*PMST_SMUL+PMST_SST_INI*PMST_SST)

/*SWWSR 软件等待寄存器*/
#define SWWSR_XPA 		(1<<15)
#define SWWSR_IO 		(1<<12)
#define SWWSR_DATAH 	(1<<9)
#define SWWSR_DATAL 	(1<<6)
#define SWWSR_PROGH 	(1<<3)
#define SWWSR_PROGL 	(1<<0)

#define SWWSR_XPA_INI 		0
#define SWWSR_IO_INI 		1
#define SWWSR_DATAH_INI 	1
#define SWWSR_DATAL_INI 	1
#define SWWSR_PROGH_INI 	1
#define SWWSR_PROGL_INI 	1

#define SWWSR_INI 	(SWWSR_XPA_INI*SWWSR_XPA+SWWSR_IO_INI*SWWSR_IO+SWWSR_DATAH_INI*SWWSR_DATAH+SWWSR_DATAL_INI*SWWSR_DATAL+SWWSR_PROGH_INI*SWWSR_PROGH+SWWSR_PROGL_INI*SWWSR_PROGL)

/*SWCR 软件等待配置寄存器,决定是否等待时间加倍,如此系统最大等待为14个等待周期*/
#define SWCR_SWSM 		(1<<0)

#define SWCR_SWSM_INI	0

#define SWCR_INI 	(SWCR_SWSM*SWCR_SWSM_INI)

/*BSCR 软件等待配置寄存器,决定是否等待时间加倍,如此系统最大等待为14个等待周期*/
#define BSCR_BNKCMP 	(1<<12)
#define BSCR_PSDS	 	(1<<11)
#define BSCR_HBH	 	(1<<2)
#define BSCR_BH		 	(1<<1)
#define BSCR_EXIO	 	(1<<0)

#define BSCR_BNKCMP_INI 	0xF
#define BSCR_PSDS_INI	 	1
#define BSCR_HBH_INI	 	0
#define BSCR_BH_INI		 	0
#define BSCR_EXIO_INI	 	0

#define BSCR_INI 	(BSCR_BNKCMP_INI*BSCR_BNKCMP+BSCR_PSDS_INI*BSCR_PSDS+BSCR_HBH_INI*BSCR_HBH+BSCR_BH_INI*BSCR_BH+BSCR_EXIO_INI*BSCR_EXIO)

/*IMR 中断屏蔽寄存器*/
#define IMR_DMAC5 	(1<<13)
#define IMR_DMAC4 	(1<<12)
#define IMR_BXINT1 	(1<<11)
#define IMR_BRINT1 	(1<<10)
#define IMR_HINT 	(1<<9)
#define IMR_INT3 	(1<<8)
#define IMR_BXINT2 	(1<<7)
#define IMR_BRINT2 	(1<<6)
#define IMR_BXINT0 	(1<<5)
#define IMR_BRINT0 	(1<<4)
#define IMR_TINT 	(1<<3)
#define IMR_INT2 	(1<<2)
#define IMR_INT1 	(1<<1)
#define IMR_INT0 	(1<<0)

#define IMR_DMAC5_INI 	0
#define IMR_DMAC4_INI 	0
#define IMR_BXINT1_INI 	0
#define IMR_BRINT1_INI 	0
#define IMR_HINT_INI 	0
#define IMR_INT3_INI 	0
#define IMR_BXINT2_INI 	0
#define IMR_BRINT2_INI 	0
#define IMR_BXINT0_INI 	0
#define IMR_BRINT0_INI 	0
#define IMR_TINT_INI 	0
#define IMR_INT2_INI 	0
#define IMR_INT1_INI 	0
#define IMR_INT0_INI 	0

#define IMR_INI		 	(IMR_DMAC5_INI*IMR_DMAC5+IMR_DMAC4_INI*IMR_DMAC4+IMR_BXINT1_INI*IMR_BXINT1+IMR_BRINT1_INI*IMR_BRINT1+IMR_HINT_INI*IMR_HINT+IMR_INT3_INI*IMR_INT3+IMR_BXINT2_INI*IMR_BXINT2+IMR_BRINT2_INI*IMR_BRINT2)IMR_BXINT0_INI*IMR_BXINT0+IMR_BRINT0_INI*IMR_BRINT0+IMR_TINT_INI*IMR_TINT+IMR_INT2_INI*IMR_INT2+IMR_INT1_INI*IMR_INT1+IMR_INT0_INI*IMR_INT0)

#define NOP asm("	nop");
void disable();
void enable();
void InitPLL(unsigned int s);  		/* sets up PLL  */

⌨️ 快捷键说明

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