Vai al contenuto
PLC Forum


Pic16F Con Programma In C


Alessandro Dj-alex Turco

Messaggi consigliati


  • Risposte 66
  • Created
  • Ultima risposta

Top Posters In This Topic

  • Alessandro Dj-alex Turco

    36

  • simuffa

    13

  • Livio Orsini

    12

  • giacomo56

    2

Alessandro Dj-alex Turco

c7ffaef8ef5c31169f5c9525bbc8af13.PNG

accende un led con pulsante
#include<pic.h>
#define S2 PORTAbits.RA0
#define LED1 PORTBbits.RB1
void main()
{
TRISA=0x30;
TRISB=0x00;
PORTB=0x00;
while (1)
{
if (S2==0)
{
LED1=1;
}
else
{
LED1=0;
}
}
Modificato: da Alessandro Dj-alex Turco
Link al commento
Condividi su altri siti

Nota bene come è fatto l'esempio che ti ha citato simuffa.

#include <htc.h> 
#define _XTAL_FREQ 8000000 
void main()
  { 
     TRISB=0X00; 
     PORTB=0X00; 
     while(1) 
       { PORTB=0XFF; 
         __delay_ms(1000); 
         PORTB=0X00; 
         __delay_ms(1000); 
    } 
}

se tu conoscessi il "C" sapresti come lavora l'istruzione while. Scritta così fa in modo che il programma cicli sempre all'interno di quel loop. In questo modo le 8 uscite della porta B saranno alte per 1" e basse per un altro secondo.

Ovviamente devi verificare il compilatore che stai usando se accetta la medesima grafia per i ritardi e se sono già definite le porte ed i registri con quelle etichette.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Alessandro Dj-alex Turco

incrementi o decrementi di una unità il contatore ad ogni pressione di S1 (UP) o S2 (Down).

'****************************************************************
'* nome programma: sette_segmenti_01
'* MCU: PIC16F84A
'* Oscillatore: HS, 4MHz
'* Dev.Board: EasyPic 5
'* SW: mikroBasic v4.0 o sup.
'****************************************************************

program sette_segmenti_01
const display as byte[10]= (63,6,91,79,102,109,125,7,127,111)
dim k as byte 'Variabile che contiene il NUMERO (0-9)
main:
porta=0 'Azzera PORTA
portb=0 'Azzera PORTB
trisa=%00011 'RA0 e RA1 come Input
trisb=0 'definisce PORTB come output
k=0 'Azzera indice
while true
'--------------Processa TASTO 1-------
if (porta.0=1) AND (k<9) then 'Se premo Tasto 1 e k<9
k=k+1 'Incrementa contatore
while porta.0=1 'Ciclo anti REPEAT
wend
end if
'--------------Processa TASTO 2-------
if (porta.1=1) AND (k>0) then 'Se premo Tasto 2 e k>0
k=k-1 'Decrementa contatore
while porta.1=1 'Ciclo anti REPEAT
wend
end if
'------------Visualizzazione sul dispay -------
portb=display[k] 'visualizza numero di posizione k contenuto nell'array display
Delay_ms(100) 'Pausa per ANTIRIMBALZO di 100 ms
wend
end.

pero da me da errore penso a causa del diverso compilatore

Modificato: da Alessandro Dj-alex Turco
Link al commento
Condividi su altri siti

Scusa ma nell'esempio che hai citato to c'è tutto: schema elettrico e programma in mcroC.

Poi deciditi e scegli un linguaggio, parli di "C", poi metti un esempio in basic.

Fai una scelta e studia il linguaggio che hai scelto.

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora

×
×
  • Crea nuovo/a...