avr单片机红外解码,解不出码;求高手解答。 5

#include<iom8v.h>#include<macros.h>#defineuintunsignedint#defineucharunsignedcharucha... #include <iom8v.h>
#include <macros.h>
#define uint unsigned int
#define uchar unsigned char
uchar table[4];
uint time;
uchar dw=16;
void delay1(void)
{
uint i;
for(i=0;i<50000;i++);
for(i=0;i<50000;i++);
}
void delay(void)
{uint i;
for(i=0;i<100;i++);}
void timeinit(void)
{
TCCR1B|=0X02;//8分频
TCNT1H=0XFF; //8MHZ晶振定时0.1ms
TCNT1L=0X9C;
TIMSK|=BIT(2);
SREG|=0X80;
}
# pragma interrupt_handler timer:9
void timer(void)
{
TCNT1H=0XFF; //8MHZ晶振定时0.1ms
TCNT1L=0X9C;
time++;
}
void int0init(void)
{
DDRD&=~BIT(2);//PD2设输入模式
PORTD|=BIT(2);//上拉电阻
MCUCR|=0X02;//下降沿触发
GICR|=BIT(6);//使能外部中断0
SREG|=BIT(7);//开全局中断
}
# pragma interrupt_handler int0:2
void int0(void)
{
uchar i,j;
while(!PIND&BIT(2))
{delay();}
for(j=0;j<4;j++)
{
for(i=0;i<8;i++)
{
while(PIND&BIT(2))
{delay();}
while(!PIND&BIT(2))
{delay();}
time=0;
while(PIND&BIT(2))
{}
table[j]=table[j]>>1;
if(time>=12)
{
table[j]=table[j]|0x80;
}
}
}
switch(table[2])
{
case 0x05:
PORTB=0x00;
break;
case 0x0d:
PORTB=0xff;
break;
case 0x11:
dw=20;
break;

}
}
void main(void)
{
DDRB|=0XFF;
PORTB|=0XFF;
DDRD|=BIT(0);
PORTD|=BIT(0);
timeinit();
int0init();
while(1)
{
PORTB=0xe7;
delay1();
PORTB=0xdb;
delay1();
PORTB=0xbd;
delay1();
PORTB=0x7e;
delay1();
}
}
展开
 我来答
枫飒星辰
2012-12-15
知道答主
回答量:53
采纳率:100%
帮助的人:11.2万
展开全部
首先要知道需要被解码的格式(高电平的时间和低电平的时间,引导码的时间),知道这些之后才能编写程序的。
yy2008ygh
2013-01-23
知道答主
回答量:30
采纳率:0%
帮助的人:20.8万
展开全部
搂主搞定了吗?我帮你顶一下 .
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式