⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcanutil.a51

📁 Philips sja1000 can controller. it contains example on how to control this device
💻 A51
字号:
$NOXREF
$SYMBOLS
$DEBUG
$NORB
$NOGEN
$PAGELENGTH(80) PAGEWIDTH(115)
;************************************************************************
;************************************************************************
;*                                                                      *
;*  C A N   U T I L I T I E S                                           *
;*                                                                      *
;************************************************************************
;************************************************************************
;*                                                                      *
;*  Funktion:                                                           *
;*                                                                      *
;*     Zusammenfassung diverser Assembler-Routinen. Diese Routinen      *
;*     ersetzen C-Funktionen zur Zeitoptimierung.                       *
;*                                                                      *
;*                                                                      *
;*  Filename           :   PCANUTIL.A51                                 *
;*                                                                      *
;*  Modulname          :   PCANUTIL                                     *
;*                                                                      *
;*  Zielsystem         :   Jedes 8051 System mit einem Philips          *
;*                         SJA100 CAN-Controller                        *
;*                                                                      *
;*  Entwicklungssystem :   Keil ASM-51                                  *
;*                                                                      *
;************************************************************************
;*  Versionen:                                                          *
;*                                                                      *
;*  0.1   31.10.1990   Th. Fischler: Erste Version                      *
;*  0.2    3.06.1991   Th. Fischler: JNZ Fehler eliminiert              *
;*                                                                      *
;************************************************************************
;*    Copyright 1991 .. 2001 METTLER  &  FUCHS  AG,  CH-8953 Dietikon   *
;************************************************************************

        NAME  CANUTIL


;------------------------------------------------------------------------
;       E X P O R T S
;------------------------------------------------------------------------

PUBLIC  _c_fast_copy



;*---------------------------------------------------------------------*
;*     C _ F A S T _ C O P Y
;*---------------------------------------------------------------------*
;*  Funktion:
;*
;*     Schnelles kopieren von maximal 8 Byte von XDATA nach XDATA
;*     (speziell zum kopieren von CAN-Objekten).
;*
;*     Muss in C folgendermassen deklariert werden
;*
;*     void c_fast_copy (unsigned char xdata *arr1,
;*                       unsigned char xdata *arr2,
;*                       unsigned char length);
;*
;*
;*---------------------------------------------------------------------*
;*  Parameter:
;*
;*  arr1   :  Adresse der Source Daten (R6/R7)
;*  arr2   :  Adresse der Destination Daten (R4/R5)
;*  length :  Anzahl Bytes zum kopieren (R3)
;*
;*---------------------------------------------------------------------*/

?PR?_c_fast_copy?CANUTIL        SEGMENT CODE
                                RSEG ?PR?_c_fast_copy?CANUTIL

_c_fast_copy:
                                ; L刵ge in B laden und Test ob L刵ge 0
                                MOV     B, R3
                                MOV     A, R3
                                JZ      CFC_L_2  ; L刵ge ist 0

CFC_L_1:               ; Kopierschleife
                                ; DPTR mit Startadresse laden
                                MOV     DPH, R6
                                MOV     DPL, R7
                                ; Wert in Akku
                                MOVX    A, @DPTR
                                ; Startadresse inkrementieren
                                INC     DPTR
                                ; Startadresse zur乧kspeichern
                                MOV     R6, DPH
                                MOV     R7, DPL
                                ; DPTR mit Endadresse laden
                                MOV     DPH, R4
                                MOV     DPL, R5
                                ; Wert kopieren
                                MOVX    @DPTR, A
                                ; Endadresse inkrementieren
                                INC     DPTR
                                ; Endadresse zur乧kspeichern
                                MOV     R4, DPH
                                MOV     R5, DPL
                       ; Schleifentest
                                DJNZ    B, CFC_L_1
CFC_L_2:                        RET


                                END
;------------------------------------------------------------------------
;       ENDE  CANUTIL
;------------------------------------------------------------------------


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -