Początki w WinAVR

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. 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
Sebastian_P
-
Posty: 4
Rejestracja: 06 sty 2006, 21:30

Początki w WinAVR

Post autor: Sebastian_P » 27 wrz 2006, 20:38

Witam!!!
Programowaniem w C zajmuje sie od niedawna. i problem jest taki:
DDRD=0x7C; // co to jest to 0x7c skad to się wzieło czy to jest umieszczone w pdf
danego mikrokontrolera

PORTD=0x7c; // to samo w tej linii
_delay_loop_2(0xfff); // wiem ze to jest funkja opóżniająca a to (0xfff) po co jest
skad sie to wzieło

ZbeeGin

Post autor: ZbeeGin » 27 wrz 2006, 22:01

Sebastian_P pisze:DDRD=0x7C; // co to jest to 0x7c skad to się wzieło czy to jest umieszczone w pdf
danego mikrokontrolera
0x7C to liczba zapisana w formacie szestanstkowym. W tym konkretnym przypadku jest to wartość jaką nadaje się rejestrowi DDRD w celu ustalenia, które linie tego portu mają być wejściami a które wyjściami. 0x7C to w zapisie binarnym: 01111100 (w nomenklaturze języka C: 0b01111100), czyli:
- wejściami są: PD7, PD1, PD0
- wyjściami są: PD2 do PD6.
Jest to jak widać pośrednio umieszczone w PDF danego kontrolera, gdyż wynikła liczba jest ozdwierciedleniem założeń co do kierunków pracy portów: 0 - wejście, 1 - wyjście.
Sebastian_P pisze:_delay_loop_2(0xfff); // wiem ze to jest funkja opóżniająca a to (0xfff) po co jest
0xfff to parametr - stały w tym wypadku, gdyż zapisany jako liczba jawna - określająca czas opóźnienia w jednostkach ustalonych przez zasadę działania funkcji _delay_loop_2(), mogą to być takty, milisekundy, mikrosekundy. 0xfff to nic innego jak liczba szesnastkowa, która w systemie dziesiętnym - naturalnym - wynosi 4095. Jeśli zatem przykładowo _delay_loop_2() odlicza mikrosekundy to czas opóźnienia będzie wynośił około 4095µs.

Sebastian_P
-
Posty: 4
Rejestracja: 06 sty 2006, 21:30

Post autor: Sebastian_P » 28 wrz 2006, 7:19

Świetnie wielkie dzięki za pomoc.Musze trochę poczytać o kodzie szatkowym.Pozdrawiam.

ZbeeGin

Post autor: ZbeeGin » 28 wrz 2006, 17:36

Dla uściślenia:

0b0011 - liczba w ststemie binarnym (dwójkowym), może się składać kombinacji z cyfr 0 oraz 1. W tym systemie wagą jest potęga liczby 2.
0o337 - liczba w systemie ósemkowm, może się składać z kombinacji cyfr 0,1,2,3,4,5,6,7, W tym systemie wagą jest potęga liczby 8.
0xABCD - liczba w systemie szensnastkowym (heksadecymalnym), może się składać z kombinacji cyfr 0,1,2,3,4,5,6,7,8,9 oraz znaków A (10),B (11),C (12), D (13), E(14), F (15) które są brakującymi "cyframi" w tym systemie, o wartościach dziesiętnych podanych w nawiasach. W systemie tym wagą jest potęga liczby 16.

Liczby naturalne - w systemie dziesiętnym - są zapisywane tak jak są. A wagą naturalnego systemu są oczywiście potęgi liczby 10. :smile:


Zatem każdą liczbę można przedstawić jako:

100 = 1 × 10^2 + 0 × 10^1 + 0 × 10^0

0xFFA = F × 16^2 + F × 16^1 + A × 16^0 = 3840 + 240 + 10 = 4090

A teraz poćwicz sam:

0b00110011 = ?

0xAABBCC = ?

0o2374 = ?

---------------
Materiał szkoleniowy dla Ciebie znajduje się tu: http://www.programuj.com/artykuly/rozne/sysliczb.php

ODPOWIEDZ