📄 can_sen.c
字号:
//====================================================================================
//文 件 名: can_sent.c
//功能描述: 红外发射接收驱动程序
//维护记录: 2008年2月2日
//====================================================================================
#include "SPCE061A.h"
unsigned int iFlag,iCouter=0; //iData用来保存读到接收管接收的数据,在没有接收到信号时为高电平
unsigned int Rcounter=0;
//====================================================================================
//语法格式: void Tx_Init(void)
//功能描述: 发射端口初始化函数
//入口参数: 无
//出口参数: 无
//维护记录: 2008年2月2日
//====================================================================================
void Tx_Init(void)
{
*P_IOB_Dir |= 0x0100; //初始化IOB8为同相低电平输出口
*P_IOB_Attrib |= 0x0100;
*P_IOB_Data |= 0x0000;
}
//====================================================================================
//语法格式: void INT_Init(void)
//功能描述: 计数器及中断初始化函数
//入口参数: 无
//出口参数: 无
//维护记录: 2008年2月2日
//====================================================================================
void INT_Init(void)
{
*P_TimerA_Data = 0xff61; //设置TimerA,使IOB8输出38KHz的PWM波形,供红外发射调制作
*P_TimerA_Ctrl = 0x0036;
*P_INT_Ctrl |= 0x0040; //开4KHz中断
__asm("irq on");
}
//====================================================================================
//语法格式: void RN_Tx(unsigned int ms,unsigned int lel)
//功能描述: 红外发射管发射函数
//入口参数: ms:发送多少ms的38KHz信号
// lel:发送高电平或者低电平
//出口参数: 无
//维护记录: 2008年2月2日
//====================================================================================
void RN_Tx(unsigned int ms,unsigned int lel)
{
unsigned int TFlag=1;
if(lel == 1)
{
*P_TimerA_Ctrl = 0x03f0; //开启计数器A的TAOUT
while(TFlag) //发送数据
{
if(iCouter==ms)
{
*P_TimerA_Ctrl = 0x0036; //关闭计数器A
iCouter = 0; //清零
TFlag = 0;
}
*P_Watchdog_Clear = 0x0001; //清看门狗
}
}
if(lel == 0)
{
*P_TimerA_Ctrl = 0x0036; //关闭计数器A
while(TFlag)
{
if(iCouter==ms)
{
*P_TimerA_Ctrl = 0x03f0; //开启计数器A的TAOUT
iCouter = 0;
TFlag = 0;
}
*P_Watchdog_Clear = 0x0001;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -