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 | ||
| ||
> 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) |