Mikrokontroler ATmega32. Język symboliczny

Podobne dokumenty
/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

1 Podstawy c++ w pigułce.

Zmienne, stałe i operatory

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Podstawy programowania skrót z wykładów:

1 Podstawy c++ w pigułce.

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Architektura komputerów. Asembler procesorów rodziny x86

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

2 Przygotował: mgr inż. Maciej Lasota

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Języki i metodyka programowania. Wprowadzenie do języka C

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Programowanie hybrydowe C (C++) - assembler. MS Visual Studio Inline Assembler

Język C - podstawowe informacje

Wyrażenia arytmetyczne

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Podstawy programowania w języku C

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Podstawy programowania w języku C i C++

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

Struktura i działanie jednostki centralnej

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Elementy języków programowania

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p.

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p.

Architektura komputerów

Programowanie strukturalne i obiektowe

Architektura komputerów

AHDL - Język opisu projektu. Podstawowe struktury języka. Komentarz rozpoczyna znak i kończy znak %. SUBDESIGN

Techniki mikroprocesorowe i systemy wbudowane

petla:... ; etykieta określa adres w pamięci kodu (docelowe miejsce skoku) DJNZ R7, petla

Wykład 2 Składnia języka C# (cz. 1)

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 4. Karol Tarnowski A-1 p.

Dyrektywy asemblera. Składnia: etykieta:.dyrektywa argument. rezerwuje zasoby w SRAM początek segmentu kodu

PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA

Wstęp do assemblera MA51

Algorytmika i Programowanie VBA 1 - podstawy

Programowanie w elektronice: Podstawy C

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Operatory w C++ Operatory arytmetyczne. Operatory relacyjne (porównania) Operatory logiczne. + dodawanie - odejmowanie * mnożenie / dzielenie % modulo

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Język C zajęcia nr 11. Funkcje

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

Podstawy programowania C. dr. Krystyna Łapin

Mikrooperacje. Mikrooperacje arytmetyczne

Architektura typu Single-Cycle

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Część 4 życie programu

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym

1. Operacje logiczne A B A OR B

C++ wprowadzanie zmiennych

Odczyt danych z klawiatury Operatory w Javie

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak:

dr inż. Jarosław Forenc

Teoretyczne Podstawy Informatyki

Pracownia Komputerowa wykład VI

Lista instrukcji mikroprocesora Programowanie w assemblerze

Języki programowania zasady ich tworzenia

Kodowanie liczb całkowitych w systemach komputerowych

Podstawy Informatyki Języki programowania c.d.

LibreOffice Calc VBA

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Mikrokontrolery w mechatronice. Wstępne uwagi

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

1.1. Pozycyjne systemy liczbowe

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Lista Rozkazów: Język komputera

4 Standardy reprezentacji znaków. 5 Przechowywanie danych w pamięci. 6 Literatura

System operacyjny Linux

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

ARCHITEKTURA KOMPUTERÓW Systemy liczbowe

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Wykład 4. Środowisko programistyczne

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

Wstęp do Programowania, laboratorium 02

Cyfrowy zapis informacji

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Temat 7. Programowanie mikrokontrolerów z rodziny PIC16 w języku C przy użyciu HI-TECH C for PIC10/12/16

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Transkrypt:

Mikrokontroler ATmega32 Język symboliczny 1

Język symboliczny (asembler) jest językiem niskiego poziomu - pozwala pisać programy złożone z instrukcji procesora. Kody instrukcji są reprezentowane nazwami symbolicznymi - mnemonikami 2

- cechy Mnemoniczne nazwy operacji Operowanie symbolicznymi nazwami adresów danych i etykiet Możliwość stosowania makrooperacji Możliwość łatwiejszego modyfikowania programu 3

- translator Zostanie omówiony translator języka symbolicznego AVR Assembler 2 dostępny w środowisku AVR Studio. W szczególności będą omówione następujące zagadnienia: Składnia linii programu Wyrażenia Dyrektywy Deklaracja zmiennych i stałych Makrooperacje Translacja warunkowa 4

