Buongiorno a tutti !

Mi sto avvicinando al C per poter programmarmi dei pic (16F84)

Fatte le prime prove funzionanti di accensione led, spegnimento e lampeggio a diverse frequenze ho cercato di buttar giù questo codice, errori non me ne segna, ma penso ci sia qualche problema di "logica", soprattutto per la variabile "molt".

Vorrei sapere da voi se effettivamente, costruito così, quando il main va a eseguire il ciclo "for(z;molt)" riesce a leggere il valore di quante volte è stato eseguito nel primo IF.

Ho cercato di colorarvi i punti in dubbio, così da render più leggibile il codice.

Se ci sono altri errori o avete consigli sulla stesura del programma son naturalmente ben accetti. Perchè sono 3 giorni che mi sono avvicinato all'oscuro mondo della programmazione. Grazie !
codice:
#include <htc.h>
#include"delay.c" 
#define Aspetta 250       //definisce la var Aspetta con 250ms
void pausa(char ripeti);  // void è un puntatore che chiama il ciclo pausa quando viene chiamato dalprogramma principale. 
void flash(char nvolte);
void incremento(char molt);

main(void) 
{
TRISA = 1;              //setta RA0 in entrata
TRISB = 0;				//setta RB in uscita
	{
char y;					//dichiara y
char molt=0;			//inizializza "molt" 
char tot=50;

for(y=0;y<=tot;y++)     //ripeti per 50 volte
		{
	DelayMs(130);
if(PORTA==0b00000001)	//se viene premuto il bottone 
			{
PORTB = 0b00000001;		//accendi il led
DelayMs(100);			//aspetta 100ms
PORTB = 0b00000000;		//spegni il led
DelayMs(130);			//aspetta 100ms
incremento;				//chiama la funzione "incremento"
						//incrementa molt di 1 
			}	
		}
	{

char z;
for(z=0;z<=molt;z++)	         //ripeti quante volte è "molt"
                                         //il valore di "molt" dovrebbe corrispondere
                                         //ad ogni esecuzione vera di IF 
		{
pausa(60);				//richiama pausa 60 volte, corrisponde a 1 minuto
		}
flash(5);				//richiama sequenza flash 5 volte
	}
	}
}

void 
flash(char nvolte)
{
	char nflash;
	for (nflash=0;nflash<=nvolte;nflash++)   //ripeti quante volte è stato dichiarato 
                                                              //nel main
PORTB = 0b00000001;		                     //accendi il led
DelayMs(250);			                    //aspetta 250ms
PORTB = 0b00000000;		                   //spegni il led
DelayMs(250);			                  //aspetta 250ms
}
 
void
incremento(char molt)
{
	molt++;				//incrementa "molt" ogni volta 
						//che viene chiamata la funzione dall'IF
} 


void
pausa(char ripeti)            //nome assegnato alla funzione del ciclo 
{                                  //apertura della funzione ciclo 
char x;                          //definisce l'esistenza di x 
for(x=0;x<=ripeti;x++)     //il ciclo vero e proprio  
DelayMs(Aspetta);	   //ogni ciclo corrisponde a 1 secondo
DelayMs(Aspetta);				
DelayMs(Aspetta);
DelayMs(Aspetta);          //l'argomento del ciclo (qui finisce il ciclo e ci và il punto e virgola) 
}