Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Quattro modi di indossarlo, stessa app del Plaud Note Pro e integrazione con il desktop. Il registratore IA da indossare di Plaud eccelle in mobilità, ma resta vincolato all'abbonamento ed è facile da perdere
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Xiaomi ha portato Redmi Watch 6 anche sul mercato italiano, puntando su un display AMOLED da 2,07 pollici con picco di luminosità a 2000 nit, frame in alluminio da 9,9mm e un'autonomia dichiarata di 12 giorni. Lo smartwatch gira su HyperOS 3 e integra GPS, Bluetooth 5.4 e oltre 150 sport mode. Il tutto a meno di 100 euro
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Con 22 tasti, il pulsante 5D, lo Shift Mode e il sensore PixArt 3395 da 26.000 DPI, il nuovo mouse wireless di Mad Catz si rivolge in modo preciso ai giocatori di MMO e RPG. Ma chi conosce già il R.A.T. 8+ ADV si accorgerà subito di quanto i due prodotti condividano, e di dove invece divergono
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


Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC Radeon RX 9070 GRE, AMD la porta in tutto il mon...
Reolink OMVI 3i WiFi: videosorveglianza più intelligente e facile da usare Reolink OMVI 3i WiFi: videosorveglianza pi&ugrav...
Virtua Fighter è tornato e non &e...
Il ritorno di Fumito Ueda, autore di Sha...
Cooler Master svela GPU Shield, la nuova...
Samsung Galaxy S27 Pro: sarà lui ...
Così Google ha ottimizzato Chrome...
Xiaomi non cambia idea: il display poste...
LG presenta in Italia le gamme TV Micro ...
Sette anni dopo l'annuncio, The Wolf Amo...
'Non avrete aumenti': la decisione shock...
TIM lancia il Pass Mondiali DAZN: 104 pa...
Tesla Roadster, promessa o miraggio? La ...
Mark Hamilton, la tavola periodica del m...
Hanger 13 annuncia Uomo d'Onore: espansi...
La battaglia delle HBM4 entra nel vivo: ...
Dopo 12 anni torna Alien: Isolation. Ecc...
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: 00:29.


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