Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Abbiamo provato Samsung Galaxy Tab S12 Ultra nella versione 12 GB + 256 GB con tastiera, e il risultato è un tablet che in questa configurazione si comporta come un notebook con la fluidità tipica di Android. Spessore di 5,1 mm, display Dynamic AMOLED 2X da 14,6 pollici, MediaTek Dimensity 9500 e un software senza incertezze compongono un prodotto di vertice, con prezzi da 1.539 euro, frenato solo da un'autonomia nella parte bassa del confronto
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Abbiamo provato per dieci giorni la Hyundai IONIQ 5 N, con 650 CV, 770 Nm e uno 0-100 km/h in 3,4 secondi. Il suo punto forte è N e-Shift, che simula un cambio a otto rapporti con suoni da motore termico e perfino un bang supersonico
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-03-2009, 17:54   #1
AnDeX
Bannato
 
Iscritto dal: Sep 2008
Città: Mogliano Veneto (TV)
Messaggi: 175
[C] Programmazione PIC (16F877) - Orologio regolabile

Ragazzi...in Sistemi Programmabili, a scuola, stiamo programmando un orologio regolabile in C per microcontrollore 16F877.

Il PIC è addoperato in una scheda che offre la modalità di programmazione e la modalità di collaudo mediante un selettore; in modalità di collaudo si "attivano", diciamo, le porte (port a, b, c, d), la dove applichiamo tramite cavi flat (piatti) le periferiche (basette con serie di led, display, pulsanti, lcd...).

Ci è stata data consegna, quindi, di realizzare un OROLOGIO REGOLABILE, oltre alla scheda pricipale, va usato:
- serie di pulsanti, dove utilizzandone 2 bisognerà, attraverso questi, rispettivamente con P1 selezionare le "sezioni" (hh oppure mm) da regolare e con l'altro (P2) incrementare di un valore la "sezione" selezionata; da stato normale dell'orologio, un "click" di P1 seleziona le ore (tenendo spenta la sezione mm), due "click", si seleziona mm tenendo spento hh, tre "click" si ritorna allo stato di visualizzazione normale dell'orologio (i pulsanti si attivano al rilascio, tenendo premuto non succede niente);
- serie di led, dove scegliedo un led a caso, quando regolo l'orologio dovrà stare acceso, mentre quando è in visualizzazione normale dovrà lampeggiare alla frequenza di un secondo;
- serie di 4 display, collegati in modalità MUX, per visulizzare ore e minuti dell'ora, i primi due logicamente dovranno visualizzare le ore, i secondi due i minuti (a due cifre), in modalità 24 ore.

Consecutivamente il codice in C per PIC 16F877; utilizzando come compilatore MikroC, il programma compila senza alcun problema il programma, pertanto come sintassi è corretta, però in pratica, nel collaudo, non funziona, o meglio funziona male in quanto mi conta lui, ma in una maniera assurda difficile anche da spiegare:

Codice:
unsigned int tempo,mux = 0;
char minuti_unita = 0;
char minuti_decine = 0;
char ore_unita = 0;
char ore_decine = 0;
char sec = 0;
char uti = 0;
char ore = 0;
char a,set= 0 ;
char display [10] = {63, 6, 91, 79, 102, 109, 125, 7, 127, 111};
char attivo = 0; //1 --> conteggio on, 0 --> conteggio off
void interrupt(){
  if(INTCON&0x04)
  {
	     if(attivo == 1) tempo++; //per conteggio time
         mux++; //per scambio display
         INTCON=0x20;
  }
}
void main(){
  trisd = 0; //coleggamento dati display
  portd = 0;
  trisc = 0b01100000; // c6,c7 pulsanti input,  co,c1,c2,c3,c4  out seleziona display
  portc = 0;
  portb.F4 = 1; //led acceso perche all'inizio si deve impostare l'ora corrente

 //--- Settaggio Timer-----
  OPTION_REG=0x80;
  TMR0=5;
  PIR1=0x00;
  PIE1=0x40;
  INTCON=0xE0;
 //---------------

 while(1) //inizio loop infinito
 {
   //pulsante P1*************************************
   if(portc.F5 == 1) //P1
   {
     attivo = 0;
	 tempo = 0;
	 porta.F0 = 1;
	 set++;
	 delay_ms(5); //ritardo per antirimbalzo
	 if(set > 2) set = 0,attivo = 1,portb.F4 = 0;
   }
   //************************************************

   //pulsante P2*************************************
   if(porta.F1 == 1) //P2
   {
     if(set == 1) //imposta minuti
	 {
	   uti++;
	   minuti_unita ++;
	   if (minuti_unita > 9)
	   {
		  minuti_unita = 0;
		  minuti_decine ++;
	   }
	   if(uti==59)
	   {
	     uti = 0;
		 minuti_unita = 0;
     minuti_decine = 0;
	   }
	  delay_ms(100);
	 }
     if(set == 2) //imposta ore
	 {
	     ore++;
		 ore_unita++;
	     if (ore_unita > 9)
	     {
		  ore_unita = 0;
		  ore_decine++;
	     }
		 if(ore = 24)
		 {
		   ore = 0;
		   ore_unita = 0;
       ore_decine = 0;
		 }
		 delay_ms(5);
	 }
   }
   //************************************************
   if(mux == 100) //ogni 10msec cambia display
   {
     mux = 0;
	 a++;
	 if(a > 4) a = 1;
     if(a == 1) //stampa minuti_unita
	 {
	   portc.F0 = 0;
       portc.F1 = 0;
	   portc.F2 = 0;
	   portc.F3 = 1;
	   portd = display[minuti_unita];
	 }
	 if(a == 2)//stampa minuti_decine
	 {
	   portc.F0 = 0;
       portc.F1 = 0;
	   portc.F2 = 1;
	   portc.F3 = 0;
	   portd = display[minuti_decine];
	 }
	 if(a == 3)//stampa ore_unita
	 {
	   portc.F0 = 0;
       portc.F1 = 1;
	   portc.F2 = 0;
	   portc.F3 = 0;
	   portd = display[ore_unita];
	 }
	 if(a == 4)//stampa ore_decine
	 {
	   portc.F0 = 1;
       portc.F1 = 0;
	   portc.F2 = 0;
	   portc.F3 = 0;
	   portd = display[ore_decine];
	 }

   }

   if(tempo == 10000)   //tempo = 1 sec.
   {
	 tempo = 0;
	 sec ++;
	 portc.F4 = ~ portc.F4; //lampeggio led ad intervallo di 1 secondo
	 if(sec == 59)
	 {
	   sec = 0;

	   uti++;
	   minuti_unita++;
	   if (minuti_unita > 9)
	   {
		  minuti_unita = 0;
		  minuti_decine++;
	   }
	   if(uti==59)
	   {
	     uti = 0;
		 minuti_unita,minuti_decine = 0;

		 ore++;
		 ore_unita++;
	     if (ore_unita > 9)
	     {
		  ore_unita = 0;
		  ore_decine++;
	     }
		 if(ore = 24)
		 {
		   ore = 0;
		   ore_unita, ore_decine = 0;
		 }
	   }
	 }
   }
  } //fine loop
}
Qualcuno sa qualcosa in materia?
Qualcuno è disposto ad aiutarmi?
Se necessario ci si può sentire su msn per una migliore comunicazione.
Grazie raga!!!
AnDeX è offline   Rispondi citando il messaggio o parte di esso
Old 01-03-2009, 17:59   #2
blackskop
Senior Member
 
Iscritto dal: Aug 2008
Messaggi: 308
2 cent

Codice:
if(ore = 24)
blackskop è offline   Rispondi citando il messaggio o parte di esso
Old 01-03-2009, 18:06   #3
AnDeX
Bannato
 
Iscritto dal: Sep 2008
Città: Mogliano Veneto (TV)
Messaggi: 175
Quote:
Originariamente inviato da blackskop Guarda i messaggi
2 cent

Codice:
if(ore = 24)
?? Cosa vuoi dire?

L'orologio dovrebbe contare 24 ore; dopo il primo minuto la consegna del prof. direbbe che dovrebbe comparire 00:01 e proseguire con il conteggio dei minuti e delle ore...

Se qualcuno sa/puà aiutarmi ne sarei grato e felice.

Grazie mille anticipamente..
AnDeX è offline   Rispondi citando il messaggio o parte di esso
Old 01-03-2009, 18:09   #4
AnDeX
Bannato
 
Iscritto dal: Sep 2008
Città: Mogliano Veneto (TV)
Messaggi: 175
(tengo a precisare che è da ottobre che abbiamo cominciato a prendere in mano il C in classe, io anni fa facevo già qualche cavolata in C ma non così...quindi non ne so molto).
AnDeX è offline   Rispondi citando il messaggio o parte di esso
Old 01-03-2009, 18:11   #5
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Intendeva dire che dovrebbe essere if(ore == 24)
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 01-03-2009, 18:14   #6
AnDeX
Bannato
 
Iscritto dal: Sep 2008
Città: Mogliano Veneto (TV)
Messaggi: 175
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Intendeva dire che dovrebbe essere if(ore == 24)
ah...già è vero, ma non penso che tutto il problema sia li, poichè proprio si direbbe che non funziona...
AnDeX è offline   Rispondi citando il messaggio o parte di esso
Old 03-03-2009, 19:33   #7
AnDeX
Bannato
 
Iscritto dal: Sep 2008
Città: Mogliano Veneto (TV)
Messaggi: 175
allora? nessuno sa niente di più?
AnDeX è offline   Rispondi citando il messaggio o parte di esso
Old 03-03-2009, 21:54   #8
AnDeX
Bannato
 
Iscritto dal: Sep 2008
Città: Mogliano Veneto (TV)
Messaggi: 175
Giovedì dovremo consegnare?
Qualche buon anima che mi può dare una mano?
Grazie anticipatamente.
AnDeX è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
Nikon 120-300mm f/2.8: moltiplicatore in...
Targhe personalizzate per auto e moto: c...
Redmi K100 ufficiale, con batteria da 10...
GTA 6, nuovo gameplay in South Park: Jas...
I guru dell'IA sono totalmente slegati d...
Diesel: scatta il taglio delle accise, m...
La pubblicità nell'AI Mode delle ricerch...
Mac Studio M5 Ultra al massimo: 512GB di...
Cyberpunk: il sequel potrebbe introdurre...
WhatsApp prepara una nuova sezione Pagam...
Google lancia Connected Apps Platform pe...
FWA, quanto costa e quali sono le presta...
Sony annuncia la PS5 Prism Collection: n...
Infineon investe 1,1 miliardi di euro in...
Microsoft: ricavi record a 92,3 miliardi...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 14:35.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v