Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem PIC16F876

[es] :: Asembler :: Problem PIC16F876

[ Pregleda: 4627 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

djokop
marko markovic
bijeljina

Član broj: 196226
Poruke: 5
*.teol.net.



Profil

icon Problem PIC16F87627.04.2009. u 19:50 - pre 182 meseci
Zdravo svima

Moze li mi neko pomoci oko zadatka tj. dati neka resenja ili uputiti na neku adresu koja bi mi bila od pomoci?


Trocifreni LED displej, povezan na port B mikrokontrolera i multipleksno upravljan sa porta A uz pomoć prekidačkih tranzistora, čiji kolektor je vezan za zajedničku katodu sedmosegmentnih LED indikatora, koristi se za decimalnu indikaciju stanja osmobitnog brojača TMR0 koji se taktuje eksternim taktnim impulsima sa linije RA4 porta A, slika 1. Napisati program na C jeziku za brojanje eksternih impulsa kojima se taktuje TMR0 modul i prikazivanje na LED displeju.
Napomena: trajanje upaljenje cifre na jednom od sedmosegmentnih LED indikatora za multipleksni prikaz iznosi 5ms.




ja
 
Odgovor na temu

pepsiredstar
Petar Milić
Zvečan

Član broj: 190187
Poruke: 140
93.86.184.*



Profil

icon Re: Problem PIC16F87602.06.2009. u 16:45 - pre 181 meseci
Evo rešenja:

#include <16F877.h>
#fuses HS,WDT,NOPROTECT,NOLVP,PUT
#use delay(clock=20000000)

#byte port_a=0x05 // adresa PORT-a A
#byte port_b=0x06 // adresa PORT-a B
#bit one=0x05.0 // PORTA, RA0
#bit ten=0x05.1 // PORTA, RA1
#bit hun=0x05.2 // PORTA, RA2

byte const SEG_MAP[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; // mapa paljenja LED segmenata

int value; // vrednost TMR0 registra
int cj,cd,cs; // Cifre jedinica, desetica, stotica


void display_digits() { // f-ja za multipleksni prikaz cifara

one=1; // selekcija cifre jedinice
ten=0;
hun=0;
port_b=SEG_MAP[cj];
delay_us(5);

one=0;
ten=1; // selekcija cifre desetice
hun=0;
port_b=SEG_MAP[cd];
delay_us(5);

one=0;
ten=0;
hun=1; // selekcija cifre stotice
port_b=SEG_MAP[cs];
delay_us(5);
}


void bin_bcd() { // funkcija za konverziju 8-bitne binarne vrednosti u BCD

cs=value/100; // celobrojno pri deljenju sa sto=cifra stotica

cd=((value%100)/10); // ostatak pri deljenju sa 100 / 10, celi deo (value mod 100 div 10)=cifra desetica

cj=(value%10); // ostatak pri deljenju sa 10, (value mod 10)=cifra jedinica
}


void main() {


set_tris_b(0); // Sve linije porta B izlazne
set_tris_a(0x10); // RA4 ulazna linija, ostale linije porta A izlazne
setup_counters(RTCC_EXT_L_TO_H, WDT_2304MS); // Konfigurisanje Tajmer 0 modula (eksterno taktovanje, uzlazna ivica)

port_b=0;
port_a=0;
set_timer0(0); // Iinicijalizacija Timer0 modula


Loop: value=get_timer0(); // Citanje TMR0 registra Tajmera 0
bin_bcd();
display_digits();
goto Loop;
}


p.s. Da ti slučajno ne studiraš na Slobomir univerzitetu i da ti ne predaje nešto Aleksandar Žorić?
 
Odgovor na temu

djokop
marko markovic
bijeljina

Član broj: 196226
Poruke: 5
*.com
Via: [es] mailing liste



Profil

icon Re: Problem PIC16F87602.06.2009. u 20:26 - pre 181 meseci
Da studiram. Odakle znas?

Da li je Zorke vec video ovo resenje?

_________________________________________________________________
Invite your mail contacts to join your friends list with Windows Live Spaces. It's easy!
http://spaces.live.com/spacesa...rl=/friends.aspx&mkt=en-us
--_959b1031-6413-4db1-ac3f-b410197f024c_
Content-Type: text/html; charset="iso-8859-2"
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
</style>
</head>
<body class='hmmessage'>
<br><br>&gt; To: [email protected]<br>&gt; Subject: Re: Problem PIC16F876 [elitesecurity.pracenje.teme]<br>&gt; From: [email protected]<br>&gt; Date: Tue, 2 Jun 2009 17:45:03 +0200<br>&gt; <br>&gt; Evo re�enja:<br>&gt; <br>&gt; <br>&gt; <br>&gt; #include &lt;16F877.h&gt;<br>&gt; <br>&gt; #fuses HS,WDT,NOPROTECT,NOLVP,PUT<br>&gt; <br>&gt; #use delay(clock=20000000)<br>&gt; <br>&gt; <br>&gt; <br>&gt; #byte port_a=0x05 // adresa PORT-a A<br>&gt; <br>&gt; #byte port_b=0x06 // adresa PORT-a B<br>&gt; <br>&gt; #bit one=0x05.0 // PORTA, RA0<br>&gt; <br>&gt; #bit ten=0x05.1 // PORTA, RA1<br>&gt; <br>&gt; #bit hun=0x05.2 // PORTA, RA2<br>&gt; <br>&gt; <br>&gt; <br>&gt; byte const SEG_MAP[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; // mapa paljenja LED segmenata<br>&gt; <br>&gt; <br>&gt; <br>&gt; int value; // vrednost TMR0 registra<br>&gt; <br>&gt; int cj,cd,cs; // Cifre jedinica, desetica, stotica<br>&gt; <br>&gt; <br>&gt; <br>&gt; <br>&gt; <br>&gt; void display_digits() { // f-ja za multipleksni prikaz cifara<br>&gt; <br>&gt; <br>&gt; <br>&gt; one=1; // selekcija cifre jedinice<br>&gt; <br>&gt; ten=0;<br>&gt; <br>&gt; hun=0;<br>&gt; <br>&gt; port_b=SEG_MAP[cj];<br>&gt; <br>&gt; delay_us(5);<br>&gt; <br>&gt; <br>&gt; <br>&gt; one=0;<br>&gt; <br>&gt; ten=1; // selekcija cifre desetice<br>&gt; <br>&gt; hun=0;<br>&gt; <br>&gt; port_b=SEG_MAP[cd];<br>&gt; <br>&gt; delay_us(5);<br>&gt; <br>&gt; <br>&gt; <br>&gt; one=0;<br>&gt; <br>&gt; ten=0;<br>&gt; <br>&gt; hun=1; // selekcija cifre stotice<br>&gt; <br>&gt; port_b=SEG_MAP[cs];<br>&gt; <br>&gt; delay_us(5);<br>&gt; <br>&gt; }<br>&gt; <br>&gt; <br>&gt; <br>&gt; <br>&gt; <br>&gt; void bin_bcd() { // funkcija za konverziju 8-bitne binarne vrednosti u BCD<br>&gt; <br>&gt; <br>&gt; <br>&gt; cs=value/100; // celobrojno pri deljenju sa sto=cifra stotica<br>&gt; <br>&gt; <br>&gt; <br>&gt; cd=((value%100)/10); // ostatak pri deljenju sa 100 / 10, celi deo (value mod 100 div 10)=cifra desetica<br>&gt; <br>&gt; <br>&gt; <br>&gt; cj=(value%10); // ostatak pri deljenju sa 10, (value mod 10)=cifra jedinica<br>&gt; <br>&gt; }<br>&gt; <br>&gt; <br>&gt; <br>&gt; <br>&gt; <br>&gt; void main() {<br>&gt; <br>&gt; <br>&gt; <br>&gt; <br>&gt; <br>&gt; set_tris_b(0); // Sve linije porta B izlazne<br>&gt; <br>&gt; set_tris_a(0x10); // RA4 ulazna linija, ostale linije porta A izlazne <br>&gt; <br>&gt; setup_counters(RTCC_EXT_L_TO_H, WDT_2304MS); // Konfigurisanje Tajmer 0 modula (eksterno taktovanje, uzlazna ivica)<br>&gt; <br>&gt; <br>&gt; <br>&gt; port_b=0;<br>&gt; <br>&gt; port_a=0;<br>&gt; <br>&gt; set_timer0(0); // Iinicijalizacija Timer0 modula<br>&gt; <br>&gt; <br>&gt; <br>&gt; <br>&gt; <br>&gt; Loop: value=get_timer0(); // Citanje TMR0 registra Tajmera 0<br>&gt; <br>&gt; bin_bcd();<br>&gt; <br>&gt; display_digits();<br>&gt; <br>&gt; goto Loop;<br>&gt; <br>&gt; }<br>&gt; <br>&gt; <br>&gt; <br>&gt; <br>&gt; <br>&gt; p.s. Da ti slu�ajno ne studira� na Slobomir univerzitetu i da ti ne predaje ne�to Aleksandar �ori�?<br>&gt; <br>&gt; --<br>&gt; http://www.elitesecurity.org/p2295745<br>&gt; <br>&gt; Prijave/odjave: http://www.elitesecurity.org/pracenje#362434<br>&gt; <br>&gt; Ne menjajte sledece dve linije ukoliko odgovarate putem emaila!<br>&gt; esauth:362434:770045e0de1fecae373862765bc09dc4<br>&gt;
ja
 
Odgovor na temu

pepsiredstar
Petar Milić
Zvečan

Član broj: 190187
Poruke: 140
93.86.67.*



Profil

icon Re: Problem PIC16F87603.06.2009. u 16:24 - pre 181 meseci
Rekao mi je Žorić da predaje tamo.

Jeste, video je. To je iz njegove zbirke zadataka.

 
Odgovor na temu

[es] :: Asembler :: Problem PIC16F876

[ Pregleda: 4627 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.