//======================================================================================================== Codice c che gestisce la comunicazione tra l`utente e la periferica implementata con il Microblaze //======================================================================================================== // Located in: microblaze_0/include/xparameters.h #include "xparameters.h" #include "stdio.h" #include "xutil.h" #include "fsl.h" #include "XGpio_l.h" //==================================================== int main (void) { Xuint32 segnale,Data,Data1,sum; int i; print("-- Inizo main() --\r\n\n"); do{ //riceve il primo valore dai dip switches print("Digitare il primo dato attraverso i dip switches\r\ne premere un push button per confermare\r\n\n"); do{ segnale = XGpio_mGetDataReg (XPAR_PUSH_BUTTONS_3BIT_BASEADDR, 1); Data = XGpio_mGetDataReg (XPAR_DIP_SWITCHES_8BIT_BASEADDR,1); }while(segnale == 0); xil_printf("Dato letto da DIP_Switches_8Bit: 0x%x\r\n\n", Data); // ciclo di ritardo per rilasciare gli switch for(i=0; i <= 0x1FFFFFFF; i++) { ; } //riceve il secondo valore dai dip switches print("Digitare il secondo dato attraverso i dip switches\r\ne premere un push button per confermare\r\n\n"); do{ segnale = XGpio_mGetDataReg (XPAR_PUSH_BUTTONS_3BIT_BASEADDR, 1); Data1 = XGpio_mGetDataReg (XPAR_DIP_SWITCHES_8BIT_BASEADDR,1); }while(segnale == 0); // ciclo di ritardo per rilasciare gli switch for(i=0; i <= 0x1FFFFFFF; i++) { ; } xil_printf("Dato letto da DIP_Switches_8Bit: 0x%x\r\n\n", Data1); //invia il primo dato attraverso il bus fsl sul link 0 putfsl(Data,0); //invia il secondo dato attraverso il bus fsl sul link 0 putfsl(Data1,0); //riceve la somma esegui da dalla periferica esterna attraverso il bus fsl sul link 0 getfsl(sum,0); //invia il risultato attraverso la seriale print("il risultato in decimale e`\r\n\n"); xil_printf("%d = %d + %d \r\n",sum,Data,Data1); print("il risultato in esadecimale e`\r\n\n"); xil_printf("%x = %x + %x \r\n\n",sum,Data,Data1); }while(1); // continua sempre ad aspettare un input dall`utente return 0; }