Visualizza messaggio singolo
Vecchio 07 marzo 10, 13:13   #10 (permalink)  Top
lol21
User
 
L'avatar di lol21
 
Data registr.: 16-11-2008
Residenza: Riva del Garda - TN
Messaggi: 429
i cicli di switch sono in un while e alla fine incremento il numero della freccia da inserire. uso un while e non un for perchè così vi è la possibilità di cancellare la freccia (infatti in caso di pressione del tasto canc si diminuisce di uno il numero della freccia da modificare e resetta il valore della freccia.
visto che non riesco a spiegare bene allego i codici

virtus.c
Codice:
#include <header.h>
#define d 129
// Lcd pinout settings
sbit LCD_RS at RB7_bit;
sbit LCD_EN at RB6_bit;
sbit LCD_D7 at RB5_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D4 at RB0_bit;

// Pin direction
sbit LCD_RS_Direction at TRISB7_bit;
sbit LCD_EN_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB0_bit;

void main() {
     TRISA = 0b11111111 ;   // PORTE A come entrate
     //int ini;
     Soft_UART_Init(&PORTB, 1, 2, 9600, 0);      // apertura porta COM RS-232

     /* inizio a usare l'LCD */
     Lcd_init();
     Lcd_Cmd(_LCD_TURN_ON);
     Lcd_Cmd(_LCD_CLEAR);
     Lcd_Out(1, 1, "Paglione A conferma");
     /* LCD settato, ora inizia la funzione per cui si sceglie il paglione */
     while(PORTA != 17) {            // finche non si preme il tasto A
     switch(PORTA) {
      case 1:
      paglione = 1;
      break;
      case 2:
      paglione = 2;
      break;
      case 4:
      paglione = 3;
      break;
      case 8:
      paglione = 4;
      break;
      case 16:
      paglione = 5;
      break;
      case 32:
      paglione = 6;
      break;
      case 64:
      paglione = 7;
      break;
      case 128:
      paglione = 8;
      break;
      case 3:
      paglione = 9;
      break;
      case 5:
      paglione = 10;
      break;
      }
     Lcd_Out(1, 1, paglione);       // stampo a video il paglione usato
     Delay_ms(200);
     }
     while(1) {
     while(Soft_UART_Read(&error) != paglione) {
     switch(PORTA) {
     case 17:
     while(frea == 3) {
     switch(PORTA) {
      case 1:
      arcierea[frea] = 1;
      break;
      case 2:
      arcierea[frea] = 2;
      break;
      case 4:
      arcierea[frea] = 3;
      break;
      case 8:
      arcierea[frea] = 4;
      break;
      case 16:
      arcierea[frea] = 5;
      break;
      case 32:
      arcierea[frea] = 6;
      break;
      case 64:
      arcierea[frea] = 7;
      break;
      case 128:
      arcierea[frea] = 8;
      break;
      case 3:
      arcierea[frea] = 9;
      break;
      case 5:
      arcierea[frea] = 10;
      break;
      case 9:
      arcierea[frea] = 0;
      break;
      case 6:
      arcierea[frea] = 0;
      frea = frea-1;
      break;
      }
      for(i=0; i=10; i++) result = strcat(result, lcdresult[i]);
      result = strcat(result, paglione);
      result = strcat(result, 'A');
      result = strcat(result, ' ');
      result = strcat(result, ' ');
      result = strcat(result, volee);
      Lcd_Out(1, 1, result);
      result = 0;
      result = strcat(result, arcierea[0]);
      result = strcat(result, ' ');
      result = strcat(result, arcierea[1]);
      result = strcat(result, ' ');
      result = strcat(result, arcierea[2]);
      result = strcat(result, ' ');
      result = strcat(result, (arcierea[0]+arcierea[1]+arcierea[2]));
      Lcd_Out(2, 1, result);
      }
      volee++;
     break;
     case 33:
     while(freb == 3) {
     switch(PORTA) {
      case 1:
      arciereb[freb] = 1;
      break;
      case 2:
      arciereb[freb] = 2;
      break;
      case  4:
      arciereb[freb] = 3;
      break;
      case 8:
      arciereb[freb] = 4;
      break;
      case 16:
      arciereb[freb] = 5;
      break;
      case 32:
      arciereb[freb] = 6;
      break;
      case 64:
      arciereb[freb] = 7;
      break;
      case 128:
      arciereb[freb] = 8;
      break;
      case 3:
      arciereb[freb] = 9;
      break;
      case 5:
      arciereb[freb] = 10;
      break;
      case 9:
      arciereb[freb] = 0;
      break;
      case 6:
      arciereb[freb] = 0;
      freb = freb-1;
      break;
      }
      for(i=0; i=10; i++) result = strcat(result, lcdresult[i]);
      result = strcat(result, paglione);
      result = strcat(result, 'A');
      result = strcat(result, ' ');
      result = strcat(result, ' ');
      result = strcat(result, volee);
      Lcd_Out(1, 1, result);
      result = 0;
      result = strcat(result, arciereb[0]);
      result = strcat(result, ' ');
      result = strcat(result, arciereb[1]);
      result = strcat(result, ' ');
      result = strcat(result, arciereb[2]);
      result = strcat(result, ' ');
      result = strcat(result, (arciereb[0]+arciereb[1]+arciereb[2]));
      Lcd_Out(2, 1, result);
     }
     volee++;
     break;
     /* case 65: */
     }
     } // fine switch
     }
}
header.h
Codice:
     int arcierea[2];
     int arciereb[2];
     int arcierec[2];
     int arciered[2];
     int paglione;
     int volee = 1;
     int frea = 1;
     int freb = 1;
     int frec = 1;
     int fred = 1;
     char *lcdresult[10] = {'B', 'e', 'r', 's', 'a', 'g', 'l', 'i', 'o', ' '};
     char *result;
     char *error;
     int i;
immagino si capisca di più così che da come spiego io

ciao
lol21
lol21 non è collegato   Rispondi citando