You are on page 1of 6

/****************************************************

NHAN TIN HIEU HONG NGOAI TU REMOTE SONY


Ngay 4/4/2008
Ma phim nhan cua remote:
TV/VIDEO
25H
MEMO
78H
POWER
15H
TUNE2
0BH
FINE76H
FINE+
77H
1
0
2
1
3
2
4
3
5
4
6
5
7
6
8
7
9
8
10
9
CONT19H
CONT+
18H
TUNE6FH
TUNE1
6CH
TUNE+
6EH
SELECT75H
SELECT
7CH
SELECT+
74H
ENTER
65H
MENU
60H
VOL+
12H
VOL13H
PROGR+
10H
PROGR11H
Tn hiu remote Sony gm bit start 2,4ms + 7 bit d.liu + 5 bit d.khien.
- Mi bit d.liu c muc thap 0,6ms v mu'c cao l 0,6ms (bit d.liu=1)
hay mu'c cao l 1,2ms (bit d.liu=0)
VDK: dung AT89C2051
- Thach anh dao dong: 8MHz =>Tck=12/8=1,5us
- Dng ngat ngoi 0 (p3.2) d r bat tn hiu h.ngoai
Hoat dong:
- Nhan nut 'select' 3 lan de cho phep dkhien thiet bi
- Sau do nhan cac phim 1--9 de dieu khien 9 thbi tuong ung
- Muon bo qua qua trinh dang lam, nhan nut 'select' 1 lan nua
hoac nhan nut 'TV/Video'
- Muon tat het thiet bi, nhan nut 'POWER'
****************************************************/

#include <reg2051.h>
#define pir

P3_2

#define
#define
#define
#define
#define
#define
#define
#define
#define
#define

Pthbi
pthbi1
pthbi2
pthbi3
pthbi4
pthbi5
pthbi6
pthbi7
pthbi8
pthbi9

P1
P1_0
P1_1
P1_2
P1_3
P1_4
P1_5
P1_6
P1_7
P3_7

#define
#define
#define
#define

pled1 P3_3
pled2 P3_5
pleddo
P3_3
pledxanh
P3_5

#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define

hma_SELECT
hma_POWER
hma_TVVIDEO
hma_1
hma_2
hma_3
hma_4
hma_5
hma_6
hma_7
hma_8
hma_9
hma_Sony

0x7C
0x15
0x25
0
1
2
3
4
5
6
7
8
0x01

//hma[22]
//hma[2]
//hma[0]
//hma[6]
//hma[7]
//hma[8]
//hma[9]
//hma[10]
//hma[11]
//hma[12]
//hma[13]
//hma[14]

bit kdau=0;
unsigned char kdlieu=0;
unsigned char kdchi=0;
bit kcp;
void delay_100us(unsigned char);
void delay_ms(unsigned char);
void delay(void);
void Ngu(void);
/* CHUONG TRIN NGAT
*/
//--------------------------------------------------void Ngat_ngoai(void) interrupt 0
{
unsigned char i,bdem;
kdlieu=0; kdchi=0;
EA=0; //tam dung ngat
delay_ms(2);
while(!pir); //chor len 1
for(i=0;i<7;i++) //7 bit du lieu
{
bdem=0;
kdlieu=kdlieu>>1;
delay_100us(2);
while(pir){if(++bdem==255) goto thoat;}

delay_100us(2);
bdem=0;
delay_100us(2);
while(!pir){if(++bdem==255) bdem=255;}
delay_100us(2);
if(bdem>80) kdlieu=kdlieu|0x80;
}
kdlieu=kdlieu>>1;
for(i=0;i<5;i++) //5 bit dia chi
{
bdem=0;
kdchi=kdchi>>1;
delay_100us(2);
while(pir){if(++bdem==255) goto thoat;}
delay_100us(2);
bdem=0;
delay_100us(2);
while(!pir){if(++bdem==255) bdem=255;}
delay_100us(2);
if(bdem>80) kdchi=kdchi|0x80;
}
kdchi=kdchi>>3;
thoat:
//P1 = kdchi; delay_ms(250); delay_ms(250);
//delay_ms(250); delay_ms(250);
//P1 = kdlieu; delay_ms(250); delay_ms(250);
//delay_ms(250); delay_ms(250);
//delay_ms(250); delay_ms(250);
delay_ms(250); //delay_ms(250);
//P1 = 255;
EA=1;
kdau=1;
}
/* CHUONG TRINH CHINH */
//-------------------------------------------------void main(void)
{
unsigned char i,bdem;
unsigned int bngu=0;
P1=0; P3=255; P3_7=0;
kdlieu=0;
kdau=0;
kcp=0;
pled1=0; delay_ms(250); pled1=1;
delay_ms(250); delay_ms(250);
pled2=0; delay_ms(250); pled2=1;
IT0=0; EX0=1; EA=1;
bdem=0;
while(1)
{

if(kdau) //co phim nhan


{
if(kdchi!=hma_Sony) //ma lenh bi sai
{
pleddo=0; delay_ms(250); pleddo=1;
goto thoat;
}
if(kdlieu==hma_SELECT)
{
if(!kcp) //chua cho phep nhan phim so
{
bdem++;
if(bdem==3) //nhan phim 'select' 3 lan de cho phep dkhien th
bi
{
bdem=0;
kcp=1;
}
pledxanh=0; delay_ms(100);
pledxanh=1; delay_ms(200);
}
else //reset
{
bdem=0;
kcp=0;
pleddo=0; delay_ms(100);
pleddo=1; delay_ms(100);
}
}
else if(kdlieu==hma_POWER) //tat het
{
kcp=0;
bdem=0;
; //tat het thiet bi...
Pthbi=0;
pthbi9=0;
for(i=0;i<3;i++)
{
pleddo=0; delay_ms(100);
pleddo=1; delay_ms(250);
}
}
else if(kdlieu==hma_TVVIDEO) //thoat dkhien phim
{
kcp=0;
bdem=0;
pleddo=0; delay_ms(100);
pleddo=1; delay_ms(100);
}
else
{
if(kcp) //cho phep dkhien thbi sau khi nhan phim 'select' 3 lan
{
switch(kdlieu)
{
case hma_1:
{
pthbi1=~pthbi1;
break;

}
case hma_2:
{
pthbi2=~pthbi2;
break;
}
case hma_3:
{
pthbi3=~pthbi3;
break;
}
case hma_4:
{
pthbi4=~pthbi4;
break;
}
case hma_5:
{
pthbi5=~pthbi5;
break;
}
case hma_6:
{
pthbi6=~pthbi6;
break;
}
case hma_7:
{
pthbi7=~pthbi7;
break;
}
case hma_8:
{
pthbi8=~pthbi8;
break;
}
case hma_9:
{
pthbi9=~pthbi9;
break;
}
}
} //het ktra kcp=1!
} //het ktra phim.
thoat:
kdau=0;
bngu=0;
}
else
{
delay(); //1ms
if(++bngu==5000)
{
bngu=0;
Ngu();
}
}
}
}

/*********************************
CAC HAM CON
***********************************/
void delay_ms(unsigned char ms)
{
unsigned char dem;
lap1:
dem=165;
lap2:
if(--dem!=0) goto lap2;
dem=165;
lap3:
if(--dem!=0) goto lap3;
if(--ms!=0) goto lap1;
}
void delay_100us(unsigned char lan)
{
unsigned char dem;
lap:
dem=31; //1Tck
lap2:
if(--dem!=0) goto lap2; //
if(--lan!=0) goto lap;
}
//-------------------------------------------------------void delay(void)
{
unsigned char dem;
dem=165;
lap2:
if(--dem!=0) goto lap2;
dem=165;
lap3:
if(--dem!=0) goto lap3;
}
void Ngu(void)
{
unsigned char i;
; //tam:
pledxanh=0; for(i=0;i<100;i++){delay();}
pledxanh=1; for(i=0;i<100;i++){delay();}
}

You might also like