Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Portzugriff aus Segment 3 Kategorie: Progr. Assembler, TaskingTools, OS (von Hansi - 19.11.2004 22:35)
Als Antwort auf Re: Portzugriff aus Segment 3 von André H. - 19.11.2004 14:22
Ich nutze:
C-Control II Unit, C-Control II Station, CC2-Application-Board, OSOPT_V2
> Hallo Hansi,
>
>
> > >
> > > P1L_  EQU 0FF04h
> > > P1H_ EQU 0FF06h
> > >
> > > .....
> > >           move  r3,#Speicheradresse     ; Speicherplatz, der #P1L_ oder #P1H_ enthält
> > >           EXTS #8,#1
> > >           mov    r7,[r3]               ; r7 enthält jetzt P1L_
> > >           EXTS #0,#1
> > >           mov    r2,[r7]               ; r2 soll jetzt die Ports enthalten tut es aber nicht
> > > ......
> > >

> > >
> > > eine andere Variante funktioniert
> > >
> > > P1L_  EQU 0FF04h
> > > P1H_ EQU 0FF06h
> > >
> > > .....
> > >           EXTS #0,#1
> > >           mov    r2,P1L_            ; so funktioniert es
> > > ......
> > >

> > >
> > > ist das ein generelles Problem, gib es eine andere Möglichkeit den Port in r2 zu laden?
>
> Bist Du sicher, daÃ? Der Speicherplatz (R3) korrekt ist ?
>
> Denn bei mir funzt es Problemlos:
>
> $segmented
> $model(medium)
> $extend
> $nomod166
> $stdnames(reg164ci.def)
> $NOLOCALS
>       regdef  R12,R4,R1 ,R2
> ;****************************************************************************
>
> BusAddr         EQU   0FD10H
> BusAddrA        EQU   0FD12H
> AddrL         EQU     0FD14H
> AddrH         EQU     0FD16H
> DataW         EQU     0FD18H
> Ports         EQU     0FD1AH ; I/O-Ports= Bit 6,7
>
> ; Definition des OS-Routinen
> OSsegment     EQU     0
> POP_R4                EQU     0765AH
> PUSH_R12      EQU     075D6H
>
> userseg               SECTION CODE word at 32000h
> assume        dpp3:userseg
>
>
> ;****************************************************************************
> ptest proc far
>       CALLS   OSsegment,POP_R4        ;hole Daten vom Stack
>
>       EXTS    #0, #1
>       MOV     R12, [R4]
>      
>       CALLS   OSsegment,PUSH_R12      ;lade Daten auf den Stack
>       POP     R1
>       POP     R1
>       RETS
> ptest endp
> userseg       ENDS
>       END
>

>
> Das C2-Testproggie dazu:
> //------------------------------------------------
>   inline function test (int port) returns int
> //------------------------------------------------
> {
>  inline vmcodes.VM_LOAD_IMMEDIATE_BYTE+0x300;
>  inline vmcodes.VM_LOAD_IMMEDIATE_INT;
>  inline 0x2000;
>  inline vmcodes.VM_SYSCALL;
> }
>
> thread main
> {byte i;int wert;
>  lcdext.init();
>  loop
>  {
>   lcdext.line(1);
>   for i= 8 ... 15 lcdext.ziff(ports.get(i)and 1);
>   lcdext.line(2);
>   wert=test(0xFF06);
>   for i= 0 ... 7 lcdext.ziff((wert shr i)and 1);
>  }
> }

>
>      
> > Hat da noch niemand eine Antwort drauf? André H. , Du auch nicht?
> > Andre, ich habe Dir übrigens am 15. eine mail geschickt ( .....@imail.de ) , kam sie nicht an?
>
> Sorry, aber da ich z.Zt. fast keine Zeit habe, dauert bei mir alles ein wenig länger.
> Das gilt für E-Mail, Postings und alles andere auch.
>
> Bei EMails kann es daher schon einmal über eine Woche dauern, bis ich zum Antworten komme.
> Im Forum ist es ähnlich, nur da� dies meist sogar länger dauert.
> Eigentlich müsste ich jetzt produzieren, jedoch hat sich im Forum wieder zuviel angesammelt,
> und mein Platinenhersteller lässt mich gerade im Stich, soda� ich nur einen kleinen Teil
> der Bestellungen heute fertigmachen kann. (Meine Platinenproduktion, die gestern fertig sein sollte,
> bekomme ich wegen eines Herstellungsfehlers ich erst am Dienstag, da alle Platinen
> scheinbar neu produziert werden müssen.)
>
> MfG André H.

Guten Abend André,

da bin ich mir sogar sehr sicher weil ich die gleiche Speicherstelle mit dem gleichen Inhalt
jetzt in einer anderen Form Abfrage und beide Ports klappen einwandfrei.



.....
 P1L_  EQU 0FF04h
 P1H_ EQU 0FF06h

.......
                 mov  r3,#Speicheradresse     ; Speicherplatz, der #P1L_ oder #P1H_ enthält
                 EXTS #8,#1
                 mov    r7,[r3]               ; r7 enthält jetzt #P1L_
                 cmp   r7, #P1L_
                 jmpr   cc_EQ, Sub_P1L

Sub_P1H:  EXTS #0,#1
                 mov    r2,#P1H_              
 ......
Sub_P1L:  EXTS #0,#1
                 mov    r2,#P1L_              
.......

 

GruÃ? Hansi          


    Antwort schreiben


Antworten:

Re: Portzugriff aus Segment 3 (von Hansi - 20.11.2004 10:53)