| | #21 (permalink) Top |
| User Data registr.: 29-11-2002 Residenza: Mountain View, CA
Messaggi: 4.390
|
Anzi, meglio ancora e più efficiente: Codice: // MAXPAGLIONI e' il numero massimo di paglioni
int mask, i;
if (PORTA)
for (mask=1, i=1; i < MAXPAGLIONI+1; mask = mask << 1, i++)
if (PORTA & mask) break;
// al termine del ciclo, i contiene il numero del paglione colpito
__________________ The number you dialed is imaginary. Please rotate your phone 90 degrees and redial. |
| | |
| | #22 (permalink) Top | |
| User Data registr.: 06-08-2007 Residenza: Empoli
Messaggi: 1.813
| Citazione:
__________________ ....... | |
| | |
| | #23 (permalink) Top | |
| User Data registr.: 06-08-2007 Residenza: Empoli
Messaggi: 1.813
| Citazione:
i < MAXPAGLIONI+1; è inefficiente. Fai una somma ad ogni ciclo. piuttosto: i <= MAXPAGLIONI;
__________________ ....... | |
| | |
| | #24 (permalink) Top | |
| User Data registr.: 29-11-2002 Residenza: Mountain View, CA
Messaggi: 4.390
| Citazione:
Per le eccezioni, come scrivevo non ho capito se è ammessa la possibilità di più bit accesi oppure no.
__________________ The number you dialed is imaginary. Please rotate your phone 90 degrees and redial. | |
| | |
| | #25 (permalink) Top | |
| User Data registr.: 06-08-2007 Residenza: Empoli
Messaggi: 1.813
| Citazione:
Alla fine un case non è così inefficiente come potrebbe sembrare. Purché venga scritto UNA volta e non 4 come ho visto
__________________ ....... | |
| | |
| | #26 (permalink) Top |
| User Data registr.: 16-11-2008 Residenza: Riva del Garda - TN
Messaggi: 429
|
alura... nelle gare di tiro con l'arco funziona così: si hanno x paglioni. su ogni paglione ci sono 4 arcieri con un bersaglio l'uno. ogni paglione è contrassegnato da un numero che visti dalla linea di tiro va aumentando da sinistra a destra. ogni bersaglio è contrassegnato dalla lettera A o B o C o D. a ogni arciere viene dato un cartellino da attaccare alla faretra con scritto il numero del paglione seguito dalla lettera del bersaglio dove tira ogni gara noi diamo degli score che sono dei fogli tabella doppia entrata dove vengono segnate le 3 freccie tirate ad ogni volee. per comodità nelle classifiche viene usato un web-based sistem chiamato ianseo (scaricabile gratuitamente) che propone le classifiche da proiettare. ora il problema: ogni 10 volee vi è una pausa, in questa pausa gli addetti alla gara (noi) prendiamo tutti gli score e li scriviamo manualmente nel programma. ora la possibile soluzione: dei terminali (uno per paglione) che abbiano pochi tasti: 1-2-3-4-5-6-7-8-9-10-M(0)-A-B-C-D-canc quando accendiamo i palmari con dentro il pic, noi addetti ai lavori scegliamo il paglione a cui viene associato il palmare (da quì il primo switch) e clicchiamo A per confermare (uscire dal primo ciclo while PORTA != 17) poi inizia la gara, a ogni volee arrivano gli arcieri e uno incaricato scrive in questo modo: clicca A e gli viene proposto sull'LCD: "Bersaglio: "n° paglione seguito da A e sotto inserisce il valore delle freccie, sbaglia a inserire il valore, schiaccia il pulsante canc (6) e reinserisce il valore poi preme B e fa le stesse cose, poi C e poi D quando tornano a tirare laddetto alla console schiaccia un pulsante sull'interfaccia in visual basic che invia il segnale 1 e legge i dati sul paglione 1, poi invia 2 e riceve i dati del paglione 2, ecc.. (while Soft_UART_Read(&error) != paglione) detto così è complicato, ma non credo che a livelli di programmazione con librerie già messe a disposizione del programma non ci fossero molti intoppi comunque grazie fin'ora ciao lol21 |
| | |
| | #27 (permalink) Top | |
| User Data registr.: 29-11-2002 Residenza: Mountain View, CA
Messaggi: 4.390
| Citazione:
__________________ The number you dialed is imaginary. Please rotate your phone 90 degrees and redial. | |
| | |
| | #28 (permalink) Top |
| User Data registr.: 16-11-2008 Residenza: Riva del Garda - TN
Messaggi: 429
|
si, sono tutti collegati a una porta a del pic, i pin però non sono sufficienti e siccome devo utilizzare le porte b per l'LCD e le USART allora ho deciso che alcuni pulsanti sono collegati a 2 pin, in questo modo quando il bottone viene premuto il pic riceve 2 bit della porta a accesa e a seconda di quali bit sono accesi sceglie il valore
|
| | |
| | #29 (permalink) Top | |
| User Data registr.: 29-11-2002 Residenza: Mountain View, CA
Messaggi: 4.390
| Citazione:
__________________ The number you dialed is imaginary. Please rotate your phone 90 degrees and redial. | |
| | |
| | #30 (permalink) Top |
| User Data registr.: 16-11-2008 Residenza: Riva del Garda - TN
Messaggi: 429
|
alla fine ho risolto con l'array. mi consolo sul fatto che avevo ragione: le variabili le registra sulla RAM ![]() tanto che se gli dicevo Codice: int val[128]; Codice: int *val;
void init_var() {
val[1] = 1;
val[2] =2;
val[4] = 3;
val[8] = 4;
val[16] = 5;
val[32] = 6;
val[64] = 7;
val[128] = 8;
val[3] = 9;
val[5] = 10;
val[9] = 0;
val[6] = 0;
} ![]() ho finito il codice e sono rimasto in 2024 kb ![]() ora sono felice ma il lavoro non è finito, mi manca l'interfaccia in VB che invia i dati a PHP. e poi devo finire la scheda, spero tutto vada bene. Grazie a tutti dell'aiuto, mi avete aperto nuovi orizzonti ![]() ciao lol21 |
| | |
![]() |
| Bookmarks |
| |
Discussioni simili | ||||
| Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
| alimentatore insufficiente??? | molale81 | Batterie e Caricabatterie | 2 | 10 aprile 09 00:35 |