logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Wartość Poke w 89C51 a w 90S8515

waleryfw 08 Sty 2009 12:05 1156 5
REKLAMA
  • #1 5967961
    waleryfw
    Poziom 14  
    Postanowiłem zmienić wsad AVT2750 Termometr i rejestrator temperatury na procesorze 89C51 (wsad na stronie Edw)
    Mam wszystko zmienione na 90S8515 czyli kompilacja jest po zmianach OK
    Natrafiłem w programie pierwotnym na funkcję POKE i odwrotność PEEK

    Jest tam:

    Next_2:
    Count1 = 0 'zerowanie licznika pomocniczego
    Wartosc = Peek(36) 'pobierz starsza czesc integera temperatury
    Adres = Adresrej 'ustal adres zapisu
    Writee 'zapisz
    Incr Adresrej 'zwieksz adres EEPROM
    Wartosc = Peek(37) 'pobierz mlodsza czesc integera temperatury
    Adres = Adresrej 'przepisz adres potrzebny do procedury zapisu
    Writee 'zapisz
    Incr Adresrej 'zwiekszenie adresu o 1
    Adres = 2 : Wartosc = Adresrej : Writee 'zapis adesu konca danych

    a dalej :

    Reade 'odczyt z EEPROM
    Poke 38 , Wartosc 'wpakowanie do bufora
    Incr Adres 'to sam dla mlodszej czesci
    Reade
    Poke 39 , Wartosc
    Incr Adres

    Moja prośba jest taka: w helpie do avr znalazłem że poke może być 0-31
    a tu są większe wartości rejestru.Jak będzie się to ustawienie zachowywać w przeróbce
    na 90S8515
  • REKLAMA
  • #2 5968088
    Freddy
    Poziom 43  
    Wiesz, że dzwonią, tylko nie wiesz w którym kościele !
    W instrukcji do Bascoma AVR jest wyraźnie napisane do czego służy instrukcja POKE i PEEK

    Write a byte to an internal register

    lub dla Bascoma 8051
    jest z zakresu 0 - 255
    Write a byte to an internal memory location.
  • REKLAMA
  • #3 5972490
    waleryfw
    Poziom 14  
    Wszystko się zgadza mam Help PL do 8051 i AVR i czytałem do czego są te instrukcje .
    Ale wcześniej pisałem że przerabiam program z 89C51 gdzie zakres 0-255 na 90S8515 gdzie zakres 0-31.
    I teraz problem to przepisanie zakresu z 8051 Poke np: 36 , 37 , 38 , 39
    na zakres 0-31 do AVR.
    Wiem że to są rejestry ale jak to jest przeliczane w praktyce , skąd mogę to wyliczyć , przypisać aby zmieścić się w granicy 0-31

    Chyba teraz odpowiednio opisałem mój problem
  • REKLAMA
  • #4 5972967
    Chris_W

    Poziom 39  
    Pamiętam trochę basica z PCów - i użycie instrukcji peek/poke jest troche śmieszne na etapie tworzenia oprogramowania. To bardziej instrukcje debuggowania (podglądu danych). Przecież podczas pisania lepiej użyć zmiennej.
  • REKLAMA
  • #5 5974060
    zumek
    Poziom 39  
    waleryfw napisał:
    ...Wiem że to są rejestry ale jak to jest przeliczane w praktyce , skąd mogę to wyliczyć , przypisać aby zmieścić się w granicy 0-31

    Powiem krótko: Jeśli chcesz ten kod przenieś na AVR-a , to wybij sobie z głowy użycie instrukcji Peek i Poke
    Żeby zrozumieć, w jakim celu autor ich użył, to podpowiem, że pod tymi adresami znajdują się zmienne Adresrej, T,Rsbuf.
    
    34-> LSB Adresrej
    35-> MSB Adresrej
    36-> LSB T
    37-> MSB T
    38-> LSB Rsbuf
    39-> MSB Rsbuf
    


    Teraz łatwo możesz wydedukować, czym i jak zastąpić Poke i Peek, a sposobów jest przynajmniej kilka.
REKLAMA