📄 spifram.lst
字号:
SPIFRAM PAGE 1
1 ;********************************************************************
2 ;
3 ; Author : ADI - Apps www.analog.com/MicroConverter
4 ;
5 ; Date : April '01
6 ;
7 ; File : SPIfram.asm
8 ;
9 ; Hardware : ADuC814
10 ;
11 ; Description : sends sample values via SPI to FRAM
12 ;********************************************************************
13
14 $MOD814
00B5 15 SS EQU P3.5 ; P3.5 drives slave device's SS pin
16
---- 17 CSEG
18
0050 19 ORG 0050H ; locate code above interrupts
20
0050 75CBFF 21 MOV RCAP2H,#0FFh ; config UART for 9600 baud
0053 75CAF9 22 MOV RCAP2L,#-7 ;
0056 75CDFF 23 MOV TH2,#0FFh
0059 75CCF9 24 MOV TL2,#-7
005C 759852 25 MOV SCON,#52h
005F 75C834 26 MOV T2CON,#34h
27
28
0062 D2B5 29 setb ss
0064 759C01 30 mov cfg814,#01h
0067 75F831 31 mov SPICON,#031H
006A C2B5 32 CLR SS ; Set slave select low
006C 7406 33 MOV A,#00000110B ; write enable
006E F5F7 34 MOV SPIDAT,A ; trigger data transfer
0070 30FFFD 35 JNB ISPI,$
0073 C2FF 36 CLR ISPI
0075 D2B5 37 setb ss ; Complete transmission of op-code
0077 00 38 NOP
0078 00 39 NOP
0079 00 40 NOP
41
007A C2B5 42 clr ss ;
007C 7402 43 MOV A,#00000010b ; write data
007E F5F7 44 MOV SPIDAT,A ; trigger data transfer
0080 30FFFD 45 JNB ISPI,$
0083 C2FF 46 CLR ISPI
47
0085 7400 48 MOV A,#00h
0087 F5F7 49 MOV SPIDAT,A ; trigger data transfer
0089 30FFFD 50 JNB ISPI,$
008C C2FF 51 CLR ISPI
52
008E 7400 53 MOV A,#00h ; start at address 0000h
0090 F5F7 54 MOV SPIDAT,A ; trigger data transfer
0092 30FFFD 55 JNB ISPI,$
0095 C2FF 56 CLR ISPI
57
0097 7800 58 MOV R0,#00H ; clear R0
SPIFRAM PAGE 2
59
0099 E8 60 loop: MOV A,R0 ; send test value
009A F5F7 61 MOV SPIDAT,A ; trigger data transfer
009C 30FFFD 62 JNB ISPI,$
009F C2FF 63 CLR ISPI
00A1 08 64 INC R0
00A2 B814F4 65 CJNE R0,#20,loop ; Loop till 20 values sent
66
67
00A5 D2B5 68 SETB SS ; finish write sequence
69
00A7 00 70 NOP
00A8 00 71 NOP
00A9 00 72 NOP
73
00AA C2B5 74 CLR SS
00AC 7403 75 MOV A,#00000011b ; READ data
00AE F5F7 76 MOV SPIDAT,A ; trigger data transfer
00B0 30FFFD 77 JNB ISPI,$
00B3 C2FF 78 CLR ISPI
79
00B5 7400 80 MOV A,#00h
00B7 F5F7 81 MOV SPIDAT,A ; trigger data transfer
00B9 30FFFD 82 JNB ISPI,$
00BC C2FF 83 CLR ISPI
84
00BE 7400 85 MOV A,#00h ; start at address 0000h
00C0 F5F7 86 MOV SPIDAT,A ; trigger data transfer
00C2 30FFFD 87 JNB ISPI,$
00C5 C2FF 88 CLR ISPI
89
00C7 7400 90 loop2: MOV A,#00h ; generate clocks for reception
00C9 F5F7 91 MOV SPIDAT,A
00CB 30FFFD 92 JNB ISPI,$
00CE C2FF 93 CLR ISPI
94
00D0 E5F7 95 mov A,SPIDAT
00D2 1200FA 96 CALL SENDVAL
00D5 B413EF 97 CJNE A,#19,loop2
00D8 80FE 98 exit: jmp $
99
=1 100 $INCLUDE(UARTIO.ASM)
=1 101 ;********************************************************************
=1 102 ;
=1 103 ; Author : ADI - Apps www.analog.com/MicroConverter
=1 104 ;
=1 105 ; Date : 12 October 1999
=1 106 ;
=1 107 ; File : UARTIO.hex
=1 108 ;
=1 109 ; Hardware : any 8051 based microcontroller or MicroConverter
=1 110 ;
=1 111 ; Description : standard UART I/O subroutines. total size of this
=1 112 ; code when assembled is 155 bytes. routines for use
=1 113 ; external to this file are:
=1 114 ;
=1 115 ; SENDSTRING - sends a string of characters
=1 116 ; SENDCHAR - sends a single character
SPIFRAM PAGE 3
=1 117 ; SENDVAL - sends a byte as 2 ASCII characters
=1 118 ; HEX2ASCII - converts from HEX to ASCII
=1 119 ; ASCII2HEX - converts from ASCII to HEX
=1 120 ; GETCHAR - gets a single character
=1 121 ; GETVAL - gets a byte as 2 ASCII characters
=1 122 ;
=1 123 ;********************************************************************
=1 124
=1 125 ;____________________________________________________________________
=1 126 ; SENDSTRING
=1 127
00DA =1 128 SENDSTRING: ; sends ASCII string to UART starting at location
=1 129 ; DPTR and ending with a null (0) value
=1 130
00DA C0E0 =1 131 PUSH ACC
00DC C0F0 =1 132 PUSH B
00DE E4 =1 133 CLR A
00DF F5F0 =1 134 MOV B,A
00E1 E5F0 =1 135 IO0010: MOV A,B
00E3 05F0 =1 136 INC B
00E5 93 =1 137 MOVC A,@A+DPTR
00E6 6005 =1 138 JZ IO0020
00E8 1200F2 =1 139 CALL SENDCHAR
00EB 80F4 =1 140 JMP IO0010
00ED D0F0 =1 141 IO0020: POP B
00EF D0E0 =1 142 POP ACC
=1 143
00F1 22 =1 144 RET
=1 145
=1 146 ;____________________________________________________________________
=1 147 ; SENDCHAR
=1 148
00F2 =1 149 SENDCHAR: ; sends ASCII value contained in A to UART
=1 150
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -