Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Mentre Ubisoft vorrebbe chiedere agli utenti, all'occorrenza, di distruggere perfino le copie fisiche dei propri giochi, il movimento Stop Killing Games si sta battendo per preservare quella che l'Unione Europea ha già riconosciuto come una forma d'arte. Abbiamo avuto modo di parlare con Daniel Ondruska, portavoce dell'Iniziativa Europa volta a preservare la conservazione dei videogiochi
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Abbiamo provato il nuovo Galaxy S25 Edge, uno smartphone unico per il suo spessore di soli 5,8 mm e un peso super piuma. Parliamo di un device che ha pro e contro, ma sicuramente si differenzia dalla massa per la sua portabilità, ma non senza qualche compromesso. Ecco la nostra prova completa.
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
Pensato per il professionista sempre in movimento, HP Elitebook Ultra G1i 14 abbina una piattaforma Intel Core Ultra 7 ad una costruzione robusta, riuscendo a mantenere un peso contenuto e una facile trasportabilità. Ottime prestazioni per gli ambiti di produttività personale con un'autonomia lontano dalla presa di corrente che permette di lavorare per tutta la giornata
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-07-2015, 15:24   #1
alien75
Junior Member
 
Iscritto dal: Jun 2012
Messaggi: 3
Software di gestione scheda calcolatrice Z80

Salve, ho realizzato una calcolatrice basata sullo Z80 di cui riporto il link qui a fianco ---> http://creative75.altervista.org/creative/?p=86 . Questo è il mio blog che spiega come ho realizzato tale
scheda.
Il mio problema ora consiste nella realizzazione del software in C.
Ora il problema non è tanto il trasferire il codice eseguibile per Z80 nella EEPROM, bensi quello di riuscire a far
visualizzare come test di prova la cifra "1252" sul display.
Dopo aver scritto, compilato e caricato il codice nella EEPROM si sente il relè dell' accensione che si accende ad intermittenza di 1sec. per poi visualizzare segmenti a caso ad ogni intermittenza.
Non capisco il perchè di questo comportamento.
Riporto di seguito il codice che dovrebbe visualizzare "1252" sul display:


firmware_calc.c:
Codice:
    //====================Firmware calcolatrice============================
    //21-04-2014    by  Roncolato Fabio ===================================


    #include "display.h"

    void (*function)() = (void (*)())0xc0;


    int main()
    {
        display_7seg(12.55);
        while(1){};
        return 0;
    }

display.h:
Codice:
//file header dei drivers

void inserisci_cifra(int posizione, char x);
char converti(char cifra);
void visualizza(int posizione, char cifra);
void display_7seg(float numero);
display.c
Codice:
    //drivers per gestire il display

    //indirizzi dei registri dei display
    //0x4000 display1
    //0x4001 display2
    //0x4002 display3
    //0x4003 display4
    //0x4004 display5
    //0x4005 display6
    //0x4006 display7
    //0x4007 display8


    #include "display.h"
    #include <stdio.h>
    #include <stdlib.h>

    char cifre[8];
    int num, n=0;


    //funzione di visualizzazione cifre
    void visualizza(int posizione, char cifra)
    {
        char numero=converti(cifra);
        inserisci_cifra(posizione, numero);
    }

    //funzione di conversione da BCD a 7 segmenti
    char converti(char cifra)
    {
         if(cifra==0x01)     cifra=0x9f;
         if(cifra==0x02)     cifra=0x25;
         if(cifra==0x03)     cifra=0x0d;
         if(cifra==0x04)     cifra=0x99;
         if(cifra==0x05)     cifra=0x49;
         if(cifra==0x06)     cifra=0x41;
         if(cifra==0x07)     cifra=0x1f;
         if(cifra==0x08)     cifra=0x01;
         if(cifra==0x09)     cifra=0x09;
         if(cifra==0x00)     cifra=0x03;
         if(cifra==0xff)     cifra=0xff;   //spegni tutti i segmenti
         return cifra;
    }

    //funzione di inserimento cifra 7 seg. nella cella display indicata
    void inserisci_cifra(int posizione, char x)
    {
         __asm
             push ix
              add ix,sp
             ld h, 4(ix)
             ld l, 5(ix)
             push af
             ld a, 6(ix)
             ld (hl), a
             pop af
             pop ix
             ret
         __endasm;
    }


    //funzione di visuallizzazione cifre di un float nel display
    void display_7seg(float numero)
    {
         //int num, n=0;
         sprintf(cifre, "%f", numero);
         for(num=0x4000;num<0x4007;num++)
         {
              visualizza(num, cifre[n]);
              n++;
         }
    }

Codice:
@echo -------------- compilermessages -----------------
@sdasz80 -o crt0calc.o  crt0calc.s
@sdcc -mz80 -c firmware_calc.c
@sdcc -mz80 -c display.c
@rem  sdcc in linker mode, only tell .rel files in this line, no .c, no .asm
@sdcc -mz80  --no-std-crt0  --reserve-regs-iy  --code-loc 0x00F3 --data-loc 0xe000 -o linkresult.ihx crt0calc.rel firmware_calc.rel  display.rel
@echo -------------------------------------------------
@sdldz80 -nf "link.lnk"
@hex2bin 4000 linkresult.ihx
@copy linkresult.bin calc.ROM


Quest' ultimo file è lo script di compilazione che serve ad SDCC (il compilatore che ho usato) per compilare il tutto.
Nessuno mi può dare una mano a capire perchè mi escono segmenti del display a caso invecie di uscire "1252" ?
Grazie in anticipo
alien75 è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2015, 17:45   #2
lorenzo001
Senior Member
 
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
Nella funzione display n deve valere 0 all'inizio
lorenzo001 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart Intervista a Stop Killing Games: distruggere vid...
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione Samsung Galaxy S25 Edge: il top di gamma ultraso...
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto HP Elitebook Ultra G1i 14 è il notebook c...
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso Microsoft Surface Pro 12 è il 2 in 1 pi&u...
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet! Recensione REDMAGIC Astra Gaming Tablet: che spe...
Nuovi coupon nascosti Amazon (aggiorname...
Chatbot e salute mentale: nascono i prim...
Prezzi in ribasso su Amazon su tante com...
Eureka J15 Ultra spiazza la concorrenza ...
Stufi di tagliare il prato? Questi robot...
Anche Dyson si adegua: sconti fino a 200...
Mi sono rotto un dito, e le avventure gr...
Tutto vero: costa solo 899€ il portatile...
Lefant M330Pro da 5.000Pa a 104€ o i due...
Intel tagli ancora: vuole rendere la div...
Tesla sta per lanciare il Robotaxi nella...
Dead Island 2 arriva su Mac, ma a un pre...
FIA e Formula E rinnovano il matrimonio:...
Windows 11 24H2 approda su nuovi sistemi...
Le restrizioni americane hanno generato ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:14.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v