?? isd176011.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 + -