📄 spieerd.asm
字号:
;********************SPIEERD********************
;本程序实现从SPI类型EEPROM中读取多字节数据。
;入口参数:数据在EEPROM中的地址在SADRH:SADR中,目标RAM的首地址为DADR,字节数在W中。
;出口参数:相关数据已读取到指定RAM单元中。
;占用资源:W,STATUS,FSR,RB1,020H,021H,022H,023H,SSP模块,1重堆栈
;说明: 同步时钟频率为FOSC/64
IFNDEF SPIEERD1
#DEFINE SPIEERD1
CS EQU 1 ;EEPROM的CS端连到单片机的RB1
SPIEERD MOVWF CNT ;保存字节数
MOVF DADR,W
MOVWF FSR ;RAM首地址
BSF STATUS,RP0
MOVLW 11010111B
MOVWF TRISC ;SCK输出,SDO输出,SDI输入
MOVLW 0FDH
ANDWF TRISB,F ;RB1为输出
CLRF SSPSTAT ;清除SMP,CKE位
BCF PIE1,SSPIE ;SSP中断禁止
BCF STATUS,RP0
MOVLW 00110010B ;设置SSP控制方式:取FOSC/64,SPI主控,CKP=1
MOVWF SSPCON
BCF PIR1,SSPIF
BCF PORTB,CS
MOVLW 03H ;READ指令
MOVWF SSPBUF
BTFSS PIR1,SSPIF ;READ指令传送完毕?
GOTO $-1
BCF PIR1,SSPIF
MOVF SADRH,W ;数据地址高位
MOVWF SSPBUF
BTFSS PIR1,SSPIF ;地址高位传送完毕?
GOTO $-1
BCF PIR1,SSPIF
MOVF SADR,W
MOVWF SSPBUF
BTFSS PIR1,SSPIF ;地址低位传送完毕?
GOTO $-1
BCF PIR1,SSPIF
NEXT64 CLRW
MOVWF SSPBUF ;开始接收数据
BTFSS PIR1,SSPIF ;第一个数据接收完毕?
GOTO $-1
BCF PIR1,SSPIF
MOVF SSPBUF,W
MOVWF INDF
INCF FSR,F
DECFSZ CNT,F
GOTO NEXT64
BSF PORTB,CS
RETURN
ENDIF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -