Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[PIC] Jak tablice w ASM przeniesc do C ?

rmajda 27 Maj 2009 11:57 1699 10
  • #1 27 Maj 2009 11:57
    rmajda
    Poziom 20  

    Witam,

    Mam tablice za danymi w takiej postaci:
    retlw b'11111111' ; ff
    retlw b'11001000' ; c8
    retlw b'00000000' ; 00
    retlw b'00010111' ; 17
    .............

    Jak to przenieść do tablicy w języku C dla uC PIC [kompilator C18 a nie mikroC]?
    Dodam że dane są wygenerowanie przez program Romana Black http://www.romanblack.com/picsound.htm..

    0 10
  • #2 27 Maj 2009 13:26
    lbzj
    Poziom 9  

    Napisać skrypt w prostym języku programowania np. Python, który zamieni ci to na reprezentacje tablicową.

    Jeśli potrzebujesz gotowca, to napisz na PW.

    0
  • #3 27 Maj 2009 13:33
    rmajda
    Poziom 20  

    lbzj: Jest możliwość abyś taki skrypt i opis jak tego używać umieścił na elektrodzie, zostało by dla potomnych. Dodam że kompletnie nie znam Pytona ani niczego co jest z tym związane :-(
    Przykład mógłby zostać do powyższego problemu i potem każdy by sobie przerobił jak by chciał.

    0
  • #4 27 Maj 2009 19:15
    895614
    Użytkownik usunął konto  
  • #5 27 Maj 2009 19:56
    rmajda
    Poziom 20  

    Dzięki ale nie rozumiem Twojego posta :-) Chodzi mi o to że mam tablicę w postaci jak w poście pierwszym i nie chciałbym jej ręcznie przepisywać. Chciałbym ją opatrzyć jakoś słowami asm{} i wsadzić do kodu C.

    0
  • #6 28 Maj 2009 07:56
    895614
    Użytkownik usunął konto  
  • #7 28 Maj 2009 23:35
    Szymon Tarnowski
    Poziom 27  

    Ja bym spróbował skompilować ten kawałek do oddzielnego modułu a potem zlinkował z właściwym programem.

    0
  • #8 29 Maj 2009 00:19
    Ahcinga
    Poziom 12  

    Rozumiem, że masz taki długiiiii ciąg instrukcji RETLW i chcesz to przekształcić na postać zgodną z deklaracją stałych w C, ale żeby nie trzeba było siedzieć pół dnia i to robić.
    Jeśli jest to jednorazowe zadanie to otwórz to w notatniku i odpowiednie fragmenty zamień na odpowiednie inne ciągi znaków (nawiasy, przecinki, średniki).

    0
  • #9 29 Maj 2009 07:41
    adamwesola
    Poziom 24  

    Wygenerowałem dane z tego programu i kombinowałem, daje się : zamiast notatnika, crimson editor , ma on tryb kolumnowy i można usunać/dodać dowolne znaki lub ciagi znaków, usunąłem zbedene napisy, dołożyłem do przecinki i zapisałem do pliku tekstowego.
    Nastepnie w cygnus hex editor usunałem wszystkie znaki konca lini i znow zapisalem.
    oto efekt :
    ,12,5E,AA,AA,CA,AA,AA,B2,AA,A5,66,CD,2A,CC,CC,9A,96,6C,CB,92,B4,AA,

    0
  • #10 29 Maj 2009 08:33
    Dr.Vee
    VIP Zasłużony dla elektroda

    Kolega pisze w C i nie umie "na kolanie" takiego programu napisać? Może:

    Code:
    #include <stdio.h>
    

    const char* naglowek = "const char tablica_hex[] = {";
    const char* stopka = "};";

    void wypisz_liczbe(const char* liczba)
    {
        printf("\t0x%s,\n", liczba);
    }

    int main(void)
    {
        char liczba_hex[10];

        printf("%s\n", naglowek);
        while (scanf("%*[^;]; %9s", liczba_hex) == 1)
            wypisz_liczbe(liczba_hex);
        printf("%s\n", stopka);
        return 0;
    }

    Uruchamiasz w konsoli, wklejasz tablicę i na wyjściu dostajesz wynik :)

    Pozdrawiam,
    Dr.Vee

    0
  • #11 02 Cze 2009 08:28
    rmajda
    Poziom 20  

    Dziękuję za odpowiedzi napewno którąś z metod zastosuję. Dam znać :-)

    0