📄 spifram.asm
字号:
;********************************************************************
;
; Author : ADI - Apps www.analog.com/MicroConverter
;
; Date : April '01
;
; File : SPIfram.asm
;
; Hardware : ADuC814
;
; Description : sends sample values via SPI to FRAM
;********************************************************************
$MOD814
SS EQU P3.5 ; P3.5 drives slave device's SS pin
CSEG
ORG 0050H ; locate code above interrupts
MOV RCAP2H,#0FFh ; config UART for 9600 baud
MOV RCAP2L,#-7 ;
MOV TH2,#0FFh
MOV TL2,#-7
MOV SCON,#52h
MOV T2CON,#34h
setb ss
mov cfg814,#01h
mov SPICON,#031H
CLR SS ; Set slave select low
MOV A,#00000110B ; write enable
MOV SPIDAT,A ; trigger data transfer
JNB ISPI,$
CLR ISPI
setb ss ; Complete transmission of op-code
NOP
NOP
NOP
clr ss ;
MOV A,#00000010b ; write data
MOV SPIDAT,A ; trigger data transfer
JNB ISPI,$
CLR ISPI
MOV A,#00h
MOV SPIDAT,A ; trigger data transfer
JNB ISPI,$
CLR ISPI
MOV A,#00h ; start at address 0000h
MOV SPIDAT,A ; trigger data transfer
JNB ISPI,$
CLR ISPI
MOV R0,#00H ; clear R0
loop: MOV A,R0 ; send test value
MOV SPIDAT,A ; trigger data transfer
JNB ISPI,$
CLR ISPI
INC R0
CJNE R0,#20,loop ; Loop till 20 values sent
SETB SS ; finish write sequence
NOP
NOP
NOP
CLR SS
MOV A,#00000011b ; READ data
MOV SPIDAT,A ; trigger data transfer
JNB ISPI,$
CLR ISPI
MOV A,#00h
MOV SPIDAT,A ; trigger data transfer
JNB ISPI,$
CLR ISPI
MOV A,#00h ; start at address 0000h
MOV SPIDAT,A ; trigger data transfer
JNB ISPI,$
CLR ISPI
loop2: MOV A,#00h ; generate clocks for reception
MOV SPIDAT,A
JNB ISPI,$
CLR ISPI
mov A,SPIDAT
CALL SENDVAL
CJNE A,#19,loop2
exit: jmp $
$INCLUDE(UARTIO.ASM)
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -