ioports.h

来自「dsp芯片TMS320C5416实验程序」· C头文件 代码 · 共 248 行

H
248
字号
#ifndef DSP54X_IO_H
#define DSP54X_IO_H

#define DSP_54x_I			1
#define DSP_54x_II			2
#define DSP_BOARD_VERSION	DSP_54x_II

/*
	IO 端口分配
	
		DSP_54x_I:
		
			0x1000			跑马灯数据寄存器
			0x1001			数码管数据寄存器
			0x1002~0x1009	数码管位选寄存器
			0x100a			按键数据寄存器(低四位)
			0x100b			存储器页面选择寄存器
			0x100c
			0x100d
			0x100e			
			0x100f			版本号寄存器
			
			0x2000~0x20ff	cs0
			0x2100~0x21ff	cs1
			0x2200~0x22ff	cs2
			0x2300~0x23ff	cs3
			0x2400~0x24ff	cs4
			0x2500~0x25ff	cs5
			0x2600~0x26ff	cs6
			0x2700~0x27ff	cs7
			0x2800~0x28ff	cs8
			0x2900~0x29ff	cs9
	
		DSP_54x_II:
		
			0x1000			跑马灯数据寄存器
			0x1001			数码管数据寄存器
			0x1002~0x1009	数码管位选寄存器
			0x100a			按键数据寄存器(低四位)
			0x100b			存储器页面选择寄存器
			0x100c
			0x100d
			0x100e			键盘和步进电机控制寄存器
							(低四位为按键行扫描信号,高四位为步进电机脉冲信号)
			0x100f			版本号寄存器
			
			0x2000~0x20ff	cs0
			0x2100~0x21ff	cs1
			0x2200~0x22ff	cs2
			0x2300~0x23ff	cs3
			0x2400~0x24ff	cs4
			0x2500~0x25ff	cs5
			0x2600~0x26ff	cs6
			0x2700~0x27ff	cs7
			0x2800~0x28ff	cs8
			0x2900~0x29ff	cs9
		
	IRQ 分配
	
		DSP_54x_I:
		
			IRQ0			AD中断/USB中断
			IRQ1			频率计中断
			IRQ2			
			IRQ3			
		
		DSP_54x_II:
		
			IRQ0			频率计中断
			IRQ1			AD中断
			IRQ2			
			IRQ3			USB中断
	
*/

#ifdef   GLOBALS
#define  EXT
#else
#define  EXT  extern
#endif

EXT ioport unsigned int port1000;
EXT ioport unsigned int port1001;
EXT ioport unsigned int port1002;
EXT ioport unsigned int port1003;
EXT ioport unsigned int port1004;
EXT ioport unsigned int port1005;
EXT ioport unsigned int port1006;
EXT ioport unsigned int port1007;
EXT ioport unsigned int port1008;
EXT ioport unsigned int port1009;
EXT ioport unsigned int port100a;
EXT ioport unsigned int port100e;
EXT ioport unsigned int port100f;
	
EXT ioport unsigned int port2000;	

EXT ioport unsigned int port2100;	
EXT ioport unsigned int port2101;	

EXT ioport unsigned int port2200;	
EXT ioport unsigned int port2300;
	
EXT ioport unsigned int port2400;
EXT ioport unsigned int port2411;
EXT ioport unsigned int port2412;
EXT ioport unsigned int port2413;
EXT ioport unsigned int port2414;
EXT ioport unsigned int port2415;
EXT ioport unsigned int port2416;
EXT ioport unsigned int port2417;

EXT ioport unsigned int port2500;
EXT ioport unsigned int port2511;
EXT ioport unsigned int port2512;
EXT ioport unsigned int port2513;
EXT ioport unsigned int port2514;
EXT ioport unsigned int port2515;
EXT ioport unsigned int port2516;
EXT ioport unsigned int port2517;

EXT ioport unsigned int port2600;	

EXT ioport unsigned int port2700;

EXT ioport unsigned int port2800;
EXT ioport unsigned int port2b00;

EXT int key_value , key_pressed;
EXT int io100e_value;

#define LCDPort			port2400
#define LCDAddr_WI1		port2411
#define LCDAddr_WI2		port2412
#define LCDAddr_WI		port2413
#define LCDAddr_WD1		port2415
#define LCDAddr_WD2		port2416
#define LCDAddr_WD		port2417

#define LED_DAT			port1000
#define SEG7_DAT		port1001
#define SEG7_CNT1		port1002
#define SEG7_CNT2		port1003
#define SEG7_CNT3		port1004
#define SEG7_CNT4		port1005
#define SEG7_CNT5		port1006
#define SEG7_CNT6		port1007
#define SEG7_CNT7		port1008
#define SEG7_CNT8		port1009

#if	(DSP_BOARD_VERSION==DSP_54x_I)	
#define DAC_DAT			port2000
#define ADC_DAT			port2100
#else
#define DAC_DAT			port2200
#define ADC_DAT			port2300
#endif

#define	USBD_DAT		port2100
#define	USBD_CMD		port2101

#define STM_CNTL		port100e

#define KEY_SCAN		port100e
#define KEY_DAT			port100a

#define LED_TRAFFIC		port2b00

#define IRQ_USB			0
#define IRQ_USB_MASK	0x00001

#define SEG7_DlyTicks	10

#if	(DSP_BOARD_VERSION==DSP_54x_I)	
#define KEY_MASK	0x01
#else
#define KEY_MASK	0x0f
#endif

#define SEG7_OPEN( x )	SEG7_CNT##x  = 0
#define SEG7_CLOSE( x )	SEG7_CNT##x  = 1

#if (SEG7_MODE == SAME_ANODE)
#define show_seg7( x, value ) 		\
	{								\
		SEG7_OPEN(x);				\
		SEG7_DAT = ~value;			\
		OSTimeDly(SEG7_DlyTicks);	\
		SEG7_CLOSE(x);				\
	}
#define show_segx( x, value, data ) \
	{								\
		SEG7_OPEN(x); 				\
		SEG7_DAT = ~value;			\
		OSTimeDly(SEG7_DlyTicks);	\
		if((KEY_DAT&0x1)==0)		\
		{							\
			data |= (1<<x);			\
		}							\
		else						\
		{							\
			data &= ~(1<<x);		\
		}							\
		SEG7_CLOSE(x);				\
	}
#else
#define show_seg7( x, value ) 		\
	{								\
		SEG7_OPEN(x);				\
		SEG7_DAT = value;			\
		OSTimeDly(SEG7_DlyTicks);	\
		SEG7_CLOSE(x);				\
	}
	
#define show_segx( x, value, data ) \
	{								\
		SEG7_OPEN(x); 				\
		SEG7_DAT = value;			\
		OSTimeDly(SEG7_DlyTicks);	\
		if((KEY_DAT&0x1)==0)		\
		{							\
			data |= (1<<x);			\
		}							\
		else						\
		{							\
			data &= ~(1<<x);		\
		}							\
		SEG7_CLOSE(x);				\
	}
#endif
	
#define  GET_SCAN_KEY(x, code)		\
	{								\
		SEG7_OPEN(x);				\
		OSTimeDly(100);				\
		if((KEY_DAT&0x1)==0)		\
		{							\
			code |= (1<<x);			\
		}							\
		else						\
		{							\
			code &= ~(1<<x);		\
		}							\
		SEG7_CLOSE(x);				\
	}

#endif

⌨️ 快捷键说明

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