This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Getting char to function

hi there,

i just started to use the µVision compiler.
when i try to use my old programs there is one big problem.
i cant give hex values written in a unsigned char to other functions... i got an example:


/*** Einbinden von Include-Dateien ***/
#include <stdio.h>              // Standard Ein-/Ausgabefunktionen
#include <at89c51cc03.h>        // CC03er-Register
#include <stdlib.h>


/******************************************************************************************/
/*** CC03er-SFR´s und SFR-Bits besonders für dieses Projekt                             ***/
/*** Beachten: diese Festlegungen überschreiben die Festlegungen aus ´at89c51cc03.h´    ***/
/*** Das ergibt aber keine Probleme !                                                   ***/
/******************************************************************************************/
/******************************************************/
/*** CS\-Adressen der externen Peripherie-Bausteine ***/
/******************************************************/

 unsigned char xdata DIN _at_ 0xB3;
 unsigned char xdata CLK _at_ 0xB4;             //Portpin P3.5, serielle Freigabeleitung
 unsigned char xdata LOAD _at_ 0xB5;
/********************************************************************************/
/*  Funktion void init_seri(void) initialisiert die serielle Schnittstelle      */
/*                                                                              */
/*  Schnittstellenparameter:  9600Baud, 8 Datenbit, 1 Stopp Bit                 */
/*        asynchroner Betrieb                                                   */
/*                                                                              */
/********************************************************************************/

void init_seri(void)
  {
    SCON=0x52;
    TMOD |=0x20;
    TH1=0xfd;                   // Reloadwert 0xfd bei 11,0592MHz
    TR1=1;
    TI=1;
  }

/******************************************************************************************/

/*** Löschen des Terminal-Bildschirms ***/

void clear_screen(void)
  {
    printf("\x1b\x48\x1b\x4a");
  }

/*******************************************************************************************/
 void _wait_ms(unsigned int multiplikator)
{
    unsigned int i,j;

    for(i=0;i<multiplikator;i++)
    {
        for(j=0;j<123;j++);
    }
}


void send_2_byte (signed char adresse, signed char daten)
// Funktion für Serielle Datenübertragung über
{
unsigned char teiler;
int i;
LOAD=0;
teiler = 0x80;


for(i=1;i<9;i++)        //Ausgabe der Adresse
{
    if (adresse & teiler!=0)
    {
    DIN=1;              // Datenleitung setzen
    }
    else
    {
    DIN=0;
    }
    CLK=1;            //Takt
    CLK=0;            //Ausgeben
    teiler=teiler/2;    //nächstes Bit
}
teiler = 0x80;
for(i=1;i<9;i++)        //Ausgabe der Adresse
{
    if (daten&teiler!=0)
    {
    DIN=1;              // Datenleitung setzen
    }
    else
    {
    DIN=0;
    }
    CLK=1;            //Takt
    CLK=0;            //Ausgeben
    teiler=teiler/2;    //nächstes Bit
}
LOAD=1;                 // Datenübertragung abgeschlossen

}


void init_MAX7219(void)
  {
    int i;

    send_2_byte(0x09, 0xff);    // BCD Code B Decode-Mode für alle 8 Display-Stellen!
    send_2_byte(0x0a, 0x0f);    // Maximale Lichtintensität gewählt!
    send_2_byte(0x0b, 0x07);    // Alle 8 Display-Stellen aktiviert!
    send_2_byte(0x0c, 0x01);    // LED-Display eingeschaltet, shut down aufgehoben!
    for (i=1; i<9; i++)         // Schleife zum Löschen der alten Displayinhalte!
      send_2_byte(i, 0x0f);
    send_2_byte(0x0f, 0x01);    // Displaytest eingeschaltet!
    _wait_ms(1000);             // 1 Sekunde warten, dann
    send_2_byte(0x0f, 0x00);    // Displaytest wieder ausschalten!
  }

/********************************************************************************/

void main(void)
  {
    char WAT_NU;

    init_seri();                // Initialisierung der seriellen Schnittstelle!

    // Löschen des Terminal-Bildschirms
    clear_screen();
        init_MAX7219();             // Grundinitialisierung des MAX7219 durchführen
    LOAD = 1;                   // Grundzustand auf den seriellen Bus einstellen!
    CLK = 0;

    printf("Das Arbeiten mit dem seriellen LED-Treiber-Baustein MAX7219\n");

        while(1);           // Endlosschleife
}


it doesnt init the MAX7219... althought the function usualy works...
i hope someone can give me hint!

greetings from berlin... jens