sc7461_0831.c

来自「红外遥控键盘的驱动程序 由凌阳单片机SPCE061A驱动」· C语言 代码 · 共 99 行

C
99
字号
#include "SPCE061V004.h"
#include "unSPMACRO.h"

#define ClearWatchDog()  *P_Watchdog_Clear=0x0001
unsigned int ui_KeyCnt=0;//周期记数,计算周期
unsigned int ui_KetCntTemp=0;
unsigned int ui_KeyCode=0xffff;//键值
unsigned int ui_KeyCodeTemp=0x0000;//键值中间变量
unsigned int ui_SquNumber=0;//编码脉冲记数
unsigned int ui_KeyDown=0;//0无键按下,1有键按下

void InitialHYF_24J()
{
	asm("int off\n");//关中断
	*P_INT_Ctrl=0x0000;
	
	*P_IOA_Dir=0xffff;//LED端口初始化,用与测试按键用
	*P_IOA_Attrib=0xffff;
	*P_IOA_Data=0xffff;
	
	*P_IOB_Dir &= 0xfffb;//设置IOB2为带上拉电阻输入口
	*P_IOB_Attrib |= 0x0004;
	*P_IOB_Data &= 0xfffb;
	
	//*P_IOB_Dir |= 0xfffb;
	//*P_IOB_Attrib |= 0xfffb;
	//*P_IOB_Data = 0xfffb;
	
	*P_TimerB_Data=300;//预置记数值	
	*P_TimerB_Ctrl=0x0002;//32768HZ

	*P_INT_Ctrl=0x0500;//开IRQ3_EXT1,IRQ2_TMB中断
		
	asm("irq on\n");//开IRQ中断	
	ClearWatchDog();	
}

void IRQ3() __attribute__ ((ISR)) ;
void IRQ3()
{
   	ClearWatchDog();//清中断
   	ui_KetCntTemp++;//外部中断既上升沿触发也下降沿触发
   	if(ui_KetCntTemp==3)
   	{
   		ui_KetCntTemp=1;
  		ui_KeyCnt=*P_TimerB_Data;//周期值
  	
  	 	*P_TimerB_Data=0;
  		*P_TimerB_Ctrl=0x0002;//32768HZ 
  	
  		if(ui_KeyCnt<300)//为用户码或者数据码
  		{
  			ui_SquNumber++;
  		 	if((ui_SquNumber>26)&&(ui_SquNumber<=42))//数据码
  			{		
  				ui_KeyCodeTemp >>= 1;
  				if(ui_KeyCnt<50)//为0
  				{
  					ui_KeyCodeTemp &= 0x7fff;
  				}
  				else//为1
  				{
  					ui_KeyCodeTemp |= 0x8000;
  				}	
  			} 			
  			else//用户码 
  			{
  			}
  			if(ui_SquNumber==42)//解码完毕
  			{
  				ui_SquNumber=0;
  				ui_KeyCode=ui_KeyCodeTemp;
  				ui_KeyCodeTemp=0x0000;
  				ui_KeyDown=1;
  			}	
  			else//编码检查完毕
  			{
  			}
  		}//if(ui_KeyCnt<300)	
  		else//为引导码
  		{		
  			ui_SquNumber = 0;	
  		} 
  	}//if(ui_KetCntTemp==3)
  	else
  	{
  	}		  	
 	*P_INT_Clear=0x0100;//清中断	
}

void IRQ2() __attribute__ ((ISR)) ;
void IRQ2()
{
  	ClearWatchDog();
  	
  	*P_TimerB_Data=300;//置数使计数进入特殊状态
  	*P_TimerB_Ctrl=0x0002;//32768HZ
  	*P_INT_Clear=0x0400;//清中断	 	
}  	

⌨️ 快捷键说明

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