⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 51型万能遥控器.txt

📁 51型万能遥控器 学习型遥控器 各种制式可学习现有市面99.9 的遥控信号。
💻 TXT
📖 第 1 页 / 共 2 页
字号:
#include 

#include 

#pragma ot(5,speed)

#define CLOCK9

#define MINGAP23

//70ms

#define GAPTIMES7

#define MAXLONG200

#define MAXBYTE20

#define MAXKEY36

#define PAGESIZE8

#define CODESITE128

#define REC_AREA1024*8

#define REC_LONG46


#define ERR16

#define FRR16

#define ERR10

#define ERR275

#define REC_ERR16

#define REC_ERR2125

#define LEARN0xfc

#define PARA0xfd

#define REC0xfb

#define STOP0xfe

#define KEY1P16

#define KEY2P17

#define KEY3P12

#define LEDP15

#define SEND0P10

#define SEND1P26

#define SEND2P25

#define SEND3P24

#define SEND4P23

#define SEND5P22

#define SEND6P21

#define SEND7P20

#define SEND8P11

#define SEND9P12

#define SEND10P13

#define SEND11P14

#define SEND12P15

#define SEND13P16

#define SEND14P17

#define SEND15P20

#define SDAP13

#define SCKP14

#define MEM_ADDRP34

unsigned char set(unsigned char i);

unsigned char getkey();

void load(unsigned char key);

void send2();

void delay1(unsigned char k);

void encode2(unsigned char key);

void para();

unsigned char read8();

void write8(unsigned char d);

unsigned char read(unsigned int addr);

unsigned char read0(unsigned char addr);

void write0(unsigned char addr,unsigned char x);

void write(unsigned int addr,unsigned char x);

void startbit();

void stopbit();

void learn(unsigned char key);

void f38();

void flash();

void delay10ms(unsigned char n);

void delay(unsigned int x);

void open_scon();

void close_scon();

void encode_sharp(unsigned char key);

void write_code(unsigned char key);

void send();

void send_sharp();

void send_rec();

void rec(unsigned char key);

intcode y=10700;

unsigned char code mask[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};

unsigned char N,ok,time,stoptime,cod[REC_LONG];

unsigned char readT,word,device,gaplocate;

unsigned char codelong,count,x1,x2,x3,x4,x5,x6;

unsigned char gap,startH,startL,Hh,Hl,Lh,Ll,order=0xff,r_device;

unsigned intx,width;

unsigned char sharp_jvc,flag,longflag;

main()

{

unsigned char key;

flash();

LED=0;

x=y*5;

x=x/5;

x=x/100;

x=x*123;

x=x/123;

key=x;

while(key!=read0(0)); 

key=read0(1);

key--;

//write0(1,key);

open_scon();

IT0=1;

ET1=0;

EX0=0;

ET0=1;

EA=1;

TR1=1;

TR0=1;

/*

while(1)

{

key=getkey();

if(key==REC)

{

load(0);

LED=0;

do

{

send();

if(sharp_jvc==1)//=1 is jvcif send second then startH=0

startH=0;

ok=0;

TL0=0;

TH0=255-stoptime;

while(ok==0);

}while(!KEY3);//wait key up

LED=1;

}

if(key==LEARN)

{

LED=0;

close_scon();

learn(0);

open_scon();

flash();

}

else if(key==PARA)

{

close_scon();

para();

open_scon();

}

}

*/

start:

key=getkey();

if(key==LEARN)

{

do{

LED=0;

key=getkey();

if(key!=STOP)

{

flash();

if(key<=MAXKEY)

{

close_scon();

learn(key);

open_scon();

}

flash();

}

}while(key!=LEARN);

}

else if(key==PARA)

{

LED=0;

r_device=0;

while(r_device==0);

flash();

close_scon();

para();

open_scon();

}

else if(key==REC)

{

LED=0;

r_device=0;

while(r_device==0);

flash();

write(7+device*PAGESIZE,255);

}

else if(key!=STOP)

{

load(key);

if(longflag==1) goto start;

LED=0;

do

{

send();

ok=0;

TL0=0;

TH0=255-stoptime;

while(ok==0);

if(sharp_jvc==1)//=1 is jvc

{

startH=0;

send();

}

}while(order!=STOP);//wait key up

LED=1;

}

goto start;

}

recieve() interrupt 4

{

unsigned char temp;

if(RI)

{

order=0xff;

temp=SBUF;

if((temp>=0xe0)&&(temp<=0xef))

{

device=temp%16;

r_device=1;

}

else

order=temp; 

RI=0;

}

}

void open_scon()

{

SCON=0x40;

REN=1;

TMOD=0x21;

ET1=0;

TL1=0xfa;

TH1=0xfa;

ES=1;

LED=1;

}

void close_scon()

{

TMOD=0x11;

ES=0;

ET1=1;

LED=0;

}

void flash()

{

LED=0;

delay10ms(15);

LED=1;

delay10ms(15);

LED=0;

delay10ms(15);

LED=1;

delay10ms(15);

LED=0;

delay10ms(15);

LED=1;

}

unsigned char getkey()

{

unsigned char i,j,key; 

while(1)

{

if(!KEY1)

{

key=PARA;

delay(1000);

while(!KEY1);

delay(1000);

}

else if(!KEY2)

{

key=LEARN;

delay(1000);

while(!KEY2);

delay(1000);

}

else if(!KEY3)

{

key=REC;

delay(1000);

while(!KEY3);

delay(1000);

}

else if(order!=0xff)//recieve order

{

if(order==STOP)

key=STOP;

else

key=order;

order=0xff;

}

else 

key=0xff;

if(key!=0xff)

{

return(key);

}

}

}

void f38()

{

switch(device)

{

case 0:

ok=0;

do{//38K HZ

SEND0=0;SEND0=0;SEND0=0;SEND0=0;

SEND0=0;SEND0=0;SEND0=0;SEND0=0;

SEND0=1;SEND0=1;SEND0=1;SEND0=1;

SEND0=1;SEND0=1;SEND0=1;SEND0=1;

SEND0=1;SEND0=1;SEND0=1;SEND0=1;

SEND0=1;

}while(ok==0);

break;

case 1:

ok=0;

do{//38K HZ

SEND1=0;SEND1=0;SEND1=0;SEND1=0;

SEND1=0;SEND1=0;SEND1=0;SEND1=0;

SEND1=1;SEND1=1;SEND1=1;SEND1=1;

SEND1=1;SEND1=1;SEND1=1;SEND1=1;

SEND1=1;SEND1=1;SEND1=1;SEND1=1;

SEND1=1;

}while(ok==0);

break;

case 2:

ok=0;

do{//38K HZ

SEND2=0;SEND2=0;SEND2=0;SEND2=0;

SEND2=0;SEND2=0;SEND2=0;SEND2=0;

SEND2=1;SEND2=1;SEND2=1;SEND2=1;

SEND2=1;SEND2=1;SEND2=1;SEND2=1;

SEND2=1;SEND2=1;SEND2=1;SEND2=1;

SEND2=1;

}while(ok==0);

break;

case 3:

ok=0;

do{//38K HZ

SEND3=0;SEND3=0;SEND3=0;SEND3=0;

SEND3=0;SEND3=0;SEND3=0;SEND3=0;

SEND3=1;SEND3=1;SEND3=1;SEND3=1;

SEND3=1;SEND3=1;SEND3=1;SEND3=1;

SEND3=1;SEND3=1;SEND3=1;SEND3=1;

SEND3=1;

}while(ok==0);

break;

case 4:

ok=0;

do{//38K HZ

SEND4=0;SEND4=0;SEND4=0;SEND4=0;

SEND4=0;SEND4=0;SEND4=0;SEND4=0;

SEND4=1;SEND4=1;SEND4=1;SEND4=1;

SEND4=1;SEND4=1;SEND4=1;SEND4=1;

SEND4=1;SEND4=1;SEND4=1;SEND4=1;

SEND4=1;

}while(ok==0);

break;

case 5:

ok=0;

do{//38K HZ

SEND5=0;SEND5=0;SEND5=0;SEND5=0;

SEND5=0;SEND5=0;SEND5=0;SEND5=0;

SEND5=1;SEND5=1;SEND5=1;SEND5=1;

SEND5=1;SEND5=1;SEND5=1;SEND5=1;

SEND5=1;SEND5=1;SEND5=1;SEND5=1;

SEND5=1;

}while(ok==0);

break;

case 6:

ok=0;

do{//38K HZ

SEND6=0;SEND6=0;SEND6=0;SEND6=0;

SEND6=0;SEND6=0;SEND6=0;SEND6=0;

SEND6=1;SEND6=1;SEND6=1;SEND6=1;

SEND6=1;SEND6=1;SEND6=1;SEND6=1;

SEND6=1;SEND6=1;SEND6=1;SEND6=1;

SEND6=1;

}while(ok==0);

break;

case 7:

ok=0;

do{//38K HZ

SEND7=0;SEND7=0;SEND7=0;SEND7=0;

SEND7=0;SEND7=0;SEND7=0;SEND7=0;

SEND7=1;SEND7=1;SEND7=1;SEND7=1;

SEND7=1;SEND7=1;SEND7=1;SEND7=1;

SEND7=1;SEND7=1;SEND7=1;SEND7=1;

SEND7=1;

}while(ok==0);

break;

}

}

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

