|
//=================== 24MHZ =========================
#define c(x) (x*2)
sbit Ir_Pin=P3^3;
unsigned char Ir_Buf[4]; //用于保存解码结果
//unsigned char mode,showmode;
unsigned int Ir_Get_Low();
unsigned int Ir_Get_High();
void mcu_init(void);
void code_efficacy(void);
void output_control(void);
//#define myhonwai
/****************************************************
函数名称:service_int1
功能描述:外部中断函数,当接收到红外信号时产生中断
输 入: 无
输 出: 无
日期:2009-4-8
外部中断1
*****************************************************/
void service_int1()interrupt 2
{
unsigned int temp;
unsigned char i,j;
temp=Ir_Get_Low();
if(temp<c(8500) || temp>c(9500)) return; //引导脉冲低电平9000
temp=Ir_Get_High();
if(temp<c(4000) || temp>c(5000)) return; //引导脉冲高电平4500
for(i=0;i<4;i++) //4个字节
for(j=0;j<8;j++) //每个字节8位
{
temp=Ir_Get_Low();
if(temp<c(300) || temp>c(800))return;
temp=Ir_Get_High();
if(temp<c(300) || temp>c(1800))return;
Ir_Buf[i]>>=1;
if(temp>c(1120)) Ir_Buf[i]|=0x80;
}
// code_efficacy(); //对接收到的数据进行效验
output_control();
}
//==============================================================================
unsigned int Ir_Get_Low()
{
TL1=0;
TH1=0;
TR1=1;
while(!Ir_Pin && (TH1&0x80)==0); //等待高电平到来
TR1=0;
return TH1*256+TL1; //返回T1计数值,以便判断
}
//==============================================================================
unsigned int Ir_Get_High()
{
TL1=0;
TH1=0;
TR1=1;
while(Ir_Pin && (TH1&0x80)==0);
TR1=0;
return TH1*256+TL1;
}
/****************************************************
函数名称:output_control
功能描述:控制输出
输 入: 无
输 出: 无
日期:2009-4-8
*****************************************************/
void output_control(void)
{
switch(Ir_Buf[2])
{
//============================= 开关灯 =======================================
case 0x00: Flg_light=1;light++;light%=2;P0=LEDCODE[light]; NeedWriteFunctionFlag=1; break;
//============================= 运行模式 ======================================
case 0x01: modeA++;if(modeA==3)modeA++;modeA%=5;P0=LEDmodeA[modeA]; NeedWriteFunctionFlag=1; break;
default : break;
}
}
现在每按一下按键,P0的显示会加一,我想请教的是怎样改成长按着按键,P0的显示会一直自动加或减,就像电视上的那种音量控制一样 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|