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