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

📄 rd_usevirtualport.h

📁 针对单片机引脚资源不够用的情况下
💻 H
📖 第 1 页 / 共 2 页
字号:
    # define _PQ5        PORTQ_BIT.BIT5
    # define _PQ6        PORTQ_BIT.BIT6
    # define _PQ7        PORTQ_BIT.BIT7
#endif
#ifdef PORTR
    # define _PR0        PORTR_BIT.BIT0
    # define _PR1        PORTR_BIT.BIT1
    # define _PR2        PORTR_BIT.BIT2
    # define _PR3        PORTR_BIT.BIT3
    # define _PR4        PORTR_BIT.BIT4
    # define _PR5        PORTR_BIT.BIT5
    # define _PR6        PORTR_BIT.BIT6
    # define _PR7        PORTR_BIT.BIT7
#endif
#ifdef PORTS
    # define _PS0        PORTS_BIT.BIT0
    # define _PS1        PORTS_BIT.BIT1
    # define _PS2        PORTS_BIT.BIT2
    # define _PS3        PORTS_BIT.BIT3
    # define _PS4        PORTS_BIT.BIT4
    # define _PS5        PORTS_BIT.BIT5
    # define _PS6        PORTS_BIT.BIT6
    # define _PS7        PORTS_BIT.BIT7
#endif
#ifdef PORTT
    # define _PT0        PORTT_BIT.BIT0
    # define _PT1        PORTT_BIT.BIT1
    # define _PT2        PORTT_BIT.BIT2
    # define _PT3        PORTT_BIT.BIT3
    # define _PT4        PORTT_BIT.BIT4
    # define _PT5        PORTT_BIT.BIT5
    # define _PT6        PORTT_BIT.BIT6
    # define _PT7        PORTT_BIT.BIT7
#endif
#ifdef PORTU
    # define _PU0        PORTU_BIT.BIT0
    # define _PU1        PORTU_BIT.BIT1
    # define _PU2        PORTU_BIT.BIT2
    # define _PU3        PORTU_BIT.BIT3
    # define _PU4        PORTU_BIT.BIT4
    # define _PU5        PORTU_BIT.BIT5
    # define _PU6        PORTU_BIT.BIT6
    # define _PU7        PORTU_BIT.BIT7
#endif
#ifdef PORTV
    # define _PV0        PORTV_BIT.BIT0
    # define _PV1        PORTV_BIT.BIT1
    # define _PV2        PORTV_BIT.BIT2
    # define _PV3        PORTV_BIT.BIT3
    # define _PV4        PORTV_BIT.BIT4
    # define _PV5        PORTV_BIT.BIT5
    # define _PV6        PORTV_BIT.BIT6
    # define _PV7        PORTV_BIT.BIT7
#endif
#ifdef PORTW
    # define _PW0        PORTW_BIT.BIT0
    # define _PW1        PORTW_BIT.BIT1
    # define _PW2        PORTW_BIT.BIT2
    # define _PW3        PORTW_BIT.BIT3
    # define _PW4        PORTW_BIT.BIT4
    # define _PW5        PORTW_BIT.BIT5
    # define _PW6        PORTW_BIT.BIT6
    # define _PW7        PORTW_BIT.BIT7
#endif
#ifdef PORTX
    # define _PX0        PORTX_BIT.BIT0
    # define _PX1        PORTX_BIT.BIT1
    # define _PX2        PORTX_BIT.BIT2
    # define _PX3        PORTX_BIT.BIT3
    # define _PX4        PORTX_BIT.BIT4
    # define _PX5        PORTX_BIT.BIT5
    # define _PX6        PORTX_BIT.BIT6
    # define _PX7        PORTX_BIT.BIT7
#endif
#ifdef PORTY
    # define _PY0        PORTY_BIT.BIT0
    # define _PY1        PORTY_BIT.BIT1
    # define _PY2        PORTY_BIT.BIT2
    # define _PY3        PORTY_BIT.BIT3
    # define _PY4        PORTY_BIT.BIT4
    # define _PY5        PORTY_BIT.BIT5
    # define _PY6        PORTY_BIT.BIT6
    # define _PY7        PORTY_BIT.BIT7
#endif
#ifdef PORTZ
    # define _PZ0        PORTZ_BIT.BIT0
    # define _PZ1        PORTZ_BIT.BIT1
    # define _PZ2        PORTZ_BIT.BIT2
    # define _PZ3        PORTZ_BIT.BIT3
    # define _PZ4        PORTZ_BIT.BIT4
    # define _PZ5        PORTZ_BIT.BIT5
    # define _PZ6        PORTZ_BIT.BIT6
    # define _PZ7        PORTZ_BIT.BIT7
#endif

#ifdef PINH
    # define Read_PH0        PINH_BIT.BIT0
    # define Read_PH1        PINH_BIT.BIT1
    # define Read_PH2        PINH_BIT.BIT2
    # define Read_PH3        PINH_BIT.BIT3
    # define Read_PH4        PINH_BIT.BIT4
    # define Read_PH5        PINH_BIT.BIT5
    # define Read_PH6        PINH_BIT.BIT6
    # define Read_PH7        PINH_BIT.BIT7
#endif
#ifdef PINI
    # define Read_PI0        PINI_BIT.BIT0
    # define Read_PI1        PINI_BIT.BIT1
    # define Read_PI2        PINI_BIT.BIT2
    # define Read_PI3        PINI_BIT.BIT3
    # define Read_PI4        PINI_BIT.BIT4
    # define Read_PI5        PINI_BIT.BIT5
    # define Read_PI6        PINI_BIT.BIT6
    # define Read_PI7        PINI_BIT.BIT7
#endif
#ifdef PINJ
    # define Read_PJ0        PINJ_BIT.BIT0
    # define Read_PJ1        PINJ_BIT.BIT1
    # define Read_PJ2        PINJ_BIT.BIT2
    # define Read_PJ3        PINJ_BIT.BIT3
    # define Read_PJ4        PINJ_BIT.BIT4
    # define Read_PJ5        PINJ_BIT.BIT5
    # define Read_PJ6        PINJ_BIT.BIT6
    # define Read_PJ7        PINJ_BIT.BIT7
#endif
#ifdef PINK
    # define Read_PK0        PINK_BIT.BIT0
    # define Read_PK1        PINK_BIT.BIT1
    # define Read_PK2        PINK_BIT.BIT2
    # define Read_PK3        PINK_BIT.BIT3
    # define Read_PK4        PINK_BIT.BIT4
    # define Read_PK5        PINK_BIT.BIT5
    # define Read_PK6        PINK_BIT.BIT6
    # define Read_PK7        PINK_BIT.BIT7
#endif
#ifdef PINL
    # define Read_PL0        PINL_BIT.BIT0
    # define Read_PL1        PINL_BIT.BIT1
    # define Read_PL2        PINL_BIT.BIT2
    # define Read_PL3        PINL_BIT.BIT3
    # define Read_PL4        PINL_BIT.BIT4
    # define Read_PL5        PINL_BIT.BIT5
    # define Read_PL6        PINL_BIT.BIT6
    # define Read_PL7        PINL_BIT.BIT7
#endif
#ifdef PINM
    # define Read_PM0        PINM_BIT.BIT0
    # define Read_PM1        PINM_BIT.BIT1
    # define Read_PM2        PINM_BIT.BIT2
    # define Read_PM3        PINM_BIT.BIT3
    # define Read_PM4        PINM_BIT.BIT4
    # define Read_PM5        PINM_BIT.BIT5
    # define Read_PM6        PINM_BIT.BIT6
    # define Read_PM7        PINM_BIT.BIT7
#endif
#ifdef PINN
    # define Read_PN0        PINN_BIT.BIT0
    # define Read_PN1        PINN_BIT.BIT1
    # define Read_PN2        PINN_BIT.BIT2
    # define Read_PN3        PINN_BIT.BIT3
    # define Read_PN4        PINN_BIT.BIT4
    # define Read_PN5        PINN_BIT.BIT5
    # define Read_PN6        PINN_BIT.BIT6
    # define Read_PN7        PINN_BIT.BIT7
#endif
#ifdef PINO
    # define Read_PO0        PINO_BIT.BIT0
    # define Read_PO1        PINO_BIT.BIT1
    # define Read_PO2        PINO_BIT.BIT2
    # define Read_PO3        PINO_BIT.BIT3
    # define Read_PO4        PINO_BIT.BIT4
    # define Read_PO5        PINO_BIT.BIT5
    # define Read_PO6        PINO_BIT.BIT6
    # define Read_PO7        PINO_BIT.BIT7
#endif
#ifdef PINP
    # define Read_PP0        PINP_BIT.BIT0
    # define Read_PP1        PINP_BIT.BIT1
    # define Read_PP2        PINP_BIT.BIT2
    # define Read_PP3        PINP_BIT.BIT3
    # define Read_PP4        PINP_BIT.BIT4
    # define Read_PP5        PINP_BIT.BIT5
    # define Read_PP6        PINP_BIT.BIT6
    # define Read_PP7        PINP_BIT.BIT7
#endif
#ifdef PINQ
    # define Read_PQ0        PINQ_BIT.BIT0
    # define Read_PQ1        PINQ_BIT.BIT1
    # define Read_PQ2        PINQ_BIT.BIT2
    # define Read_PQ3        PINQ_BIT.BIT3
    # define Read_PQ4        PINQ_BIT.BIT4
    # define Read_PQ5        PINQ_BIT.BIT5
    # define Read_PQ6        PINQ_BIT.BIT6
    # define Read_PQ7        PINQ_BIT.BIT7
#endif
#ifdef PINR
    # define Read_PR0        PINR_BIT.BIT0
    # define Read_PR1        PINR_BIT.BIT1
    # define Read_PR2        PINR_BIT.BIT2
    # define Read_PR3        PINR_BIT.BIT3
    # define Read_PR4        PINR_BIT.BIT4
    # define Read_PR5        PINR_BIT.BIT5
    # define Read_PR6        PINR_BIT.BIT6
    # define Read_PR7        PINR_BIT.BIT7
#endif
#ifdef PINS
    # define Read_PS0        PINS_BIT.BIT0
    # define Read_PS1        PINS_BIT.BIT1
    # define Read_PS2        PINS_BIT.BIT2
    # define Read_PS3        PINS_BIT.BIT3
    # define Read_PS4        PINS_BIT.BIT4
    # define Read_PS5        PINS_BIT.BIT5
    # define Read_PS6        PINS_BIT.BIT6
    # define Read_PS7        PINS_BIT.BIT7
#endif
#ifdef PINT
    # define Read_PT0        PINT_BIT.BIT0
    # define Read_PT1        PINT_BIT.BIT1
    # define Read_PT2        PINT_BIT.BIT2
    # define Read_PT3        PINT_BIT.BIT3
    # define Read_PT4        PINT_BIT.BIT4
    # define Read_PT5        PINT_BIT.BIT5
    # define Read_PT6        PINT_BIT.BIT6
    # define Read_PT7        PINT_BIT.BIT7
#endif
#ifdef PINU
    # define Read_PU0        PINU_BIT.BIT0
    # define Read_PU1        PINU_BIT.BIT1
    # define Read_PU2        PINU_BIT.BIT2
    # define Read_PU3        PINU_BIT.BIT3
    # define Read_PU4        PINU_BIT.BIT4
    # define Read_PU5        PINU_BIT.BIT5
    # define Read_PU6        PINU_BIT.BIT6
    # define Read_PU7        PINU_BIT.BIT7
#endif
#ifdef PINV
    # define Read_PV0        PINV_BIT.BIT0
    # define Read_PV1        PINV_BIT.BIT1
    # define Read_PV2        PINV_BIT.BIT2
    # define Read_PV3        PINV_BIT.BIT3
    # define Read_PV4        PINV_BIT.BIT4
    # define Read_PV5        PINV_BIT.BIT5
    # define Read_PV6        PINV_BIT.BIT6
    # define Read_PV7        PINV_BIT.BIT7
#endif
#ifdef PINW
    # define Read_PW0        PINW_BIT.BIT0
    # define Read_PW1        PINW_BIT.BIT1
    # define Read_PW2        PINW_BIT.BIT2
    # define Read_PW3        PINW_BIT.BIT3
    # define Read_PW4        PINW_BIT.BIT4
    # define Read_PW5        PINW_BIT.BIT5
    # define Read_PW6        PINW_BIT.BIT6
    # define Read_PW7        PINW_BIT.BIT7
#endif
#ifdef PINX
    # define Read_PX0        PINX_BIT.BIT0
    # define Read_PX1        PINX_BIT.BIT1
    # define Read_PX2        PINX_BIT.BIT2
    # define Read_PX3        PINX_BIT.BIT3
    # define Read_PX4        PINX_BIT.BIT4
    # define Read_PX5        PINX_BIT.BIT5
    # define Read_PX6        PINX_BIT.BIT6
    # define Read_PX7        PINX_BIT.BIT7
#endif
#ifdef PINY
    # define Read_PY0        PINY_BIT.BIT0
    # define Read_PY1        PINY_BIT.BIT1
    # define Read_PY2        PINY_BIT.BIT2
    # define Read_PY3        PINY_BIT.BIT3
    # define Read_PY4        PINY_BIT.BIT4
    # define Read_PY5        PINY_BIT.BIT5
    # define Read_PY6        PINY_BIT.BIT6
    # define Read_PY7        PINY_BIT.BIT7
#endif
#ifdef PINZ
    # define Read_PZ0        PINZ_BIT.BIT0
    # define Read_PZ1        PINZ_BIT.BIT1
    # define Read_PZ2        PINZ_BIT.BIT2
    # define Read_PZ3        PINZ_BIT.BIT3
    # define Read_PZ4        PINZ_BIT.BIT4
    # define Read_PZ5        PINZ_BIT.BIT5
    # define Read_PZ6        PINZ_BIT.BIT6
    # define Read_PZ7        PINZ_BIT.BIT7
#endif
/*------------------*
*   动 作 宏 定 义  *
*------------------*/
# define VIRTUALPORT_INSERT_SPI_STC_ISR_CODE  VP_PINx[VP_PORT_COUNT - VP_PortCounter] = SPDR; VP_IfStartRefresh = True;
# define REFRESH_VIRTUAL_PORT    refreshVirtualPort();

/********************
*    结构体宏定义   *
********************/

/********************
*   函 数 声 明 区  *
********************/
BOOL refreshVirtualPort(void);

/********************
*   全局变量声明区  *
********************/
volatile unsigned char VP_PORTx[VP_PORT_COUNT];
volatile unsigned char VP_PINx[VP_PORT_COUNT];

BOOL VP_IfStartRefresh = False;                             //虚拟端口刷新标志
unsigned char VP_PortCounter = 0;                           //虚拟端口计数器

/***********************************************************
*  函数说明:虚拟端口刷新函数                              *
***********************************************************/
BOOL refreshVirtualPort(void)
{ 
    static BOOL IfStartRefresh = False;                     //刷新忙信号
    
    if (IfStartRefresh)
    {
        return False;
    }
    IfStartRefresh = True;
    
    VP_SS = Low;
    VP_SS = High;                                           //锁存并行数据
    
    for (VP_PortCounter = VP_PORT_COUNT;VP_PortCounter>0;VP_PortCounter--)
    {
        VP_IfStartRefresh = False;                          //设置等待完成信号
        SPDR = VP_PORTx[VP_PortCounter-1];
        while(VP_IfStartRefresh == False);
    }
    
    VP_SS = Low;
    VP_SS = High;                                           //锁存串行数据

    IfStartRefresh = False;
    return True;
}



/***********************************************************
*  函数说明:SPI硬件接口初始化      上升沿采样             *
***********************************************************/
void SPIInit(void)
{
    SPCR = 0xDC; 
    SPSR = 0x01;
}


#endif

⌨️ 快捷键说明

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