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

📄 spi接口ad转换器代码.asm

📁 SPI接口AD转换器代码 本代码实现了对串行(SPI)接口的软件模拟 这是在一个项目中要用到SPI接口的器件
💻 ASM
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;SPI接口AD转换器代码
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CS      EQU       p1.2
CLK     EQU       p1.3
DIN     EQU       p1.0
DOUT    EQU       P1.1
;BUSY    EQU       P
MAIN:
     MOV    SP,#0A0H
     SETB    CS
     CLR     CLK
     NOP
     MOV   22H,#00000000B
     MOV   23H,#10001100B
     ACALL CONVERSION
     ACALL CLEAR
     MOV   R0,#24H
     MOV   R1,#36H
     LOOP1:
     ACALL CONVERSION
     MOV   @R0,20H
     INC   R0
     MOV   @R0,21H
     INC   R0
     DJNZ  R1,LOOP1
     AJMP  MAIN

CLEAR:
      MOV     R0,#24H
      MOV     R1,#06CH
LOOP_C:
      CLR    A
      MOV    @R0,A
      INC    R0
      DJNZ   R1,LOOP_C
      RET
   
;*********************************************
;DOUT: 21H,20H(MSB---LSB)
;DIN:  23H,22H(MSB---LSB)
;*********************************************

CONVERSION:

     CLR     CS
     NOP

     MOV     C,1FH      ;15(MSB)
     MOV     DIN,C
     SETB    CLK
     NOP
     MOV     C,DOUT
     MOV     0FH,C
     CLR     CLK

     MOV     C,1EH      ;14
     MOV     DIN,C
     SETB    CLK
     NOP
     MOV     C,DOUT
     MOV     0EH,C
     CLR     CLK

     MOV     C,1DH      ;13
     MOV     DIN,C
     SETB    CLK
     NOP
     MOV     C,DOUT
     MOV     0DH,C
     CLR     CLK

     MOV     C,1CH      ;12
     MOV     DIN,C
     SETB    CLK
     NOP
     MOV     C,DOUT
     MOV     0CH,C
     CLR     CLK

     MOV     C,1BH      ;11
     MOV     DIN,C
     SETB    CLK
     NOP
     MOV     C,DOUT
     MOV     0BH,C
     CLR     CLK

     MOV     C,1AH      ;10
     MOV     DIN,C
     SETB    CLK
     NOP
     MOV     C,DOUT
     MOV     0AH,C
     CLR     CLK

     MOV     C,19H      ;9
     MOV     DIN,C
     SETB    CLK
     NOP
     MOV     C,DOUT
     MOV     09H,C
     CLR     CLK

     MOV     C,18H      ;8
     MOV     DIN,C
     SETB    CLK
     NOP
     MOV     C,DOUT
     MOV     08H,C
     CLR     CLK
     NOP
     NOP
     NOP
     NOP
     NOP
     NOP
     MOV     C,17H      ;7
     MOV     DIN,C
     SETB    CLK
     NOP
     MOV     C,DOUT
     MOV     07H,C
     CLR     CLK

     MOV     C,16H      ;6
     MOV     DIN,C
     SETB    CLK
     NOP
     MOV     C,DOUT
     MOV     06H,C
     CLR     CLK

     MOV     C,15H      ;5
     MOV     DIN,C
     SETB    CLK
     NOP
     MOV     C,DOUT
     MOV     05H,C
     CLR     CLK

     MOV     C,14H      ;4
     MOV     DIN,C
     SETB    CLK
     NOP
     MOV     C,DOUT
     MOV     04H,C
     CLR     CLK

     MOV     C,13H      ;3
     MOV     DIN,C
     SETB    CLK
     NOP
     MOV     C,DOUT
     MOV     03H,C
     CLR     CLK

     MOV     C,12H      ;2
     MOV     DIN,C
     SETB    CLK
     NOP
     MOV     C,DOUT
     MOV     02H,C
     CLR     CLK

     MOV     C,11H      ;1
     MOV     DIN,C
     SETB    CLK
     NOP
     MOV     C,DOUT
     MOV     01H,C
     CLR     CLK

     MOV     C,10H      ;0(LSB)
     MOV     DIN,C
     SETB    CLK
     NOP
     MOV     C,DOUT
     MOV     00H,C
     CLR     CLK

     SETB    CS
     NOP
     ACALL   DELAY1
     ;JNB     BUSY,$
     RET

DELAY1:
        MOV    R7      ,#01H         ;0AH*0.1S=1S
LOOP_A_A:
        MOV    R6      ,#064H
LOOP_B_A:
        MOV    R5      ,#0FAH
        DJNZ   R5      ,$            ;延时1ms
        DJNZ   R6      ,LOOP_B_A      ;延时(R6)*1ms
        DJNZ   R7      ,LOOP_A_A
        RET
     END

⌨️ 快捷键说明

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