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

📄 rem28ans.asm

📁 2812的CAN通讯源代码,需要的朋友请下载试用
💻 ASM
字号:
;==============================================================================
* File name :   REM28ANS.asm                                                   *
* Description : PROGRAM TO INITIATE AUTO-ANSWER TO A REMOTE FRAME  
*               REQUEST FROM A 28x 

;Last update 12/28/2001
*==============================================================================

                .title   "REM_ANS"       ; Title 
                .include 240x.h          ; Variable and register declaration
                .include vector.h
;------------------------------------------------------------------------------
; Constant definitions
;------------------------------------------------------------------------------

DP_PF1          .set     0E0h            ; Page 1 of peripheral file (7000h/80h
DP_CAN          .set     0E2h            ; CAN Register (7100h)
DP_CAN2         .set     0E4h            ; CAN RAM (7200h)

;------------------------------------------------------------------------------
; M A C R O - Definitions
;------------------------------------------------------------------------------
KICK_DOG        .macro                   ; Watchdog reset macro
                LDP      #00E0h
                SPLK     #05555h, WDKEY
                SPLK     #0AAAAh, WDKEY
                LDP      #0h
                .endm

;==============================================================================
; M A I N   C O D E  - starts here
;==============================================================================
                .text

START:          KICK_DOG
		    	SETC     INTM            ; Disable interrupts
                LDP      #DP_PF1
                SPLK     #0010h,SCSR1    ; Enable clock to CAN module
                SPLK     06Fh,WDCR       ; Disable Watchdog
                
                LDP      #225
                SPLK     #00C0H,MCRB     ; Configure CAN pins                
 
;**************************************************************************
;******************** CAN Initialization***********************************
;**************************************************************************

                LDP      #DP_CAN

                SPLK     #1011111111111111b,CANIMR     ; Enable all interrupts

;**************************************************************************
;***********           Configure CAN before writing              **********
;**************************************************************************
   
                LDP      #DP_CAN

                SPLK     #0000000000000000b,CANMDER 
;                         ||||||||||||||||
;                         FEDCBA9876543210
; bit 0-5                disable each mailbox

;**************************************************************************
;***********                Write CAN Mailboxes                  **********
;**************************************************************************

                LDP      #DP_CAN2

                SPLK     #0AAAAh,CANMSGID2H  
                SPLK     #0AA02h,CANMSGID2L

		    	SPLK     #0AAAAh,CANMSGID3H  
                SPLK     #0AA03h,CANMSGID3L

		    	SPLK     #0AAAAh,CANMSGID4H  
                SPLK     #0AA04h,CANMSGID4L

		    	SPLK     #0AAAAh,CANMSGID5H  
                SPLK     #0AA05h,CANMSGID5L

            	SPLK     #0000000000001000b,CANMSGCTRL2
				SPLK     #0000000000001000b,CANMSGCTRL3
				SPLK     #0000000000001000b,CANMSGCTRL4
				SPLK     #0000000000001000b,CANMSGCTRL5
;                         ||||||||||||||||
;                         FEDCBA9876543210

; bit 0-3                Data length code: 1000 = 8 bytes
; bit 4                  0: data frame 

                SPLK     #02020h,CANMBX2A   ; Message to be transmitted
                SPLK     #02121h,CANMBX2B   ; to the remote node
                SPLK     #02222h,CANMBX2C   
                SPLK     #02020h,CANMBX2D

		    	SPLK     #03030h,CANMBX3A   ; Message to be transmitted
                SPLK     #03131h,CANMBX3B   ; to the remote node
                SPLK     #03232h,CANMBX3C   
                SPLK     #03333h,CANMBX3D

		    	SPLK     #04040h,CANMBX4A   ; Message to be transmitted
                SPLK     #04141h,CANMBX4B   ; to the remote node
                SPLK     #04242h,CANMBX4C   
                SPLK     #04444h,CANMBX4D

		    	SPLK     #05050h,CANMBX5A   ; Message to be transmitted
                SPLK     #05151h,CANMBX5B   ; to the remote node
                SPLK     #05252h,CANMBX5C   
                SPLK     #05555h,CANMBX5D

;**************************************************************************
;***********    Set parameters after writing                    **********
;**************************************************************************

                LDP      #DP_CAN
               
                SPLK     #0000000000111100b,CANMDER 
;                         ||||||||||||||||
;                         FEDCBA9876543210

;**************************************************************************
;***********         CAN Registers configuration    ***********************
;**************************************************************************
                SPLK     #0001000000000000b,CANMCR 
;                         ||||||||||||||||
;                         FEDCBA9876543210

; bit 12                 Change configuration request

W_CCE           BIT      CANGSR,#0Bh     ; Wait for Change config Enable
                BCND     W_CCE,NTC

                SPLK     #0000000000000001b,CANBCR2
;                         ||||||||||||||||
;                         FEDCBA9876543210  

; bit 0-7                Baud rate prescaler 
; bit 8-15               Reserved

                SPLK     #0000010101010111b,CANBCR1
;                         ||||||||||||||||
;                         FEDCBA9876543210

; bit 0-2                TSEG1 
; bit 3-6                TSEG2
; bit 7                  Sample point setting (1: 3 times, 0: once)
; bit 8-A                Synchronization jump width 
; bit B                  Synchronization on falling edge 
; bit C-F                Reserved 

                SPLK     #0000000000000000b,CANMCR 
;                         ||||||||||||||||
;                         FEDCBA9876543210

; bit 12                 Change configuration request
;
W_NCCE          BIT      CANGSR,#0Bh     ; Wait for Change config disable
                BCND     W_NCCE,TC

LOOP            B        LOOP            ; Wait for Remote frames..

GISR1:   
GISR2:
GISR3:
GISR4:
GISR5:
GISR6:  
PHANTOM: RET

                .end

⌨️ 快捷键说明

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