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

📄 iooperate.c

📁 Keil平台
💻 C
📖 第 1 页 / 共 2 页
字号:
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
uint8 ClrIO(uint16 IoPort)
{
    uint8   PortNum,err;
    PortNum=IoPort>>12;
    IoPort&=0x1F;
    err=NO_ERR;
    switch(PortNum)
    {
        case 0:
        {
            FIO0CLR=(uint32)(0x01)<<IoPort;
        }break;
        case 1:
        {
            FIO1CLR=(uint32)(0x01)<<IoPort;
        }break;
        case 2:
        {
            FIO2CLR=(uint32)(0x01)<<IoPort;
        }break;
        case 3:
        {
            FIO3CLR=(uint32)(0x01)<<IoPort;
        }break;
        case 4:
        {
            FIO4CLR=(uint32)(0x01)<<IoPort;
        }break;
        default:
        {
            err=ERR_OP;
        }break;
    }
    return err;
}

/*********************************************************************************************************
** 函数名称: SetOutData
** 功能描述: 设置I/O作为普通I/O口时为输出给定状态  
** 输 入:   IoPort:高8位中高4字节表示该IO口在P口为Pn,,低4位表示该定义包含IO口上下拉状态(0:上拉,1:保留,2:悬空,3:下
拉),低八位位引脚选择 Value:"0" 表示输出0:"1"表示输出1
** 输 出:   ERR_OP           //操作失败      NO_ERR          //操作成功 
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 单长城
** 日 期: 2006-2-13
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
uint8 SetOutData(uint16 IoPort,uint8 Value)
{
    uint8   PortNum,err;
    uint32  Data;
    PortNum=IoPort>>12;
    IoPort&=0x1F;
    Data = ((uint32)(Value&0x01))<<IoPort;    
    err=NO_ERR;
            OS_ENTER_CRITICAL();
    switch(PortNum)
    {
        case 0:
        {
            FIO0MASK=~((uint32)(0x01)<<IoPort);
            FIO0PIN=Data;
            FIO0MASK=0;
        }break;
        case 1:
        {
            FIO1MASK=~((uint32)(0x01)<<IoPort);
            FIO1PIN=Data;
            FIO1MASK=0;
        }break;
        case 2:
        {
            FIO2MASK=~((uint32)(0x01)<<IoPort);
            FIO2PIN=Data;
            FIO2MASK=0;
        }break;
        case 3:
        {
            FIO3MASK=~((uint32)(0x01)<<IoPort);
            FIO3PIN=Data;
            FIO3MASK=0;
        }break;
        case 4:
        {
            FIO4MASK=~((uint32)(0x01)<<IoPort);
            FIO4PIN=Data;
            FIO4MASK=0;
        }break;
        default:
        {
            err=ERR_OP;
        }break;
    }
            OS_EXIT_CRITICAL();
    return err;
}
/*********************************************************************************************************
** 函数名称: TogIO
** 功能描述: 翻转IO口引脚的  高8位中高4字节表示该IO口在P口为Pn,低4位表示该定义包含IO口上下拉状态(0:上拉,1:保留,2:悬
空,3:下拉),其中低8位表示IO口在IO组中的位置
** 输 入:   
** 输 出:   ERR_OP           //操作失败      NO_ERR          //操作成功 
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 单长城
** 日 期: 2006-2-13
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
uint8 TogIO(uint16 IoPort)
{
    uint8   PortNum,err;
    PortNum=IoPort>>12;
    IoPort&=0x1F;
    err=NO_ERR;
            OS_ENTER_CRITICAL();
    switch(PortNum)
    {
        case 0:
        {
            FIO0MASK=~((uint32)(0x01)<<IoPort);
            FIO0PIN=~FIO0PIN;
            FIO0MASK=0;
        }break;
        case 1:
        {
            FIO1MASK=~((uint32)(0x01)<<IoPort);
            FIO1PIN=~FIO1PIN;
            FIO1MASK=0;
        }break;
        case 2:
        {
            FIO2MASK=~((uint32)(0x01)<<IoPort);
            FIO2PIN=~FIO2PIN;
            FIO2MASK=0;
        }break;
        case 3:
        {
            FIO3MASK=~((uint32)(0x01)<<IoPort);
            FIO3PIN=~FIO3PIN;
            FIO3MASK=0;
        }break;
        case 4:
        {
            FIO4MASK=~((uint32)(0x01)<<IoPort);
            FIO4PIN=~FIO4PIN;
            FIO4MASK=0;
        }break;
        default:
        {
            err=ERR_OP;
        }break;
    }
            OS_EXIT_CRITICAL();
    return err;
}
/*********************************************************************************************************
** 函数名称: GetIOSta
** 功能描述: 获取IO口的状态 高8位中高4字节表示该IO口在P口为Pn,低4位表示该定义包含IO口上下拉状态(0:上拉,1:保留,2:悬
空,3:下拉),其中低8位表示IO口在IO组中的位置
** 输 入:   
** 输 出:  0:IO口为低 
××          1:IO口为高
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 单长城
** 日 期: 2006-2-13
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/

uint8 GetIOSta(uint16 IoPort)// KCREENTRANT
{
    uint8   PortNum,sta;
    PortNum=IoPort>>12;
    IoPort&=0x1F;
            OS_ENTER_CRITICAL();
    switch(PortNum)
    {
        case 0:
        {
            FIO0MASK=~((uint32)(0x01)<<IoPort);
            if(FIO0PIN==0)sta=0;
            else sta=1;
            FIO0MASK=0;
        }break;
        case 1:
        {
            FIO1MASK=~((uint32)(0x01)<<IoPort);
            if(FIO1PIN==0)sta=0;
            else sta=1;
            FIO1MASK=0;
        }break;
        case 2:
        {
            FIO2MASK=~((uint32)(0x01)<<IoPort);
            if(FIO2PIN==0)sta=0;
            else sta=1;
            FIO2MASK=0;
        }break;
        case 3:
        {
            FIO3MASK=~((uint32)(0x01)<<IoPort);
            if(FIO3PIN==0)sta=0;
            else sta=1;
            FIO3MASK=0;
        }break;
        case 4:
        {
            FIO4MASK=~((uint32)(0x01)<<IoPort);
            if(FIO4PIN==0)sta=0;
            else sta=1;
            FIO4MASK=0;
        }break;
        default:
        {
            sta=0;
        }break;
    }
            OS_EXIT_CRITICAL();
    return sta;
}

⌨️ 快捷键说明

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