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

📄 isd176011.asm

📁 isd1760语音芯片
💻 ASM
字号:
SPI_MISO	  EQU	    P3.0
SPI_MOSI	  EQU	    P3.1
SPI_SS            EQU       P1.0
SPI_SCLK          EQU       P1.1
SPI_SWITCH        EQU       P1.2
ISD_COM           EQU       23H
DATT               EQU       24H
APCH              EQU       25H
APCL              EQU       26H
SR0_L             EQU       27H
SR0_H             EQU       28H
SR1               EQU       29H
ID                EQU       55H
COM_L             EQU       56H
COM_H             EQU       57H
;DATT1              EQU       58H
;DATT2              EQU       59H
Last_L            EQU       2AH
Last_H            EQU       2BH
;********************************************************
ORG           0000H                              ;????????
LJMP          MAIN                                ;????
ORG           0008H                               ;??????
;********************************************************
MAIN:

        MOV      SP,       #60H                   ;????????
        ACALL    ISD_INIT
        ACALL    ISD_DEVID

        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOV      C        ,     SPI_SWITCH        ;通过读入P1.2的值判断是录音还是放音。
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;JNC       SET_REC

        MOV      COM_L    ,  #062H
        MOV      COM_H    ,  #01H
        MOV      Last_L   ,  #069H
        MOV      Last_H   ,  #01H
        LCALL    SET_PLAY

        MOV      COM_L    ,  #028H
        MOV      COM_H    ,  #01H
        MOV      Last_L   ,  #33H
        MOV      Last_H   ,  #01H
        LCALL    SET_PLAY
        SJMP     $



;*********************调用播放程序****************************

;*************************************************************
SET_PLAY:

         LCALL    clrint
         CLR      SPI_SS
        ;LCALL    Rdstatus01
         NOP
         NOP
         MOV      ISD_COM  ,    #80H
         LCALL    ISD_Senddata
         MOV      ISD_COM  ,    #00H
         LCALL    ISD_Senddata
         MOV      ISD_COM  ,    COM_L               ;开始地址
         LCALL    ISD_Senddata
         MOV      ISD_COM  ,    COM_H
         LCALL    ISD_Senddata
         MOV      ISD_COM  ,    Last_L               ;结束地址
         LCALL    ISD_Senddata
         MOV      ISD_COM  ,    Last_H
         LCALL    ISD_Senddata
         MOV      ISD_COM  ,    #00H
         LCALL    ISD_Senddata
         ;LCALL    Rdstatus01
         ;LCALL    DELAY10ms
         SETB      SPI_SS

         LCALL    Rdstatus01
         ;LCALL    clrint
         RET
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;*************************************************************

;*************************************************************
;ISD_INIT初始化
 ISD_INIT:
          LCALL    ISD_Reset
          LCALL    ISD_PU
           LCALL    Rdstatus
          ;LCALL    Rdstatus01
          LCALL    clrint
          LCALL    ISD_WR_APC2
          LCALL    RD_APC
          RET
;************************************************************
;ISD_Senddata发送数据
ISD_Senddata:
                MOV   P3 ,  #0FFH
                SETB  SPI_SCLK
                MOV  R0 , #08H
                MOV  A  , ISD_COM
                MOV  DATT, A
                ;MOV  DATT1,#00H
                NOP
                NOP
       LOOPP1:   CLR  SPI_SCLK
                NOP
                NOP
                RRC  A
                MOV  SPI_MOSI , C
                NOP
                NOP
                NOP
                NOP
                NOP
                NOP
                MOV  C  ,  SPI_MISO
                NOP
                NOP

        LOOPP2:
                SETB  SPI_SCLK
                NOP
                NOP
                DJNZ R0 , LOOPP1
                RRC A
                MOV  DATT, A

                SETB SPI_MOSI
                SETB  SPI_SCLK
                RET
