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

Bitte Code- & ASM-Tags benutzen Kategorie: Programmierung (von AndrĂ© H. - 9.11.2004 9:55)
Als Antwort auf Re: messen von zwei pwm-signalen von Cris - 9.11.2004 9:16

Hallo Cris,

Auch eine kleine Bitte von mir: Benutze bitte beim Posten von C2-Quellcode
das code-Tag und bei ASM-Code das asm-Tag.
Abgesehen davon, da� sich der Quellcode leichter lesen lä�t, wird eine falsche
Darstellung vermieden. (VerstĂĽmmelung von C2-Code bzw. Darstellung von Tabs bei ASM)
Und so nebenbei könnte man dann auch die Suchfunktion gezielt nutzen,
um C2-Code bzw. ASM-Routinen im Forum zu suchen.
Einfach nach "<code>" oder nach "<asm>" suchen und schon erhält man alle
Postings mit entsprechendem Inhalt.

Ich bin so frei und poste anbei Deinen Code inkl. gesetzter Tags.

MfG André H.


> hier ein kleines Beispiel des Assemblerprogrammes

OS_PUSH_R12     EQU     075D6H
OS_POP_R4       EQU     0765AH


;      Definition Pins
PSS_D           DEFB    P1L.4           ;digitales PSS-Signal

;       neue Systemvariablen
Ct_Adr          EQU     0F7A6h          ;gezählte Impulse gesamt


userseg SECTION CODE word at 30000H                
assume  dpp3:SYSTEM


;********************************************
public          Data_init
name            Data_init
Data_init       PROC    far
                CALLS   OS_POP_R4
                MOV     R2,#Ct_Adr
                EXTS    #0,#1
                MOV     [R2],R4                 ;store Buffer Address
                POP     R1
                POP     R1
                RETS
Data_init       ENDP

public          PSS_Data
name            PSS_Data
PSS_Data        PROC    far
                MOV     R2,#Ct_Adr
                EXTS    #0,#1
                MOV     R1,[R2]
                MOV     R2,#0
                EXTS    #8,#1
                MOV     [R1],R2
                ADD     R1,#2
                EXTS    #8,#1
                MOV     [R1],R2
                POP     R1
                POP     R1
                RETS
PSS_Data        ENDP

public          PSS_ISR
name            PSS_ISR
PSS_ISR         PROC    far
                PUSH    R0
                PUSH    R1
                PUSH    R2
                MOV     R2,#Ct_Adr
                EXTS    #0,#1
                MOV     R1,[R2]

                EXTS    #8,#1
                MOV     R2,[R1]
                ADD     R2,#1
                EXTS    #8,#1
                MOV     [R1],R2

                JB      PSS_D,PSS1                      ;if low
                ADD     R1,#2
                EXTS    #8,#1
                MOV     R2,[R1]
                ADD     R2,#1
                EXTS    #8,#1
                MOV     [R1],R2

PSS1:           POP     R2
                POP     R1
                POP     R0
                RETS
PSS_ISR         ENDP


>Ich habe den internen Zähler von P1H0 zum Zwischenspeichern der Variablenadressen
> benutzt. Den Interrupt von P1H0 habe ich einfach durch eine "leere" Funktion ersetzt.
>
> In C2 kannst Du das ASM-Programm wie folgt einbinden:
 
const userseg=3;
const P1H0_ISR=0x006E;
const PSS_ISR=0x0034;
const get_Data=0x0014;
const Data_Init=0x0000;

//hier mĂĽssen Deine Adressen rein

type TBuffer
{
 int Total_Ct;
 int PSS_Ct;
}


inline function Var_init(TBuffer Buffer)
{
       inline vmcodes.VM_LOAD_IMMEDIATE_BYTE+(userseg shl 8);
       inline vmcodes.VM_LOAD_IMMEDIATE_INT;
       inline Data_Init;
       inline vmcodes.VM_SYSCALL;
}

inline function PSS_Clear()
{
       inline vmcodes.VM_LOAD_IMMEDIATE_BYTE+(userseg shl 8);
       inline vmcodes.VM_LOAD_IMMEDIATE_INT;
       inline get_Data;
       inline vmcodes.VM_SYSCALL;
}

function PSS_Init()
{
     Var_init(Buffer);
     system.hook(system.EVENT_P1H0,userseg,P1H0_ISR,system.HOOK_REPLACE);
     system.hook(system.EVENT_TIMER,userseg,PSS_ISR,system.HOOK_AFTER);
}

TBuffer PSS_Data;


> Die Variable PSS_Data enthält die Gesamtanzahl der Aufrufe (also die Zeit in ms) sowie die Zeit in ms
> mit High-Pege an P1H4.



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten: