Kod RC5 do 8051

Loading thread data ...

tomzor wrote:

#define XTAL 11.0592e6 // 8 ... 25 MHz #define TIME_INT 0.5 // ms #define IRIN P3_2

unsigned char pulselen = 0; unsigned char timeout = 0; unsigned char bitsrecd = 0; unsigned char ir_cmd = 0; unsigned char ir_adr = 0; unsigned int irbuffer = 0; unsigned int irbuffer_old = 0; bit previr = 1; bit framebusy = 0; bit mustshort = 0; bit irvalid = 0;

void int_timer_0(void) interrupt TF0_VECTOR using 1 { register char i, tmp;

TL0 |= (unsigned int) (65536-((TIME_INT*1e3)/(1/(XTAL/12e6)))); TH0 = (unsigned int) (65536-((TIME_INT*1e3)/(1/(XTAL/12e6))))/256; //Reload timeout timer. //###########################################################

if(previr != IRIN) { if(framebusy) { if(mustshort) { mustshort = 0; irbuffer <<= 1; bitsrecd++; } else { if(pulselen < 2) // wartość : 4 - dla przerwań co 256us; 2 - dla 512us { mustshort = 1; } else { irbuffer <<= 1; irbuffer |= 1; bitsrecd++; } } } else { framebusy = 1; bitsrecd = 0; timeout = 0; irbuffer = 0; mustshort = 0; pulselen = 0; } pulselen = 0; previr++; } else { pulselen++; if(pulselen == 13) // wartoœć : 25 - dla przerwań co 256us; 13 - dla 512us { timeout++; if(framebusy) { framebusy = 0; if(irbuffer != irbuffer_old) { irbuffer_old = irbuffer; irvalid = 1; set_timeout = 0; ir_cmd = irbuffer; ir_adr = irbuffer >> 8; }; } if(timeout > 2) irvalid = 0; } }; }

Wynik : ir_cmd - odebrany kod polecenia (odebrane kody są nieco inne niż standardowo np: przycisk z cyfą 2 daje kod 3 ) ir_adr - adres

Artur

Reply to
Artur

Witam Dzieki tylko mam problem ze zmienna previr bo w lini jest cos takiego previr++; i tego keil sie czepia czy dobrze jest zadeklarowana ?

dzieki za wszelkie uwagi, pomoc itp

Tomek

Reply to
tomzor

U mnie kompilowało i działało bez problemu, używałem RIDE C (

formatting link
). previr to zmienna bitowa. Jeśli previr++ nie dziła spróbuj previr = !previr efekt ten sam.

Artur

Reply to
Artur

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.