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