📄 iooperate.c
字号:
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
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 + -