cechy translatora Translator języka symbolicznego jest wyposażony w preprocesor tekstu, sterowany z pomocą dyrektyw preprocesora Translator nie rozpoznaje małych i wielkich znaków oprócz dyrektyw preprocesora Długość wiersza programu powinna się mieścić w 120 znakach (w przeciwnym przypadku tekst można przenosić do następnego wiersza z użyciem znaku kontynuacji \\ ) 5

- składnia Możliwa składnia wiersza pliku źródłowego: [etykieta:].dyrektywa [argument] [;komentarz] [etykieta:] instrukcja [argument] [;komentarz] [#dyrektywa_preprocesora] [argument] [//komentarz] [;komentarz] 6

- wyrażenia Wyrażenia, na których operują instrukcje i dyrektywy, mogą być budowane z: Elementów prostych stałych liczbowych Operatorów Funkcji Wartość wyrażenia jest obliczana w trakcie procesu asemblacji (jest stałą). 7

- wyrażenia Elementy proste liczby o rozdzielczości max. 64 bity: Wartości całkowite: dziesiętne (np. 255), szesnastkowe (0xFF, $FF), ósemkowe (075), binarne (0b00001001), znakowe ( a ) Wartości zmiennoprzecinkowe (np. 3.14159) Etykiety, którym przyporządkowano pewien adres Etykiety zdefiniowane przez dyrektywy SET i EQU Skrót PC, któremu jest przyporządkowany adres instrukcji, której PC jest argumentem 8

- wyrażenia Operatory rozdzielają elementy proste i funkcje w wyrażeniu Rozróżnia się operatory arytmetyczne, logiczne i porównania Kolejność działań jest określona priorytetem operatora (można ją modyfikować przez użycie nawiasów), rozróżnia się 11 poziomów priorytetu 9

- wyrażenia Zestawienie operatorów Symbol Opis Priorytet! Negacja logiczna 11 ~ Negacja bitowa 11 - Negacja arytmetyczna 11 * Mnożenie arytmetyczne 10 / Dzielenie arytmetyczne 10 % Reszta z dzielenia 10 + Dodawanie arytmetyczne 9 - Odejmowanie arytmetyczne 9 << Przesunięcie logiczne w lewo 8 >> Przesunięcie logiczne w prawo 8 10

- wyrażenia Zestawienie operatorów, cd. Symbol <, <=, >, >= ==,!= & ^ && Opis Porównania (relacje większości, mniejszości) Porównania (testy równości, braku równości) Mnożenie bitowe Suma bitowa modulo 2 Suma bitowa Mnożenie logiczne Sumowanie logiczne Priorytet 7 6 5 4 3 2 1 11

- wyrażenia Funkcje pozwalają na przeprowadzenie operacji jednoargumenowych. Argument funkcji podaje się w nawiasach okrągłych. Zestawienie funkcji: low(), high(), byte2(), byte3(), byte4(), lword(), hword(), page(),abs(), exp2(), log2(), int(), frac(), q7(), q15(). 12

- wyrażenia Przykłady wyrażeń w instrukcjach asemblera: Poczatek: ldi R16, low(500) ;ładuj R16 młodszym bajtem wartości 500 ldi R17, high(poczatek*2) ;ładuj R17 starszym bajtem dwukrotnie ;zwiększonego adresu ldi R18, (1<<2) (1<<5) ;ładuj R18 wartością 0b00100100 ldi R19, (log2(5)<3)*0x15 ;ładuj R19 wartością 0x15, jeśli log 2 (5)<3 13

- dyrektywy asemblera Dyrektywy sterujące procesem asemblacji:.device typ_układu informuje translator o typie mikrokontrolera.include nazwa_pliku dołącza pliki biblioteczne.list załącza generowanie listingu.nolist wyłącza generowanie listingu.listmac załącza rozwijanie makr w listingu.exit powoduje zakończenie asemblacji pliku źródłowego 14

- dyrektywy asemblera Definicje:.EQU etykieta=wyrażenie definiuje etykietę i przypisuje jej wartość liczbową bez możliwości jej modyfikacji.set etykieta=wyrażenie definiuje etykietę i przypisuje jej wartość liczbową z możliwości jej wielokrotnej modyfikacji za pomocą tej samej dyrektywy.def nazwa [= rejestr ] przypisuje rejestrom roboczym nazwy symboliczne Przykłady:.EQU stala = 9.SET zmienna = 10.SET zmienna = 11.DEF akumulator = R16 15

- dyrektywy asemblera Segmenty programu określają rodzaj pamięci, na której aktualnie operujemy:.cseg pamięć programu.dseg pamięć danych.eseg pamięć EEPROM Możliwe jest przemieszczanie się w obszarze aktualnie wybranej pamięci za pomocą dyrektywy:.org wyrażenie 16

- dyrektywy asemblera Zmienne w pamięci danych:.byte wyrażenie rezerwuje pamięć danych na zmienną (w segmentcie.dseg) w liczbie bajtów określonej wyrażeniem. Aby móc się odwołać do zmiennej dyrektywę należy poprzedzić etykietą. 17

- dyrektywy asemblera Stałe w pamięci programu i EEPROM:.DB wyrażenie[, wyrażenie ] rezerwuje pamięć programu lub EEPROM na stałą lub ciąg stałych podanych jako lista argumentów, w liczbie bajtów równej liczbie wyrażeń w liście. Aby móc się odwołać do stałej dyrektywę należy poprzedzić etykietą. Istnieją podobne dyrektywy dla słów o większym rozmiarze:.dw słowo 16-bitowe, DD 32, DQ 64. Stałe wielobajtowe zapisane są w pamięci w formacie Little-Endian 18

- dyrektywy asemblera Przykład użycia powyższych dyrektyw:.dseg.org 0x0060 Zmienna1:.BYTE 2 Zmienna2:.BYTE 1.ESEG Stale_E:.DB 134, 35, -30, 0xFF, 034.CSEG.ORG 0x0000 rjmp Zerowanie.ORG 50 Zerowanie: 19

- dyrektywy asemblera Makra to struktury predefiniujące bloki programowe o zmiennych parametrach. Wywołanie makra powoduje, że translator zastępuje nazwę makra jego rozwinięciem z uwzględnieniem zadanych parametrów. Parametry są przekazywane przez konstrukcję: @numer_paramertu. Do makra można przekazać maksymalnie 10 parametrów. Makra mogą być zagnieżdżone. Składnia definicji makra:.macro nazwa_makra struktura makra.endmacro 20

- dyrektywy asemblera Przykład:.MACRO dodaj_16b add @0, @2 adc @1, @3.ENDMACRO dodaj_16 R0, R1, R16, R17 21

- dyrektywy asemblera Translacja warunkowa jest wykorzystywana do wyłączania części kodu z procesu translacji, np. w plikach bibliotecznych lub programach wielowariantowych. Składnia:.IF wyrażenie kontynuuje translację dalszych linii jeśli wyrażenie jest różne od 0.ELIF wyrażenie załącza translację aż do następnej dyr..elif lub.else.else załącza translację, jeśli żaden z powyższych warunków nie był spełniony.endif kończy translację warunkową 22

- preprocesor Preprocesor funkcjonuje podobnie, jak preprocesor w języku C. Dyrektywy preprocesora zaczynają się od znaku # Dyrektywy preprocesora należy pisać od początku wiersza Przykłady dyrektyw preprocesora: #INCLUDE #DEFINE #IF 23

- pliki nagłówkowe Pliki nagłówkowe definiują wartości charakterystyczne dla danego mikrokontrolera: Adresów rejestrów funkcyjnych Numerów bitów w rejestrach funkcyjnych Adresów końca obszarów pamięci Wektorów przerwań Pliki nagłówkowe mają rozszerzenie.inc i dołącza się je do kodu programu za pomocą dyrektywy.include. 24