请教红外接收原理
如果我用SAA3010T芯片的遥控器发送,用含89C51的电路接收,哪位大侠能讲讲发送接收的原理和思路 呢?? 到这里找技术人员帮你写程序 http://www.weixiu.name/bbs/list.asp?boardid=5 谢谢斑竹,我已经有一个程序了只是不太明白
#include <AT89x51.h>
static unsigned char data IRCode,IRCON,IRCON2;static unsigned char data DT;
void main(void){unsigned int de;
TMOD = 0x01; //定时器0方式1EA = 1; //允许CPU中断IT0 = 1; //INT0下降沿有效EX0 = 1; //开INT0中断;do{ for (de=0; de<10000; de++)P3_6 = 1;for (de=0; de<10000; de++)P3_6 = 0;if (DT) {for (de=0; de<30000; de++) //这里起到按键值正确后会有一个延时,防止重复按键P3_6 = 1;for (de=0; de<30000; de++)P3_6 = 0;DT = 0;}EX0 = 1;}while(1);}
//定时器0中断处理void timeint(void) interrupt 1 using 2{TH0=0xFD;TL0=0x1E; //设定时值为800us
if (IRCON<3){if (IRCON2<8) //每中断一次读一次遥控接收头的状态,每二次为遥控编码中的一个位{IRCON2++;IRCode=IRCode<<1; //每读一次放入变量中的二进制的一个位,每次左移一位IRCode=IRCode | P3_2; //每八次填满一个字节,一个字节存放遥控编码4个位}else{IRCON++; //填满一个字节,指向下一个变量IRCON2=0; //计数清零}}else{TR0 = 0; //关闭定时器ET0 = 0; //定时器0中断关闭if ((IRCode!=0xFF) && (IRCode!=0xFF)){if (IRCode == 0x55){switch (IRCode){case 0xAB: //1-8键控制P1_0 = ~P1_0;DT = 1;break;case 0xAC:P1_1 = ~P1_1;DT = 1;break;case 0xAD: P1_2 = ~P1_2;DT = 1;break;case 0xB2: P1_3 = ~P1_3;DT = 1;break;case 0xB3: P1_4 = ~P1_4;DT = 1;break;case 0xB4: P1_5 = ~P1_5;DT = 1;break;case 0xB5: P1_6 = ~P1_6;DT = 1;break;case 0xCA: P1_7 = ~P1_7;DT = 1;break;case 0xD2: //按关闭电源键,关闭所有继电器P1 = 0xFF;DT = 1;break;}}}} }
//INT0中断void INT0Fun(void) interrupt 0 using 2{EX0 = 0; //外部中断0关闭ET0 = 1; //定时器0中断打开TH0=0xFD;TL0=0x1E; //设定时值为800usfor (IRCON=0; IRCON<3; IRCON++)IRCode = 0;IRCON = 0;IRCON2 = 0; //计数清零
TR0 = 1;//开始计数} 请问楼主知道SM6135、SM6136内部程序是什么吗? hao li hai very good!!
好贴子不多啊
页:
[1]