Forum: Mikrocontroller und Digitale Elektronik 89c2051 port beschreiben :(


von MarkoMarko (Gast)


Lesenswert?

hi,

es ist sicher keine große sache den port eines 89c2051 zu beschreiben.
ich hatte bisher 80c517a programmiert. da hatte der syntax
funktioniert( da konnte ich aber P3 anstatt 0xb0 angeben)

problem:

ich möchte den port 3 mit dem text - daten_port - definieren. doch das
will nicht so recht. hier ein auszug aus'm code
kann jemand sagen, was ich falsch mache?

---------------------------------------------------------------------

#define DISP_BEFEHL 0
#define DISP_SCHREIBEN 0
#define  daten_port  0xb0   //??????????

sbit DISP_enable=0xb4;
sbit RS = 0xb5;
sbit RW = 0xb7;

wait(int tm)
{
  for(tm;tm>=0;tm--);
}


initial_lcd()
{
    DISP_enable=0;
    wait(2000);
    daten_port=0x30;      //??????? Interface auf 8bit
    RS=DISP_BEFEHL; RW=DISP_SCHREIBEN;
    DISP_enable=1;_nop_();DISP_enable=0;
    wait(500);
    DISP_enable=1;_nop_();DISP_enable=0;
    wait (100);
    DISP_enable=1;_nop_();DISP_enable=0;

    daten_port = 0x20;     //????? Interface auf 4bit
    DISP_enable=1;_nop_();DISP_enable=0;

von MarkoMarko (Gast)


Lesenswert?

ok,

mit

sfr  daten_port= 0xb0;

gehts natürlich.

sorry für den verschwendeten platz.

von edi-edi (Gast)


Lesenswert?

pass aber beim 89C2051 auf....der hat im port 3 nicht alle tassen im
schrank....pin p3.6 existiert nicht (extern)

von Peter D. (peda)


Lesenswert?

"da konnte ich aber P3 anstatt 0xb0 angeben"

Das geht auch unter C.
Nur mußt Du natürlich das entsprechende Include angeben, z.B.:

#include<reg2051.h>

Der Compiler soll ja nicht nur einen 8051 können, sondern alle etwa 600
Typen.


Peter

von Peter D. (peda)


Lesenswert?

"kann jemand sagen, was ich falsch mache?"

Wo hast Du denn die Datenleitungen angeschlossen, an P3.3-P3.0 ?

Dann dürfte P3 = 0x30; doch ziemlich witzlos sein.


Peter

von MarkoMarko (Gast)


Lesenswert?

@ peter

es muss natürlich heißen P3=0x03; schon erkannt ;)

die include habe ich AT89x051.H oder auch AT892051.H

bei beiden geht es nicht mit P3=...

auszu aus dem header

/*------------------------------------------------
P3 Bit Registers (Mnemonics & Ports)
------------------------------------------------*/
sbit P3_0 = 0xB0;
sbit P3_1 = 0xB1;
sbit P3_2 = 0xB2;
sbit P3_3 = 0xB3;
sbit P3_4 = 0xB4;
sbit P3_5 = 0xB5;


@ edi edi

jupp, das hat er wohl ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.