红外遥控小车程序.doc

  • 格式:doc
  • 大小:112.00 KB
  • 文档页数:23

附录一 程序代码

红外遥控编码程序

#include

#define uchar unsigned char

#define uint unsigned int

#define uintlong unsigned long

sbit p3_0=P3^0;

sbit p2_1=P2^1;

sbit p1_0=P1^0;

sbit p1_1=P1^1;

sbit p1_2=P1^2;

sbit p1_3=P1^3;

bit out;

uint keyvalue=0x00,flag_key=0,value1,value2,keycount=0,i,j,flag_set=0,

flag_press=0;

uchar code keycode[4]={0x7f,0xbf,0xdf,0xef};

uchar code

portvalue[12]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x00,

0x0b};

uchar code wy[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

//**********红外发送部分**********//

uchar user1=0x00,user2=0x00;

uint count=0,endcount=0;

uint irdata=0;

void deltime(void);

void key_scan(void);

void sendirdata(void); main(void)

{

EA = 1;

TMOD = 0x11;

ET0 = 1;

p3_0=1;

P1=0xff;

TH0 = 0xFF;

TL0 = 0xE4;

TR0 = 0;

while(1)

{

key_scan();

if(flag_press==1)

{

flag_press=0;

TR0=1;

sendirdata();

}

}

}

//**********按键扫描***********//

void key_scan(void)

{

for(i=0;i<=3;i++)

{

P1=keycode[i]; if(p1_3==0)

{keycount=i*3+0;flag_key=1; break;}

if(p1_2==0)

{keycount=i*3+1;flag_key=1;break;}

if(p1_1==0)

{keycount=i*3+2;flag_key=1;break;}

}

if(flag_key==1)

{

flag_key=0;

value1=P1;

deltime();

value2=P1;

if(value1==value2)

{keyvalue=portvalue[keycount];flag_set=1;flag_press=1;}

while(flag_set)

{value2=P1;

if(value1!=value2)

flag_set=0;

}

}

}

//**********延时**********//

void deltime(void)

{

uint k;

for(k=0;k<=20;k++)