Koleżankom i Kolegom Radioamatorom, Krótkofalowcom,
Konstruktorom i Waszym Rodzinom – w tych trudnych czasach –
Zdrowych, Spokojnych i Pogodnych Świąt Bożego Narodzenia oraz
Szczęśliwego Nowego Roku

Życzy Zespół Home Made


Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Bascom AVR
SP5FCS Offline
Adam
*****

Liczba postów: 1,072
Dołączył: 02-02-2009
Post: #3
RE: Bascom
Disassembler
Pisząc oprogramowanie w językach wysokopoziomowych (Bascom, C, Pascal) warto rzucić okiem na kod generowany przez kompilator. Jeśli środowisko kompilatora nie generuje pliku z kodem assemblera lub autor projektu udostępnia tylko pliki hex-a możemy zrobić to sami zewnętrznym disassemblerem. Wadą tej metody jest brak powiązania z instrukcjami wysokopoziomowymi, brak komentarzy, brak nazw zmiennych, instrukcji, funkcji, procedur tablic itd. , jednym słowem sam na sam z "gołym kodem".
Proste disassemblery nie radzą sobie z danymi umieszczanymi w kodzie programu (stałe, tablice, łańcuchy), zamieniając je bez sensu na stosowny kod programu dlatego musimy robić to rozważnie. Jeśli znamy dobrze procesor, posiadamy schemat urządzenia oraz pewne doświadczenie w assemblerze rozpracowanie takiego kodu to tylko kwestia czasu. Jako przykład kilka prostych instrukcji Bascoma oraz odpowiedni kod assemblera.

Kod:
;If Pind.2 = 0 Then
          sbic   PIND, 2      ; 008C 9982
          rjmp   avr00AF      ; 008D C021
;Waitms 25
          ldi    r24, 0x19    ; 008E E189
          ldi    r25, 0x00    ; 008F E090
          rcall  avr0153      ; 0090 D0C2
;If Pind.2 = 0 Then
          sbic   PIND, 2      ; 0091 9982
          rjmp   avr00AF      ; 0092 C01C
;Portd.3 = 0  
          cbi    PORTD, 3     ; 0093 9893
;Wait 3  
          ldi    ZL, 0x03     ; 0094 E0E3
          ldi    ZH, 0x00     ; 0095 E0F0
          rcall  avr011B      ; 0096 D084

Wirtualny kanał szeregowy
Rafał, jeśli strumień danych do odbioru jest mały a stopień obciążenie procesora niewielki to może pracować to poprawnie nawet bez przerwań. W prostych aplikacjach możemy często sprawdzać czy jest nowy znak w buforze aby go odczytać. Pamiętajmy jednak, że dane docierają do procesora asynchronicznie w stosunku do jego algorytmu pracy. Jeśli trafimy na moment w którym procesor jest zajęty dłużej obsługą innego zadania to tylko przerwanie daje mam gwarancję pełnej obsługi odbioru. System przerwań w mikroprocesorach to jedno z najmocniejszych narzędzi budowania aplikacji dlatego warto go lepiej poznać.

73 Adam
20-08-2010 14:24
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
Bascom AVR - SP5FCS - 15-08-2010, 22:43
RE: Bascom AVR - SP3SWJ - 06-10-2010, 21:56
RE: Bascom AVR - SQ2EER - 25-10-2010, 21:07
RE: Bascom AVR - SP3SWJ - 25-10-2010, 21:17
RE: Bascom AVR - SQ2EER - 25-10-2010, 21:23
RE: Bascom AVR - SP3SWJ - 25-10-2010, 21:35
RE: Bascom AVR - SQ2EER - 25-10-2010, 21:39
RE: Bascom AVR - SP3SWJ - 25-10-2010, 22:05
RE: Bascom AVR - SQ2EER - 25-10-2010, 22:28
RE: Bascom AVR - SP3SWJ - 27-10-2010, 1:49
RE: Bascom AVR - SQ2EER - 18-03-2011, 21:39
RE: Bascom AVR - SP3SWJ - 18-03-2011, 22:02
RE: Bascom AVR - SQ2EER - 18-03-2011, 22:22
RE: Bascom AVR - SQ9MDD - 18-03-2011, 22:31
RE: Bascom AVR - SQ2EER - 18-03-2011, 23:03
RE: Bascom AVR - SP3SWJ - 18-03-2011, 23:05
RE: Bascom AVR - SQ2EER - 18-03-2011, 23:15
RE: Bascom AVR - SQ2EER - 04-09-2011, 22:04
RE: Bascom AVR - SP3SWJ - 04-09-2011, 22:09
RE: Bascom AVR - SQ2EER - 04-09-2011, 22:22
RE: Bascom AVR - SP3SWJ - 04-09-2011, 22:36
RE: Bascom AVR - SQ9MDD - 06-05-2012, 16:10
RE: Bascom AVR - SP3SWJ - 06-05-2012, 16:10
RE: Bascom AVR - SQ9MDD - 06-05-2012, 16:21
RE: Bascom AVR - SP3SWJ - 06-05-2012, 16:34
RE: Bascom AVR - SQ9MDD - 06-05-2012, 16:41
RE: Bascom AVR - SP3SWJ - 06-05-2012, 16:41

Skocz do:


Użytkownicy przeglądający ten wątek: 2 gości