can.asm

来自「80c196单片机的CAN初始化及收发程序」· 汇编 代码 · 共 150 行

ASM
150
字号
说明:
      
      SENDINT1——发送子程序
      RECEIVEINT1——接收子程序
      fstopr——初始化子程序
     CAN 地址范围:DF00H-DFFFH
     250
SENDINT1:
           NOP
           ld    bx,8840h
           cmp   bx,#005ah
           jne   datasend
           ld    bx,#11h
           shl   bx,#05h
           or    bx,#08h
           st    bx,sendid
           ld    bx,8844h
           st    bx,sendfa
           ld    bx,#00h
           st    bx,8840h
           lcall sendfun
           ljmp  sendout1
  datasend:LDB   BL,8940H
           CMPB  BL,#05AH
           JNE   SENDOUT1
           LD    BX,8914H
           LD    SENDFA,BX
           ADD   BX,#08H
           ST    BX,8914H
           LD    BX,8916H
           LD    SENDID,BX
           ADD   BX,#00100000B
           ST    BX,8916H
           LDB   CL,8942H
           INCB  CL
           STB   CL,8942H
           CMPB  CL,#01H
           JNE   NLIGHT1
           LDB   BL,#5AH
           STB   BL,050AH
   NLIGHT1:CMPB  CL,#08H
           JLE   SENDOUT2
           LDB   BL,#00H
           STB   BL,8940H
           LDB   BL,#00H
           STB   BL,050AH
           LJMP  SENDOUT1
  SENDOUT2:LCALL SENDFUN

  SENDOUT1:SUBB  CANINT,#02H
           LJMP  TESTOUT

RECEIVEINT1:
           NOP
           LDB   BH,0DF14H
           LDB   BL,0DF15H
           SHR   BX,#05H
           cmp   bx,#10h
           jne    mem11
           ld    bx,0df16h
           ldb   al,0301h
           andb  al,#1fh
           cmpb  al,bl
           jne   mem11
           st    bx,8842h
           ld    bx,0df18h
           st    bx,8844h
           ld    bx,#005ah
           st    bx,8840h
      mem11:cmp   bx,#12h
           jne   mem22
           ld    bx,0df16h
           ldb   al,0301h
           andb  al,#1fh
           cmpb  al,bl
           jne   mem22
           st    bx,8848h
           ld    bx,0df18h
           st    bx,884ah
           ld    bx,#005ah
           st    bx,8846h
      mem22:cmp  bx,#13h
           jne   mem33
           ld    bx,8846h
           cmp   bx,#005ah
           jne   mem33
           ld    dx,884ah
           ld    bx,0df16h
           st    bx,[dx]+
           st    bx,8850h
           ld    bx,0df18h
           st    bx,[dx]+
           st    bx,8852h
           ld    bx,0df1ah
           st    bx,[dx]+
           st    bx,8854h
           ld    bx,0df1ch
           st    bx,[dx]+
           st    bx,8856h
           ld    bx,#00h
           st    bx,8846h

     mem33:CMP   BX,#3EH
           JH    DATASTORE
           SUB   BX,#1EH
           ADD   BX,#8800H
           LDB   AL,0DF16H
           STB   AL,[BX]
           LJMP  RECEIVEOUT
 DATASTORE:SUB   BX,#65H
           SHL   BX,#03H
           ADD   BX,#8000H
           LD    DX,0DF16H
           ST    DX,[BX]+
           LD    DX,0DF18H
           ST    DX,[BX]+
           LD    DX,0DF1AH
           ST    DX,[BX]+
           LD    DX,0DF1CH
           ST    DX,[BX]
RECEIVEOUT:LDB   BL,#0CH
           STB   BL,0DF01H

           SUBB  CANINT,#01H
           LJMP  TESTOUT

RET

   fstopr:
                pushf
                push bx
          LDB     BL,#01H
          STB     BL,0df00H
          LDB     BL,#0F4H
          STB     BL,0df04H
          LDB     BL,#0FFH
          STB     BL,0df05H
          LDB     BL,#03H
          STB     BL,0df06H
          LDB     BL,#1cH
          STB     BL,0df07H
          LDB     BL,#0DAH
          STB     BL,0df08H
          ldb     bl,#07H
          stb     bl,0df1fH
          LDB     BL,#7EH
          STB     BL,0df00H
                 pop bx
                 popf
                 ret

⌨️ 快捷键说明

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