Jak wczytać kod procedury ?

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
Badman
-
Posty: 36
Rejestracja: 12 sty 2010, 13:07
Lokalizacja: Góra

Jak wczytać kod procedury ?

Post autor: Badman » 07 sty 2011, 14:45

Aktualnie używam do kompilacji kodu asemblerowego kompilatora asem-51, elegenacko się integruje z gedit pod Gnome.
Czy jest możliwość jakąś dyrektywą ładowanie kodu procedur, tzn. :

Program główny:

Kod: Zaznacz cały

$INCLUDE (BIOS.INC)

; jakas dyrektywa wczytujaca procedur z zewnetrznego pliku - wlasnie jaka ? :)


  org 8000h

  lcall Zewnetrzna 
; tutaj dalsz czesc kodu

  END
Zawartośc pliku z procedurą:

Kod: Zaznacz cały

Zewnetrzna:
  push Acc
  mov A, R0
  subb A, R0
  mov R0, A
  push Acc
  ret

  END

Awatar użytkownika
c4v2
Użytkownik
Posty: 426
Rejestracja: 22 lis 2005, 15:14
Lokalizacja: z przed monitora

Post autor: c4v2 » 07 sty 2011, 14:59

Wydaje mi się że będzie to dyrektywa INCLUDE z parametrem w postaci nazwy (lub i ścieżką) pliku z definicją procedury.

Awatar użytkownika
mr_x
Użytkownik
Posty: 385
Rejestracja: 12 gru 2010, 19:05
Lokalizacja: /bin/bash
Kontakt:

Post autor: mr_x » 07 sty 2011, 16:21

A może po prostu lcall?

Awatar użytkownika
c4v2
Użytkownik
Posty: 426
Rejestracja: 22 lis 2005, 15:14
Lokalizacja: z przed monitora

Post autor: c4v2 » 07 sty 2011, 16:46

To raczej jest wywołanie procedury, a kompilator musi być poinformowany w którym pliku jest definicja procedury.

Awatar użytkownika
mr_x
Użytkownik
Posty: 385
Rejestracja: 12 gru 2010, 19:05
Lokalizacja: /bin/bash
Kontakt:

Post autor: mr_x » 07 sty 2011, 16:48

No to w czym problem, skoro jest INCLUDE?

keruseykaryu

Post autor: keruseykaryu » 07 sty 2011, 18:44

Powinno być jeszcze EXTERNAL, ale nie ma.
Instrukcja po polskawemu jest: http://plit.de/asem-51/ASEM5113_v2_pl.pdf

Badman
-
Posty: 36
Rejestracja: 12 sty 2010, 13:07
Lokalizacja: Góra

Post autor: Badman » 08 sty 2011, 14:54

Spróbuję z dyrektywą INCLUDE, jak tylko będę miał dostęp do mojego komputera.
Widziałem właśnie różne kody źródłowe gdzie była np. użyta dyrektywa EXTRN przy "zmiennej". Wtedy plik asemblerowy był modułem dla programu w C i "zmienne" z dyrektywą EXTRN były widziane w C. Oprócz tego dyrektywa PUBLIC pozwalająca korzystać z procedur w C

Np. moduł w asemblerze:

Kod: Zaznacz cały

EXTRN DATA (temp)
PUBLIC Odczyt_temp

Odczyt_temp:
        mov A, temp
       ;tutaj pewien kod
   ret
    
  END
Program w C:

Kod: Zaznacz cały

#include <reg51.h>

  char temp;
  extern void Odczyt_temp{];

void main(void)
{
  char i;

  Odczyt_temp();
}
Widzę po pobieżnym przeczytaniu dokumentacji do Asem51, że brakuje tych dyrektyw.
Zaczyna mnie wkurzać kopiowanie wcześniej napisanych procedur do nowych programów. Przydałby się lepszy kompilator. Jaki polecacie, który będzie spełniał to co powyżej napsiałem.

PS. Najlepiej darmowy, nie koniecznie musi działać pod linuksem, bo w końcu jest Wine :)

Awatar użytkownika
mr_x
Użytkownik
Posty: 385
Rejestracja: 12 gru 2010, 19:05
Lokalizacja: /bin/bash
Kontakt:

Post autor: mr_x » 08 sty 2011, 16:02

Powiem szczerze, że sam używam asem51 i nie narzekam. Innego nie potrzebuję, zwłaszcza mieszania z C, bo piszę wyłącznie w asemblerze.

Badman
-
Posty: 36
Rejestracja: 12 sty 2010, 13:07
Lokalizacja: Góra

Post autor: Badman » 19 sty 2011, 13:46

Znalazłem fajne środowisko programistyczne pod linuksem nazywa się MCU8051IDE.

ODPOWIEDZ