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 + -
显示快捷键?