At89S52 RC5 [C]

To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
h3xen
-
Posty: 1
Rejestracja: 03 sie 2010, 13:22
Lokalizacja: Kielce

At89S52 RC5 [C]

Post autor: h3xen » 03 sie 2010, 13:30

Witam ostatnio zajmuje się zdekodowaniem kodu RC 5 w C kompilator Ride 7
niestety bez skutku nie wiem czy to wina czasów czy czegoś innego..

Moj kod:

Kod: Zaznacz cały


#include <reg52.h>		

unsigned char status = 0;	

char bitr ;
char  slopecount;						//licznik pomocniczy
sbit ir  =P3^2;
unsigned char p1; // poprzedni status bitu

// przerwanie od INT0
void INT0_(void) interrupt 0 
{
    status =0;
    bitr = 0x00; // kasujemy poprzednia paczke
    slopecount = 16 ; // licznik  zczyt. 8bit  z modulacja  
    EX0 = 0;	// wylaczenie przerwania od INT0
    ET0 = 1;  // wlacz przerwania licznika	
    TH0 = 0xEB;	// pomijamy pierwsze 3 bity 3x1.778=5.334
    TL0 = 0x2A; // 
    TF0 = 0;
    TR0 = 1;	// wlacz licznik					
}
// przerwanie od TIMER 0
void Timer0_() interrupt 1 
{
slopecount--;
  
                TR0  = 0; // wylacz licznik  
                 
                if (P3^2== 0 && p1==1) 	// jesli tak to 1                 
                bitr = bitr  |1;  //  operacja 
                else
                bitr = bitr  |0;  //  operacja     
                
                p1=P3^2;
                bitr = bitr << 1; // przesun bit o 1

        TH0 = 0xFC;	
        TL0 = 0xE0; //  800us
        TR0  = 1; 
      
 if (slopecount == 0) 
    {
    status=1;
    TR0=0; // wylacz licznik
    ET0=0;  // wylacz przerwanie
    EX0=1; // wlacz ponownie przerwania od INT0
    }
}


//początek programu głównego
void main(void)
{
TMOD = 0x01; // tryb 16bit
EX0 = 1; // przerwanie od INT0 wlaczone
EA=1;  // wszystkie przerwania wlaczone
	   
	while (1)
	{
    if (status ==1)
    P0=bitr; // wyswietlanie na diodach
    
    }
}


ODPOWIEDZ