void delay10ms(unsigned char n)

{

for(n;n>0;n--) delay(600);

}

void delay(unsigned int x)

{

for(x;x>0;x--);

}

unsigned char set(unsigned char i)

{

count++;

if(i==8)

{ 

cod[N]=word;

if(N<REC_LONG)

N++;

word=0;

i=0;

}

return(i);

}

INT0() interrupt 0

{

TR0=0;

Hh=TH0;

Hl=TL0;

TH0=0;

TL0=0;

TR0=1;

while(!P32);

TR0=0;

Lh=TH0;

Ll=TL0;

TH0=0;

TL0=0;

TR0=1;

readT=1;

}

Timer1() interrupt 3 

{

TL1=0;

TH1=256-CLOCK;//2.5ms

time++;

}

Timer0() interrupt 1

{

ok=1;

}

void delay1(unsigned char k)

{

for(;k>0;k--);

}

void learn(unsigned char key)

{

unsigned char i;

i=read(7+device*PAGESIZE);

if(i==255)

rec(key);

else if(i==2)

encode_sharp(key);

else 

encode2(key);

}

void send()

{

if(sharp_jvc==255)

send_rec();

if(sharp_jvc==2)

send_sharp();

else

send2();

}

void write(unsigned int addr,unsigned char x)

{

unsigned char ah,al,temp;

addr=addr+3;

if(addr>=1024*8)

{

MEM_ADDR=1;

temp=162;

}

else

{

MEM_ADDR=0;

temp=160;

}

ah=addr/256;

al=addr%256;

startbit();

write8(temp);

write8(ah);

write8(al);

write8(x);

stopbit();

delay1(200);

}

void write0(unsigned char addr,unsigned char x)

{

startbit();

write8(160);

write8(0);

write8(addr);

write8(x);

stopbit();

delay1(200);

}

unsigned char read0(unsigned char addr)

{

unsigned char dat;

MEM_ADDR=0;

startbit();

write8(160);

write8(0);

write8(addr);

startbit();

write8(161);

dat=read8();

stopbit();

return(dat);

}

unsigned char read(unsigned int addr)

{

unsigned char dat,ah,al,temp;

addr=addr+3;

if(addr>=1024*8)

{

MEM_ADDR=1;

temp=162;

}

else

{

MEM_ADDR=0;

temp=160;

}

ah=addr/256;

al=addr%256;

startbit();

write8(temp);

write8(ah);

write8(al);

startbit();

write8(temp+1);

dat=read8();

stopbit();

return(dat);

}

void write8(unsigned char d)

{

unsigned char i;

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

{

SCK=0;

if((d<<I)&0X80) SDA="1; 
else SDA=0;

SCK=1;delay1(38);

}

SCK=0;

SCK=1;//ACK bit

while(SDA);

SCK=0;

}

unsigned char read8()

{

unsigned char i;

unsigned char d=0;

SCK=0;

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

{

SDA=1;

SCK=1;delay1(38);

if(SDA==1) d=d|((0x80)>>i);

delay1(38);

SCK=0;

}

SCK=0;delay1(38);//NO ACK

SDA=1;

SCK=1;delay1(38);

SCK=0;

return(d);

}

void startbit()

{

SCK=0;delay1(38);

SDA=1;

SCK=1;delay1(38);//start bit

SDA=0;delay1(38);

SCK=0;delay1(38);

}

void stopbit()

{

SCK=0;

SDA=0;delay1(38);

SCK=1;delay1(38);//stop bit

SDA=1;delay1(38);

SCK=0;delay1(38);

}

void write_code(unsigned char key)

{

unsigned char i;

if(read(4+device*PAGESIZE)==1) 

write(4+device*PAGESIZE,gap);

x=CODESITE+(MAXBYTE+2)*(key+MAXKEY*device);

write(x,count);

write(x+1,gaplocate);

if(count<MAXLONG)

for(i=0;i<N;I++)

write(x+2+i,cod);

}

void load(unsigned char key)

{

unsigned char i; 

unsigned int offset;

sharp_jvc=read(7+device*PAGESIZE);

stoptime=read(6+device*PAGESIZE)+36;

startL=read(3+device*PAGESIZE);//256-31;

startH=read(2+device*PAGESIZE);//256-15;

width=read(0+device*PAGESIZE)*256+read(1+device*PAGESIZE);

gap=read(4+device*PAGESIZE);

if(sharp_jvc!=2)

{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -