金牌会员
- 积分
- 2957
- 威望
- 469
- 贡献
- 2294
- 兑换币
- 2
- 注册时间
- 2010-11-14
- 在线时间
- 97 小时
|
求救啊 !!!!!我测试了一下红外解码 就是一般的遥控器那种,,,但是我在线仿真的时候 竟然惊奇的发现 有几个按键 他们的引导码竟然是不一样的 然我很是无语啊。,。。。感觉像是自己哪里做错了 所以希望大家能够帮下忙 或者提示下 计时模块 感觉 会有错误 我在这 谢谢大家了
#include <hidef.h>
#include "derivative.h"
#include "main_asm.h"
unsigned char jianma[]={0x07,0x0b,0x0f,0x13,0x17,0x1b,0x1f,0x23,0x27};
unsigned decode[4];
unsigned int initial_time,stop_time,low_time,high_time;
void SET_PLL(void)
{
CLKSEL=0x00;//Bus Clock=OSCCLK/2=8MHz
PLLCTL_PLLON=1; //允许锁相环电路
SYNR=0x00|0x02;
REFDV=0x80|0x01;//以上两步为设置PLLCLK,使PLLCLK=48MHz,
//POSTDIV=0x00;
asm NOP;
asm NOP;
asm NOP;
while(0==(CRGFLG&0x08))
;//等待CRGFLG_LOCK=1,即等待锁相环频率稳定。
CLKSEL=0x80;//Bus Clock=PLLCLK/2=24MHz;
}
void Ect_Init()
{
TIOS_IOS0=0;
TCTL4=0x02;
TSCR2=0x06;
TIE=0x01;
TSCR1=0x80;
}
unsigned char Decode_Init()
{
unsigned char i,j=0;
unsigned char temp;
for(i=0;i<4;i++)
{
for(j=0;j<8;j++)
{
temp>>=1;
initial_time=TCNT;
while(PTT_PTT0==0);
stop_time=TCNT;
low_time=stop_time-initial_time;
initial_time=TCNT;
while(PTT_PTT0==1);
stop_time=TCNT;
high_time=stop_time-initial_time; //247 630
if((100<low_time)||(low_time<400))
return 0;
if((high_time>140)&&(high_time<350))
temp=temp&0x7f;
if((high_time>530)&&(high_time<730))
temp=temp|0x80;
}
decode[i]=temp;
}
if(decode[2]==~decode[3])
return 1;
}
void main(void)
{
DDRA=0xff;
DDRT_DDRT0=0;
EnableInterrupts;
SET_PLL();
Ect_Init();
while(1);
}
void interrupt 8 timer0()
{
unsigned char i;
DisableInterrupts;
initial_time=TCNT;
while(PTT_PTT0==0);
stop_time=TCNT;
low_time=stop_time-initial_time;
initial_time=TCNT;
while(PTT_PTT0==1);
stop_time=TCNT;
high_time=stop_time-initial_time; //3370 1390
if(((low_time>2900)&&(low_time<3900))&&((high_time>890)&&(high_time<1890)))
{
if(Decode_Init()==1)
{
for(i=0;i<9;i++)
{
if(decode[4]==jianma[i])
PORTA=i;
}
}
}
TFLG1_C0F=1;
EnableInterrupts;
} |
|