Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    36

    flip flop in c++

    Ho un problema con un compito che devo fare per la scuola...
    devo simulare un flip flop jk utilizzando il turbo c++, visualizzando graficamente il segnale di clock, degli ingressi e dell'uscita.
    Il mio problema sta nel fatto che non so come dire al c ch deve variare gli stati degli ingressi premendo il tasto "J" o "K" senza che il programma si fermi ad aspettare l'input.
    Accetto qualsiasi suggerimento

    Grazie

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    .... Non ho capito qual'è il tuo problema.

    Se vuoi assegnare un valore di tastiera a una variabile in C è semplice: gle la assegni. ( ch = 'J'; )

    se invece il problema è temporizzare questo ciclo cioe far passare un tot di tempo tra un cambiamento e l'altro del flipflop puoi utilizzare le funzioni (non standard) di libreria, ma te le scosiglio.

    Piuttosto (anche se non è preciso) potresti fare un ciclo for +o- lungo che ti fa passare un po di tempo tra un cambiamento di stato ed un altro (che presumo tu gestisca con uno SWITCH CASE all'interno di un DO WHILE)

    N = 10000;
    for (i=0;i<N;i++)
    ; /* Istruzione vuota serve solo a far perdere tempo al pc per 1000 cicli */


    Chiaramente il valore di N varia in base alla potenza del pc sul quale lavori....sperimenta tu.

    Se lo provi su una macchina spaventosamente veloce non preoccuparti... puoi indentare piu cicli FOR nulli uno nell' altro .... ma non esagerare

    spero di essere stato utile.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    36
    Questo è il prog ke ho fatto fino adesso.
    Per il momento il programma visualizza solo il segnale di clock, la scelta di usare il comando putpixel è stata richiesta dal professore, il mio problema è che il ogni istante, cioè per ognuno dei pixel che vengono visualizzanti, premendo il tasto J il segnale di J cambia (tra 0 e 1) e così anche per K.
    Nel caso in cui non viene premuto nessun tasto i valori restano gli stessi. Questo deve avvenire senza che il programma si fermi ad aspettare che l'utente digiti J o K... un pò come per snake, quando schiacci un tasto il serpente gira, se no continua.
    Assegnando a una variabile il tasto (ch='J') se nn sbaglio chiede comunque il cin che blocca il programma finchè nn viene inserito un valore e viene premuto invio.




    // Simulazione Fli Flop JK
    #include <graphics.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>
    #include <iostream.h>
    #include <dos.h>
    #include <math.h>

    int main(void)
    {
    int gdriver = DETECT, gmode, errorcode;
    initgraph(&gdriver, &gmode, "c:\\");
    errorcode = graphresult();
    if (errorcode != grOk)
    {
    printf("Graphics error: %s\n", grapherrormsg(errorcode));
    printf("Press any key to halt:");
    getch();
    }

    // Inizio Programma

    int xck, yck, ck; // Variabili Segnale di Clock
    int xj, yj, j; // Variabili Segnale J
    int xk, yk, k; // Variabili Segnale K
    int xq, yq, q; // Variabili Segnale Q
    int i, y; // Contatori cicli for
    int time; // Variabile Delay

    time=20;
    xck=20;
    yck=70;


    for(i=1; i<=10; i++)
    {

    // Fronte di salita del clock
    for(y=1; y<=2; y++)
    {
    delay(time);
    setcolor(12);
    line(xck,yck,xck,yck-15);
    yck=yck-15;
    }

    // Stato alto del clock --> Il segnale passa
    for(y=1; y<=30; y++)
    {
    delay(time);
    putpixel(xck,yck,12);
    xck=xck+1;
    }

    // Fronte di discesa del clock
    for(y=1; y<=2; y++)
    {
    delay(time);
    setcolor(12);
    line(xck,yck,xck,yck+15);
    yck=yck+15;
    }

    // Stato basso del clock
    for(y=1; y<=30; y++)
    {
    delay(time);
    putpixel(xck,yck,12);
    xck=xck+1;
    }

    }

    getch();
    closegraph();
    return 0;
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    turbo c++ significa il c, vero?

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    36
    il turbo c nn rispetta l'ansi c

  6. #6
    Originariamente inviato da Lucked
    turbo c++ significa il c, vero?


    il turbo c++ e' un compilatore della borland che a vlte potrebbew trovarsi un po' diverso come sintassi...
    Ma oltre ad anjuta, e' il migliore che abbia usato...

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    36
    Qualcuno mi sa dire qualcosa sulle routine di tastiera? il prof dice ke devo crearne una forse in assembler (di cui nn so praticamente nulla ) per far si ke controlli se è stato premuto un tasto, se no nn deve fermarsi ma far finta di niente

  8. #8
    Originariamente inviato da Bak86
    Qualcuno mi sa dire qualcosa sulle routine di tastiera? il prof dice ke devo crearne una forse in assembler (di cui nn so praticamente nulla ) per far si ke controlli se è stato premuto un tasto, se no nn deve fermarsi ma far finta di niente
    Vediamo se ho capito bene ?
    codice:
    #include <stdio.h>
    #include <windows.h> /* utilizzando le API di Windows */
    
    int main()
    {
    
        while(1)
        {
            if (GetKeyState (VK_LEFT) < 0)
                printf("LEFT ") ;
            if (GetKeyState (VK_RIGHT) < 0)
                printf("RIGHT ");
            if (GetKeyState (32) < 0)
                printf("SPACE ");
            if (GetKeyState (65) < 0)
                printf("A ");
               
            Sleep(100);
            /* ANCHE se non premo un tasto, fai comunque qualcos'altro */    
        }
    
        return 0;    
    }
    p.s. la prossima volta scrivi un titolo che specifichi meglio il tema del thread.
    ...Terrible warlords, good warlords, and an english song

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    36
    ... non è ke mi sapresti dire dove trovare la libreria windows.h? Ti ricordo che uso il Turbo C++. grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.