;************************************************************
;RD_APC
RD_APC:
       CLR      SPI_SS
       NOP
       NOP
       MOV      ISD_COM  ,    #44H
       LCALL    ISD_Senddata
       MOV      ISD_COM  ,    #00H
       LCALL    ISD_Senddata
       MOV      ISD_COM  ,    #00H
       LCALL    ISD_Senddata
       MOV      ISD_COM  ,    #00H
       LCALL    ISD_Senddata
       SETB     SPI_SS
       LCALL    DELAY10ms
       CLR      SPI_SS
       NOP
       NOP
       MOV      ISD_COM  ,    #44H
       LCALL    ISD_Senddata
       MOV      SR0_L   ,    DATT
       ;
       MOV      ISD_COM  ,    #00H
       LCALL    ISD_Senddata
       MOV      SR0_H   ,    DATT
       ;

       MOV      ISD_COM  ,    #00H
       LCALL    ISD_Senddata
       MOV      APCL     ,    DATT
       ;

       MOV      ISD_COM  ,    #00H
       LCALL    ISD_Senddata
       MOV      APCH     ,    DATT
       SETB     SPI_SS
       LCALL    DELAY10ms
       RET
;***********************************************************
; ISD_WR_NVCFG永久写入寄存器
ISD_WR_NVCFG:
       CLR      SPI_SS
       NOP
       NOP
       MOV      ISD_COM  ,    #46H
       LCALL    ISD_Senddata
       MOV      ISD_COM  ,    #00H
       LCALL    ISD_Senddata
       SETB     SPI_SS
       LCALL    DELAY10ms
       RET
;***********************************************************
;ISD_WR_APC2
ISD_WR_APC2:
       CLR      SPI_SS
       NOP
       NOP
       MOV      ISD_COM  ,    #65H
       LCALL    ISD_Senddata
       MOV      ISD_COM  ,    #0B8H
       LCALL    ISD_Senddata
       MOV      ISD_COM  ,    #0CH
       LCALL    ISD_Senddata
       SETB     SPI_SS
       LCALL    DELAY10ms
       LCALL    ISD_WR_NVCFG
       RET
;***********************************************************
; clrint
clrint:
       CLR      SPI_SS
       NOP
       NOP
       MOV      ISD_COM  ,    #04H
       LCALL    ISD_Senddata
       MOV      ISD_COM  ,    #00H
       LCALL    ISD_Senddata
       SETB     SPI_SS
       LCALL    DELAY10ms
       RET
;***********************************************************
;ISD_DEVID
ISD_DEVID:
        CLR      SPI_SS
        NOP
        NOP
        MOV      ISD_COM  ,    #09H
        LCALL    ISD_Senddata
        MOV      ISD_COM  ,    #00H
        LCALL    ISD_Senddata
        MOV      ISD_COM  ,    #00H
        LCALL    ISD_Senddata
        SETB     SPI_SS
        LCALL    DELAY10ms
        CLR      SPI_SS
        NOP
        NOP
        MOV      ISD_COM  ,    #09H
        LCALL    ISD_Senddata
        MOV      SR0_L    ,    DATT
        ;
        MOV      ISD_COM  ,    #00H
        LCALL    ISD_Senddata
        MOV      SR0_H    ,    DATT
        ;
        MOV      ISD_COM  ,    #00H
        LCALL    ISD_Senddata
        MOV      ID    ,    DATT
        SETB     SPI_SS
        LCALL    DELAY10ms
        RET
        ;;;;;;;;;;;;;;;;;;
