Professional Documents
Culture Documents
#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)
{
}
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();}
}