Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme e Aston Martin Aramco F1 Team si sono (ri)unite dando alla vita un flagship con chip Snapdragon 8 Elite Gen 5 e design esclusivo ispirato alle monoposto di Formula 1. La Dream Edition introduce la nuova colorazione Lime Essence abbinata al tradizionale Aston Martin Racing Green, decorazioni intercambiabili personalizzate e una confezione a tema F1, intorno a uno smartphone dall'ottima dotazione tecnica con batteria da 7000mAh ricaricabile a 120W e isola fotografica intercambiabile
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
Abbiamo partecipato all'OVHcloud Summit 2025, conferenza annuale in cui l'azienda francese presenta le sue ultime novità. Abbiamo parlato di cloud pubblico e privato, d'intelligenza artificiale, di computer quantistici e di sovranità. Che forse, però, dovremmo chiamare solo "sicurezza"
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: 2781
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


Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro DJI Neo 2 in prova: il drone da 160 grammi guada...
Rivoluzione Linux fra i gamer: nuovo rec...
OnePlus 15R: in attesa dell'arrivo in It...
BIOS schede madri AMD: AGESA 1.2.8.0 in ...
Questa Smart TV LG 65'' QNED 2025 è un b...
PC Desktop con RTX 4060 a un prezzo supe...
Il nuovo iPhone 17e arriverà a in...
POCO anticipa l'arrivo di un nuovo smart...
Ecco la lista delle migliori 32 offerte ...
Intel cambia strategia: cancellato lo sp...
Uno dei più venduti: Lefant M330 ...
Superluna Fredda 2025: oggi l'ultima Lun...
4 idee regalo in sconto su Amazon da pre...
Netflix vuole Warner Bros Discovery: in ...
Meta 'ruba' un altro big ad Apple: arruo...
2 scope elettriche ai minimi: per spazi ...
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: 09:51.


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