;***********************************************************
;Rdstatus
Rdstatus:

        CLR      SPI_SS
        NOP
        NOP
        MOV      ISD_COM  ,    #05H
        LCALL    ISD_Senddata
        MOV      ISD_COM  ,    #00H
        LCALL    ISD_Senddata
        MOV      ISD_COM  ,    #00H
        LCALL    ISD_Senddata
       ; LCALL    DELAY10ms
        NOP
        NOP
        MOV      ISD_COM  ,    #05H
        LCALL    ISD_Senddata
        MOV      SR0_L    ,    DATT
        ;
        MOV      ISD_COM  ,    #00H
        LCALL    ISD_Senddata
        MOV      SR0_H    ,    DATT
        ;
        MOV      ISD_COM  ,    #00H
        LCALL    ISD_Senddata
        MOV      SR1    ,    DATT

        SETB     SPI_SS
        ;LCALL    DELAY10ms
        RET
;**********************************************************
 Rd_PLAY_PTR:
        CLR      SPI_SS
        NOP
        NOP
        MOV      ISD_COM  ,    #06H
        LCALL    ISD_Senddata
        MOV      ISD_COM  ,    #00H
        LCALL    ISD_Senddata
        MOV      ISD_COM  ,    #00H
        LCALL    ISD_Senddata
        MOV      ISD_COM  ,    #00H
        LCALL    ISD_Senddata
        LCALL    DELAY10ms
        NOP
        NOP
        MOV      ISD_COM  ,    #06H
        LCALL    ISD_Senddata
        MOV      SR0_L    ,    DATT
        ;
        MOV      ISD_COM  ,    #00H
        LCALL    ISD_Senddata
        MOV      SR0_H    ,    DATT
        ;
        MOV      ISD_COM  ,    #00H
        LCALL    ISD_Senddata
        MOV      COM_L    ,    DATT
        ;
        MOV      ISD_COM  ,    #00H
        LCALL    ISD_Senddata
        MOV      COM_H    ,    DATT
        SETB     SPI_SS
        ;LCALL    Deal_Data
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        LCALL    clrint
        RET
;***********************************************************
;ISD_PU
ISD_PU:

        CLR      SPI_SS
        NOP
        NOP
        MOV      ISD_COM  ,    #01H
        LCALL    ISD_Senddata
        MOV      ISD_COM  ,    #00H
        LCALL    ISD_Senddata
        SETB     SPI_SS
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        RET
;**********************************************************
;STOP
ISD_STOP:

        CLR      SPI_SS
        NOP
        NOP
        MOV      ISD_COM  ,    #02H
        LCALL    ISD_Senddata
        MOV      ISD_COM  ,    #00H
        LCALL    ISD_Senddata
        SETB     SPI_SS
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        RET
;**********************************************************
;ISD_Reset
ISD_Reset:

        CLR      SPI_SS
        NOP
        NOP
        MOV      ISD_COM  ,    #03H
        LCALL    ISD_Senddata
        MOV      ISD_COM  ,    #00H
        LCALL    ISD_Senddata
        SETB     SPI_SS
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        RET
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 Erase_all:
        CLR      SPI_SS
        NOP
        NOP
        MOV      ISD_COM  ,    #43H
        LCALL    ISD_Senddata
        MOV      ISD_COM  ,    #00H
        LCALL    ISD_Senddata
        SETB     SPI_SS
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        LCALL    DELAY10ms
        RET
;*********************************************************
;**********************************************************
;Rdstatus01
Rdstatus01:
        LCALL    Rdstatus
        MOV      A ,     SR0_L
        JNB       ACC.3   , Rdstatus01

        RET
;**********************************************************
Rdstatus02:
        LCALL    Rdstatus
        ;MOV      A ,     SR0_L
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;RRC     A
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;JC       Rdstatus01
        ;JNB       ACC.0 ,     Rdstatus02
        MOV      A ,     SR1
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;RRC     A
        JNB      ACC.3  , Rdstatus02
        NOP
        RET
;**********************************************************
;延时

DELAY10ms:
   	MOV      R7,      #03H
DELAY111:
        MOV      R6,      #0FFH
DELAY222:
        NOP
        NOP
        DJNZ     R6,      DELAY222
  	DJNZ     R7,      DELAY111
  	RET
END

⌨️ 快捷键说明

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