📄 nrf24l01.lst
字号:
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 1
1 0000 ;*********************************************************************
2 0000 ; nRF Library
3 0000 ; Author : hongyuan lai
4 0000 ; EMail : yuan_lai@holtek.com.tw
5 0000 ; Date : 2006/09/26
6 0000 ;*********************************************************************
7 0000 #include ht82a851r.inc
8 0000 #include const.inc
9 0000 #include nRF24L01.inc
10 0000 #include macro.asm
11 0000 ;=====================================================================
12 0000 ; nRF24L01 function for ht82a851r
13 0000 ;=====================================================================
14 0000 ;
15 0000 ;
16 0000 ;
17 0000 ;
18 0000 ;
19 0000
20 0000
21 0000 extern TX_FIFO_STACK:byte
22 0000 extern RX_FIFO_STACK:byte
23 0000 extern TX_FIFO_ADDR:byte
24 0000 extern TX_FIFO_ADDR1:byte
25 0000 extern RX_FIFO_ADDR:byte
26 0000 extern RX_FIFO_ADDR1:byte
27 0000 extern ADC_FIFO_COUNTER:byte
28 0000 extern DAC_FIFO_COUNTER:byte
29 0000 extern TX_FIFO_ADDR_temp:byte
30 0000 extern RX_FIFO_ADDR_temp:byte
31 0000 extern RX_FIFO_Status:byte
32 0000 extern RX_key_code:byte
33 0000 extern channel_1:byte
34 0000 extern channel_2:byte
35 0000
36 0000 extern bFlag_TX_FIFO:bit
37 0000 extern bFlag_TX_FIFO_Select:bit
38 0000 extern bFlag_TX_FIFO_Select1:bit
39 0000 extern bFlag_RX_FIFO_Select:bit
40 0000 extern bFlag_RX_FIFO_Select1:bit
41 0000 extern bFlag_TX_Mode:bit
42 0000 extern bFlag_RX_Mode:bit
43 0000 extern bFlag_RX_SPI:bit
44 0000 extern bFlag_End_SPI_Operation:bit
45 0000
46 0000 extern temp_num:byte
47 0000 extern table_data:byte
48 0000 extern COMMAND_L:byte
49 0000 extern COMMAND_H:byte
50 0000 extern FIFO_TEMP:byte
51 0000 extern RF_number:byte
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 2
52 0000
53 0000 extern TX_ADDRESS_Select:byte
54 0000 extern RX_ADDRESS_Select:byte
55 0000 extern nRF_ADDR_value:byte
56 0000
57 0000 extern Delay_1:byte
58 0000 extern Delay_2:byte
59 0000 extern Delay_3:byte
60 0000
61 0000 ;;***************************************************************
62 0000 ; nRF24L01 initialize nRF24L01 program Start!!
63 0000 ; This program is initialized in 851R
64 0000 ;***************************************************************
65 0000 nRF_initial:
66 0000 ;--pin assignmant
67 0000 3693 clr pac.5
68 0001 3713 clr pac.6
69 0002 3793 clr pac.7
70 0003 3417 clr PCC.0
71 0004 3497 clr PCC.1
72 0005 3597 clr PCC.3 ;MCU CE pin O/P
73 0006 3117 set PCC.2 ;MCU IRQ pin I/P
74 0007 3596 clr NRF_CE ;At configuration Mode CE muse be low
75 0008 kmov PGA_CTRL,080h
76 000A 2000 R call MCU_16M
77 000B
78 000B ;--set PWR_UP and delay for 1.5ms into standby mode after into TX mode
79 000B kmov COMMAND_H,20H
80 000D kmov COMMAND_L,7AH
81 000F 3000 E set bFlag_End_SPI_Operation ;set 2 SPI operation
82 0010 2000 R call NRF_SPI_16bit ;send SPI Command
83 0011 2000 R call Delay_1500us ;delay 1.5ms for power down -> standby
84 0012 2000 R call Delay_1500us
85 0013
86 0013 ;--for clean data in fifo
87 0013 ClearFIFO:
88 0013 2000 R call FlushTXFIFO ;clear TX FIFO
89 0014 2000 R call FlushRXFIFO ;clear RX FIFO
90 0015 2000 R call Clear_NRF_IRQ ;clear IRQ
91 0016 3916 SNZ NRF_IRQ
92 0017 2800 R jmp ClearFIFO
93 0018 2000 R call Delay_1500us ;delay 1.518ms
94 0019
95 0019 ;--initial register identity
96 0019 kmov temp_num,12H ;initial 18 data (1 table)
97 001B 2000 R call NRF_TABLE_init ;initial nRF24L01
98 001C ;--initial TX/RX ADDR
99 001C 3000 E set TX_ADDRESS_Select.0 ;Write TX P0: E0 E0 E0 E0 E0 H
100 001D 2000 R call nRF_TX_ADDR_WRITE
101 001E 3400 E clr TX_ADDRESS_Select.0
102 001F
103 001F kmov RX_ADDRESS_Select,03Fh
104 0021 $1:
105 0021 2000 R call nRF_RX_ADDR_WRITE
106 0022 0700 E mov a,RX_ADDRESS_Select
107 0023 0C00 xor a,00h
108 0024 390A snz z
109 0025 2800 R jmp $1
110 0026
111 0026 kmov RX_ADDRESS_Select,07Fh
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 3
112 0028 $2:
113 0028 2000 R call nRF_RX_ADDR_READ
114 0029 0700 E mov a,RX_ADDRESS_Select
115 002A 0C00 xor a,00h
116 002B 390A snz z
117 002C 2800 R jmp $2
118 002D ;--variable define
119 002D kmov TX_FIFO_ADDR,(OFFSET TX_FIFO_STACK)
120 002F 0700 E mov A,TX_FIFO_ADDR
121 0030 0080 E mov TX_FIFO_ADDR_temp,A
122 0031 0B20 add A,20H
123 0032 0080 E mov TX_FIFO_ADDR1,A
124 0033
125 0033 kmov RX_FIFO_ADDR,(OFFSET RX_FIFO_STACK)
126 0035 0700 E mov A,RX_FIFO_ADDR
127 0036 0080 E mov RX_FIFO_ADDR_temp,A
128 0037 0B20 ADD A,20H
129 0038 0080 E mov RX_FIFO_ADDR1,A
130 0039
131 0039 kmov ADC_FIFO_COUNTER,02h
132 003B kmov DAC_FIFO_COUNTER,02h
133 003D 3400 E clr bFlag_TX_FIFO_Select
134 003E 3400 E clr bFlag_TX_FIFO_Select1
135 003F 3400 E clr bFlag_RX_FIFO_Select
136 0040 3000 E set bFlag_RX_FIFO_Select1
137 0041 3400 E clr bFlag_RX_SPI
138 0042
139 0042 kmov channel_1,15h
140 0044 kmov channel_2,1fh
141 0046 kmov RF_number,channel_1
142 0048 2000 R call RF_Channel_set
143 0049
144 0049 2000 R call Delay_1500us
145 004A 2000 R call Delay_1500us ;delay 1.518ms
146 004B 0003 ret
147 004C
148 004C
149 004C ;***************************************************************
150 004C ; nRF24L01 TX program
151 004C ;***************************************************************
152 004C nRF_TX_Transmit:
153 004C 3C00 E sz bFlag_TX_FIFO_Select
154 004D 2800 R jmp TX_DATA_CONFIG1
155 004E 2800 R jmp TX_DATA_CONFIG2
156 004F
157 004F TX_DATA_CONFIG1:
158 004F 3C00 E sz bFlag_TX_FIFO_Select1
159 0050 2800 R jmp TX_DATA_CONFIG2
160 0051
161 0051 kmov MP1,TX_FIFO_ADDR
162 0053 2000 R call TX_Payload
163 0054 3400 E clr bFlag_TX_FIFO_Select ;switch to RAM2
164 0055
165 0055 2800 R jmp TX_DATA_CONFIG3
166 0056 TX_DATA_CONFIG2:
167 0056 3800 E snz bFlag_TX_FIFO_Select1
168 0057 2800 R jmp TX_DATA_CONFIG1
169 0058
170 0058 kmov MP1,TX_FIFO_ADDR1
171 005A 2000 R call TX_Payload
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 4
172 005B 3000 E set bFlag_TX_FIFO_Select ;switch to RAM1
173 005C
174 005C TX_DATA_CONFIG3:
175 005C ;call TX_reuse_pl
176 005C ;call Pluse_CE_to_send
177 005C ;call Clear_NRF_TX_IRQ
178 005C 0003 ret
179 005D
180 005D
181 005D ;***************************************************************
182 005D ; nRF24L01 RX program
183 005D ;***************************************************************
184 005D nRF_RX_Receive_IRQ:
185 005D 3D16 sz NRF_IRQ ;data receive by IRQ=low
186 005E 2800 R jmp $1 ;data loss by IRQ=high
187 005F
188 005F 3C00 E sz bFlag_RX_SPI ;
189 0060 2800 R jmp $1
190 0061 3000 E set bFlag_RX_SPI
191 0062 0003 ret
192 0063 $1:
193 0063 3400 E clr bFlag_RX_SPI
194 0064 0003 ret
195 0065
196 0065 nRF_RX_Receive:
197 0065 ;SZ NRF_IRQ ;IRQ = low active
198 0065 ;ret
199 0065 3800 E snz bFlag_RX_SPI
200 0066 2800 R jmp RX_DATA_CONFIG5
201 0067
202 0067 3292 set pa5
203 0068 3C00 E sz bFlag_RX_FIFO_Select
204 0069 2800 R jmp RX_DATA_CONFIG1
205 006A 2800 R jmp RX_DATA_CONFIG2
206 006B
207 006B ;------------- FIFO Stack 1 ----------------
208 006B RX_DATA_CONFIG1:
209 006B 3C00 E sz bFlag_RX_FIFO_Select1
210 006C 2800 R jmp RX_DATA_CONFIG2
211 006D
212 006D 0700 E mov A,RX_FIFO_ADDR
213 006E 0083 mov MP1,A
214 006F 2000 R call RX_Payload
215 0070 3400 E clr bFlag_RX_FIFO_Select ;switch to RAM2
216 0071
217 0071 2800 R jmp RX_DATA_CONFIG3
218 0072
219 0072 ;------------- FIFO Stack 0 ----------------
220 0072 RX_DATA_CONFIG2:
221 0072 3800 E snz bFlag_RX_FIFO_Select1
222 0073 2800 R jmp RX_DATA_CONFIG1
223 0074
224 0074 0700 E mov A,RX_FIFO_ADDR1
225 0075 0083 mov MP1,A
226 0076 2000 R call RX_Payload
227 0077 3000 E set bFlag_RX_FIFO_Select ;switch to RAM1
228 0078
229 0078 RX_DATA_CONFIG3:
230 0078 2000 R call Clear_NRF_RX_IRQ
231 0079 3692 clr pa5
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 5
232 007A 0003 ret
233 007B
234 007B RX_DATA_CONFIG5:
235 007B 3312 set pa6
236 007C 2000 R call FlushRXFIFO
237 007D 2000 R call Clear_NRF_RX_IRQ
238 007E 3712 clr pa6
239 007F 0003 ret
240 0080
241 0080 ;***************************************************************
242 0080 ; nRF24L01 TX/RX mode switch program
243 0080 ;***************************************************************
244 0080 TX_RX_Switch:
245 0080 3C00 E sz bFlag_TX_Mode
246 0081 2800 R jmp $2
247 0082 3C00 E sz bFlag_RX_Mode
248 0083 2800 R jmp $1
249 0084 2800 R jmp $3
250 0085
251 0085 $1:
252 0085 3196 set NRF_CE
253 0086 3400 E clr bFlag_RX_Mode
254 0087 2000 R call RX_MODE
255 0088 2800 R jmp $3
256 0089 $2:
257 0089 3596 clr NRF_CE
258 008A 3400 E clr bFlag_TX_Mode
259 008B 2000 R call TX_MODE
260 008C $3:
261 008C
262 008C 0003 ret
263 008D
264 008D TX_mode_set:
265 008D 3596 clr NRF_CE
266 008E 2000 R call TX_MODE
267 008F 0003 ret
268 0090
269 0090 RX_mode_set:
270 0090 2000 R call RX_MODE
271 0091 3196 set NRF_CE
272 0092 0003 ret
273 0093
274 0093
275 0093 ;***************************************************************
276 0093 ; nRF24L01 play/rec int function
277 0093 ;***************************************************************
278 0093 nRF_int:
279 0093 kmov BP,001h ;switch to RAM Bank1
280 0095
281 0095 ;------- RAM to USB (rec)
282 0095 0700 E mov a,RX_FIFO_ADDR_temp
283 0096 0300 E add a,ADC_FIFO_COUNTER
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -