63 (90)

63 (90)



yfronika


www.cyfronika.com.pl


elektronika dla wszystkich sklep internetowy wszystko dla elektroniki


#include <pl8f4580.h>

//tablice kodow

char codę[10] = {0xF6, 0x50, 0xC7, 0xD3, 0x71, 0xB3, 0xB7, 0xD0, 0xF7, 0xF3}; char display =    ; //wybór wyświetlacza

char value =    ; //zmienna zawierajaca wskazanie wyświetlacza

//------------------------------------

// High priority interrupt vector #pragma codę InterruptVectorHigh = 0x08 void InterruptHandlerHigh(); //prototyp void InterruptVectorHigh (void){

_asm

goto InterruptHandlerHigh //jump to interrupt routine _endasm

}

// High priority interrupt routine #pragma codę

#pragma interrupt InterruptHandlerHigh void InterruptHandlerHigh (){

//zmień wyświetlacz if (display= ) { display = 1 ;

PORTC =

PORTD =

PORTC = codę[(value% DC)%    ]    ;

}else{

display =

PORTC =    ;

PORTD =    ;

PORTC = codę[(value% i 0 f)/    ]    ;

}

}

//-------------------------------------

void main () {

int wait =    ; //zmienna pomocnicza

//konfiguracja portow

TRISC &=    ; //porty segmentów jako wyjścia

TRI SD &=    '    ; //porty tranzystorów wysw. jako wyjścia

PORTD |= 0 x r’0 ;

PORTC = 0x00 ;

//konfiguruj licznik i przerwanie T2CON =    ; //ustaw preskalery

T2CONbits.TMR20N =    ; //wlacz licznik

PIElbits.TMR2IE = i ; //wlacz przerwanie INTCONbits.GIE =    ; //przerwanie globalne

//pętla główna while(l){

for(wait= ; wait<0xFFy ; wait+t){;} value++ ;

}    Listing 2


Efc    Wew Project gebugger Prog-arrmer lods Configure Window ftsłp

D GS id v * Si B M £* £ f |! iDebufl -Jo B & © O $ ILił 0 © j

a -55-j (TW DD « IP    HWBP [T|Uscd [o]OSWBP    T| I

—^

//---------------------------------------"

□void main()(


* wyswictlocz MPLAB IDE v8,33


_J Header CJ Cfeject Ffes '_) Library Hes _J Lsiker Script _J Othcr Ffes


//zmienna pomocnicza int wait = 0 ;

//konfiguracja portow

TRISC Sc- 0x00 ; //porty segmentów jak< TRISD &• OxOF ; //porty tranzystorów i PORTD | 0xF0 PORTC 0x00 ;


//konfiguruj licznik i przerwanie T2COH = 0x78 ; //ustaw preskalery T2COHbits TMR20N J • //wiaćz licznil)

PIO* 2

PJC18F4530 pc:0x262 W:0x9c N wzdec

,r~

bóf*0 Ln65.

Coli

Rys. 4

Rys. 5


m wyświetlacz MPLAB IDE v&33

£te gjfc V)ew Project Qeboggw Programmcr


[J


I> II W> (P {f

1 2 345

Rys. 6


terminalu mogą być reprezentowane jako ciąg tekstowy albo ciąg liczb.

W roli wyświetlacza pracować mogą również wyświetlacze 7-segmcntowe oraz diody LED. Te pierwsze umożliwiają wyświetlanie liczb i ograniczonego zbioru liter, ale również bywają nieodzowne podczas usuwania błędów z kodu. Diody LED stanowią najprostszy interfejs użytkownika obecny w prawie każdym projekcie. Mimo prostoty i ubogiej ilości przekazywanych informacji o działaniu kodu są również bardzo pomocne, zwłaszcza gdy nie ma dostępu do innych podzespołów takich jak port szeregowy czy wyświetlacz LCD. Można pokusić się o wykonanie bardzo prostego urządzenia wyposażonego w procesor, trzy wyświetlacze 7-segmentowe i port komunikacyjny. Układ taki przyda się przy wielu projektach i umożliwi łatwe odczytywanie wartości wybranych zmiennych. Warto wtedy zastosować protokół komunikacyjny oparty o jedną linię danych lub wykorzystać linię RxD układu USART.

Na rynku dostępne są także dedykowane debuggery, pozwalające na bieżące podglądnie zawartości zmiennych i rejestrów, zmianę ich wartości, śledzenie wykonania kodu, etc. Przykładem takiego narzędzie jest PICkit2, który pracuje jako programator bądź debugger i współpracuje z oprogramowaniem producenta (MPLAB). Bardziej popularne wśród Czytelników są zapewne mikrokon


trolery AVR, jednakże nie dysponując podobnym zestawem debugującym dla tej rodziny, chciałbym krótko zaprezentować sposób obsługi zestawu PICkit 2, aby przybliżyć możliwości podobnych narzędzi. Przykładowy kod (oczywiście zawierający błędy) pokazano na listingu 2. Jest to krótki program napisany w języku C i skompilowany z użyciem kompilatora MCC 18. Kompilator ten ma tę zaletę, że można go zintegrować ze środowiskiem MPLAB, co przekłada się na śledzenie wykonania programu napisanego właśnie w C.

Cały proces debugowania w środowisku MPLAB sprowadza się do wybrania narzędzia (menu Debugger->Select Tool->PICkit 2). Po kompilacji programu można go uruchomić, klikając na niebieskiej strzałce (rysunek 4). Jeżeli plik wynikowy, wygenerowany przez kompilator, jest różny od pliku wynikowego, zapisanego w pamięci mikrokontrolera, MPLAB zaproponuje jego uaktualnienie, na co warto się zgodzić. Działanie programu łatwo poznać po napisie running i


gramu, można za pomocą ikonki symbolizującej pauzę (rysunek 6 - przycisk oznaczony numerem 2). Pojawi się wtedy zielona strzałka (rysunek 7), która wskazuje, w którym miejscu program został zatrzymany. Czasami wskazuje ona na miejsce programu napisanego w C, a czasami otwiera się okienko z instrukcjami assemblera. Niektórych instrukcji nie ma w programie napisanym w C, bo wykonują się one w tle (np. obsługa stosu przy powrocie 7. przerwania). Stad otwarcie okienka assemblera. Na rysunku 6 zaznaczono jeszcze inne ikony:

- animate (3) - powoduje automatyczne wykonywanie programu krok po kroku,

-    step int o (4) - wykona pojedynczą instrukcję programu i ponownie go wstrzyma,

-    step over (5) - w zasadzie działa podobnie do (4), z tą różnicą, żc jeżeli debugger natknie się na wywołanie podprogramu, zostanie on wykonany w całości, a nie krok po kroku,

-    reset (6) - umożliwia zresetowanie procesora, jest to szczególnie wygodne, gdy urządzenie nic ma dedykowanego przycisku do tego celu,

-    breakpoints (7) - narzędzie umożliwiające „ręczne” ustawianie pułapek w programie.

Klikając na szarym pasku dwukrotnie,

można zastawić pułapkę - rysunek 8.

Ciąg dalszy na stronie 66


H ©

67


//pętla główna while£ 1) {

tor £wait=0 value++ ;

}


wait<OxFFFF ; wait++){;}


przesuwaniu się paska na dole okienka (rysunek 5). Wstrzymać pracę pro-


Rys. 8


O

©

©


//konfiguracja portow

TRISC 0x00 ; //porty segmentów jako wyjścia

TRISD &= 0x0F ; //porty tranzystorów wysw. jako wyjścia

PORTD I- 0xF0 ;

PORTC = 0x00 ;


Elektronika dla Wszystkich Styczeń 2010 63


Wyszukiwarka

Podobne podstrony:
Image189 (3) 1.1. www G€° www.cyfronika.coin.pl elektronika dla wszystkich sklep irtemeiowy wsz
59 (105) Top www yfronikawww.cyfronika.com.plelektronika dla wszystkich sklep internetowy wszys
Elektronika Dla Wszystkich 07 2007 iMDEKSSMKK $SN1«?StKe www.elpoital.pl www eipoital com p ■uEB EH
Elektronika Dla Wszystkich 07 11 2007 5 MOCKS 333 tzt ISSN M2S 1W» wvw eiportal.pl wvm.7pMtal.com.p
Elektronika Dla Wszystkich 08 2008 INCtłS 333 6/X BSN U25-1688 tww.4iporiai.pl »wk eiportal com.plc
Elektronika Dla Wszystkich 08 INtJrHS 333 62X    SSN1U5-16P8 mw.aipoiui.pl wwnAiport
57 (119) Top wwwwww.kradex.com.pl PRODUCENT OBUDÓW DLA ELEKTRONIKI Naddnieprzańska 32 04-205 Warszaw
29 (258) Top wwwwww.kradex.com.pl PRODUCENT OBUDÓW DLA ELEKTRONIKI Naddnieprzańska 32 04-205 Warszaw
KSIĘGARNIA WYSYŁKOWA - www.sklep.avt.com.pl Zasilacze urządzeń elektronicznych Prrewodiitli dla
Image210 (3) elektronika dla wsz/stkici sklep internetowy wszystko dla elektronikitw www www.cy
Elektronika Dla Wszystkich 07 6 2007 Czerwiec • Cena 8zł 90gr (•> i
Elektronika Dla Wszystkich 07 92007 *olicyjnyavt.pl •    Dom    
Elektronika Dla Wszystkich 08 2008 INDEKS 333 62X BSN142S-1698 Kwiecień • 0*- tym 0% VAT) ww.alpona
Elektronika Dla Wszystkich 08 5 2008 Maj • Cena 8zł 90gr {w tym 0% VAT

więcej podobnych podstron