⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mdfan.lst

📁 用24L01的2.4Ghz无线控制风扇的源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
  1013  000204             ;*****************************************************************
  1014  000204             ;Function:Rx_Mode
  1015  000204             ;Description:force the device go into Tx mode.
  1016  000204             ;input:none
  1017  000204             ;output:none
  1018  000204             ;*****************************************************************
  1019  000204             nRF24L01_Configure:
  1020  000204   43D5(1)  	bclr	PIN_SPI_CSN		;Set TX address device,to Writer
  1021  000205             	movmi	spi_data, #WRITE_REG+TX_ADDR
  1022  000205   2D30(1)  		MOV		A, #WRITE_REG+TX_ADDR
  1023  000206   1F10(1)  		MOV		spi_data,A
  1024  000207   C1AB(2)  	call	SPI_RW
  1025  000208             	movmi	spi_data, #TX_ADDR0_DEF
  1026  000208   2D40(1)  		MOV		A, #TX_ADDR0_DEF
  1027  000209   1F10(1)  		MOV		spi_data,A
  1028  00020A   C1AB(2)  	call	SPI_RW
  1029  00020B             	movmi	spi_data, #TX_ADDR1_DEF
  1030  00020B   2D50(1)  		MOV		A, #TX_ADDR1_DEF
  1031  00020C   1F10(1)  		MOV		spi_data,A
  1032  00020D   C1AB(2)  	call	SPI_RW
  1033  00020E             	movmi	spi_data, #TX_ADDR2_DEF
  1034  00020E   2D60(1)  		MOV		A, #TX_ADDR2_DEF
  1035  00020F   1F10(1)  		MOV		spi_data,A
  1036  000210   C1AB(2)  	call	SPI_RW
  1037  000211             	movmi	spi_data, #TX_ADDR3_DEF
  1038  000211   2D70(1)  		MOV		A, #TX_ADDR3_DEF
  1039  000212   1F10(1)  		MOV		spi_data,A
  1040  000213   C1AB(2)  	call	SPI_RW
  1041  000214             	movmi	spi_data, #TX_ADDR4_DEF
  1042  000214   2D80(1)  		MOV		A, #TX_ADDR4_DEF
  1043  000215   1F10(1)  		MOV		spi_data,A
  1044  000216   C1AB(2)  	call	SPI_RW
  1045  000217   4BD5(1)  	bset	PIN_SPI_CSN
  1046  000218             
  1047  000218   0000(1)  	nop
  1048  000219   0000(1)  	nop
  1049  00021A             
  1050  00021A   43D5(1)  	bclr	PIN_SPI_CSN		;Use the same address as Writer
  1051  00021B             	movmi	spi_data, #WRITE_REG+RX_ADDR_P0
  1052  00021B   2D2A(1)  		MOV		A, #WRITE_REG+RX_ADDR_P0
  1053  00021C   1F10(1)  		MOV		spi_data,A
  1054  00021D   C1AB(2)  	call	SPI_RW
  1055  00021E             	movmi	spi_data, #TX_ADDR0_DEF
  1056  00021E   2D40(1)  		MOV		A, #TX_ADDR0_DEF
  1057  00021F   1F10(1)  		MOV		spi_data,A
  1058  000220   C1AB(2)  	call	SPI_RW
  1059  000221             	movmi	spi_data, #TX_ADDR1_DEF
  1060  000221   2D50(1)  		MOV		A, #TX_ADDR1_DEF
  1061  000222   1F10(1)  		MOV		spi_data,A
  1062  000223   C1AB(2)  	call	SPI_RW
  1063  000224             	movmi	spi_data, #TX_ADDR2_DEF
  1064  000224   2D60(1)  		MOV		A, #TX_ADDR2_DEF
  1065  000225   1F10(1)  		MOV		spi_data,A
  1066  000226   C1AB(2)  	call	SPI_RW
  1067  000227             	movmi	spi_data, #TX_ADDR3_DEF
  1068  000227   2D70(1)  		MOV		A, #TX_ADDR3_DEF
  1069  000228   1F10(1)  		MOV		spi_data,A
  1070  000229   C1AB(2)  	call	SPI_RW
  1071  00022A             	movmi	spi_data, #TX_ADDR4_DEF
  1072  00022A   2D80(1)  		MOV		A, #TX_ADDR4_DEF
  1073  00022B   1F10(1)  		MOV		spi_data,A
  1074  00022C   C1AB(2)  	call	SPI_RW
  1075  00022D   4BD5(1)  	bset	PIN_SPI_CSN
  1076  00022E             
  1077  00022E   0000(1)  	nop
  1078  00022F   0000(1)  	nop
  1079  000230             
  1080  000230   43D5(1)  	bclr	PIN_SPI_CSN		;Use the same address on the RX device as the TX device
  1081  000231             	movmi	spi_data, #WRITE_REG+RX_ADDR_P1
  1082  000231   2D2B(1)  		MOV		A, #WRITE_REG+RX_ADDR_P1
  1083  000232   1F10(1)  		MOV		spi_data,A
  1084  000233   C1AB(2)  	call	SPI_RW
  1085  000234             	movmm	spi_data, local_access_code0
  1086  000234   1E08(1)  		MOV		A, local_access_code0
  1087  000235   1F10(1)  		MOV		spi_data,A
  1088  000236   C1AB(2)  	call	SPI_RW
  1089  000237             	movmm	spi_data, local_access_code1
  1090  000237   1E09(1)  		MOV		A, local_access_code1
  1091  000238   1F10(1)  		MOV		spi_data,A
  1092  000239   C1AB(2)  	call	SPI_RW
  1093  00023A             	movmm	spi_data, local_access_code2
  1094  00023A   1E0A(1)  		MOV		A, local_access_code2
  1095  00023B   1F10(1)  		MOV		spi_data,A
  1096  00023C   C1AB(2)  	call	SPI_RW
  1097  00023D             	movmi	spi_data, #RX_ADDR3_DEF
  1098  00023D   2D07(1)  		MOV		A, #RX_ADDR3_DEF
  1099  00023E   1F10(1)  		MOV		spi_data,A
  1100  00023F   C1AB(2)  	call	SPI_RW
  1101  000240             	movmi	spi_data, #RX_ADDR4_DEF
  1102  000240   2D08(1)  		MOV		A, #RX_ADDR4_DEF
  1103  000241   1F10(1)  		MOV		spi_data,A
  1104  000242   C1AB(2)  	call	SPI_RW
  1105  000243   4BD5(1)  	bset	PIN_SPI_CSN
  1106  000244             
  1107  000244             	movmi	spi_reg_addr, #WRITE_REG+EN_AA 
  1108  000244   2D21(1)  		MOV		A, #WRITE_REG+EN_AA
  1109  000245   1F12(1)  		MOV		spi_reg_addr,A
  1110  000246             	movmi	spi_value, #0x03  	;Enable Auto.Ack:Pipe0,Pipe1
  1111  000246   2D03(1)  		MOV		A, #0x03
  1112  000247   1F13(1)  		MOV		spi_value,A
  1113  000248   C1C8(2)  	call	SPI_Write_Reg
  1114  000249             	
  1115  000249             	movmi	spi_reg_addr, #WRITE_REG+EN_RXADDR
  1116  000249   2D22(1)  		MOV		A, #WRITE_REG+EN_RXADDR
  1117  00024A   1F12(1)  		MOV		spi_reg_addr,A
  1118  00024B             	movmi	spi_value, #0x03	;Enable Pipe0,Pipe1
  1119  00024B   2D03(1)  		MOV		A, #0x03
  1120  00024C   1F13(1)  		MOV		spi_value,A
  1121  00024D   C1C8(2)  	call	SPI_Write_Reg	
  1122  00024E             
  1123  00024E             	movmi	spi_reg_addr, #WRITE_REG+RF_CH
  1124  00024E   2D25(1)  		MOV		A, #WRITE_REG+RF_CH
  1125  00024F   1F12(1)  		MOV		spi_reg_addr,A
  1126  000250             	;movmi	spi_value, #TX_CH_DEF	;Select default RF channel 
  1127  000250             	movmm	spi_value, channel	;select RF channel
  1128  000250   1E0F(1)  		MOV		A, channel
  1129  000251   1F13(1)  		MOV		spi_value,A
  1130  000252   C1C8(2)  	call	SPI_Write_Reg
  1131  000253             
  1132  000253             	movmi	spi_reg_addr, #0x20+0x11	;WRITE_REG+RX_PW_P0
  1133  000253   2D31(1)  		MOV		A, #0x20+0x11
  1134  000254   1F12(1)  		MOV		spi_reg_addr,A
  1135  000255             	movmi	spi_value, #TX_PLOAD_WIDTH	;RX payload width 4
  1136  000255   2D04(1)  		MOV		A, #TX_PLOAD_WIDTH
  1137  000256   1F13(1)  		MOV		spi_value,A
  1138  000257   C1C8(2)  	call	SPI_Write_Reg
  1139  000258             
  1140  000258             	movmi	spi_reg_addr, #WRITE_REG+RX_PW_P1
  1141  000258   2D32(1)  		MOV		A, #WRITE_REG+RX_PW_P1
  1142  000259   1F12(1)  		MOV		spi_reg_addr,A
  1143  00025A             	movmi	spi_value, #RX_PLOAD_WIDTH	;RX payload width 1
  1144  00025A   2D01(1)  		MOV		A, #RX_PLOAD_WIDTH
  1145  00025B   1F13(1)  		MOV		spi_value,A
  1146  00025C   C1C8(2)  	call	SPI_Write_Reg
  1147  00025D             
  1148  00025D             	movmi	spi_reg_addr, #WRITE_REG+RF_SETUP
  1149  00025D   2D26(1)  		MOV		A, #WRITE_REG+RF_SETUP
  1150  00025E   1F12(1)  		MOV		spi_reg_addr,A
  1151  00025F             	movmi	spi_value, #0x0f	;TX_PWR:0dBm, Datarate:2Mbps, LNA:HCURR
  1152  00025F   2D0F(1)  		MOV		A, #0x0f
  1153  000260   1F13(1)  		MOV		spi_value,A
  1154  000261   C1C8(2)  	call	SPI_Write_Reg
  1155  000262             Rx_Mode:
  1156  000262             	movmi	spi_reg_addr, #WRITE_REG+CONFIG
  1157  000262   2D20(1)  		MOV		A, #WRITE_REG+CONFIG
  1158  000263   1F12(1)  		MOV		spi_reg_addr,A
  1159  000264             	movmi	spi_value, #0x0f	;Set PWR_UP bit, enable CRC(2 bytes) & Prim:RX. RX_DR enabled..
  1160  000264   2D0F(1)  		MOV		A, #0x0f
  1161  000265   1F13(1)  		MOV		spi_value,A
  1162  000266   C1C8(2)  	call	SPI_Write_Reg
  1163  000267             
  1164  000267   4ED5(1)  	bset	PIN_CE_nRF24L01		;CE=1 to enable Rx
  1165  000268   0E00(2)  	ret
  1166  000269             
  1167  000269             ;*************************************************************
  1168  000269             Set_New_RX_Addr:
  1169  000269   46D5(1)  	bclr	PIN_CE_nRF24L01
  1170  00026A             	
  1171  00026A   43D5(1)  	bclr	PIN_SPI_CSN		;Use the same address on the RX device as the TX device
  1172  00026B             	movmi	spi_data, #WRITE_REG+RX_ADDR_P1
  1173  00026B   2D2B(1)  		MOV		A, #WRITE_REG+RX_ADDR_P1
  1174  00026C   1F10(1)  		MOV		spi_data,A
  1175  00026D   C1AB(2)  	call	SPI_RW
  1176  00026E             	movmm	spi_data, local_access_code0
  1177  00026E   1E08(1)  		MOV		A, local_access_code0
  1178  00026F   1F10(1)  		MOV		spi_data,A
  1179  000270   C1AB(2)  	call	SPI_RW
  1180  000271             	movmm	spi_data, local_access_code1
  1181  000271   1E09(1)  		MOV		A, local_access_code1
  1182  000272   1F10(1)  		MOV		spi_data,A
  1183  000273   C1AB(2)  	call	SPI_RW
  1184  000274             	movmm	spi_data, local_access_code2
  1185  000274   1E0A(1)  		MOV		A, local_access_code2
  1186  000275   1F10(1)  		MOV		spi_data,A
  1187  000276   C1AB(2)  	call	SPI_RW
  1188  000277             	movmi	spi_data, #RX_ADDR3_DEF
  1189  000277   2D07(1)  		MOV		A, #RX_ADDR3_DEF
  1190  000278   1F10(1)  		MOV		spi_data,A
  1191  000279   C1AB(2)  	call	SPI_RW
  1192  00027A             	movmi	spi_data, #RX_ADDR4_DEF
  1193  00027A   2D08(1)  		MOV		A, #RX_ADDR4_DEF
  1194  00027B   1F10(1)  		MOV		spi_data,A
  1195  00027C   C1AB(2)  	call	SPI_RW
  1196  00027D   4BD5(1)  	bset	PIN_SPI_CSN
  1197  00027E             
  1198  00027E   4ED5(1)  	bset	PIN_CE_nRF24L01		;CE=1 to enable Rx
  1199  00027F   0E00(2)  	ret
  1200  000280             
  1201  000280             Flush_Rx_FIFO:
  1202  000280   43D5(1)  	bclr	PIN_SPI_CSN
  1203  000281             	movmi	spi_data, #FLUSH_RX	;flush Rx FIFO
  1204  000281   2DE2(1)  		MOV		A, #FLUSH_RX
  1205  000282   1F10(1)  		MOV		spi_data,A
  1206  000283   C1AB(2)  	call	SPI_RW
  1207  000284   4BD5(1)  	bset	PIN_SPI_CSN
  1208  000285   0E00(2)  	ret
  1209  000286             ;*****************************************************************
  1210  000286             ;Function:Check_CD
  1211  000286             ;Description:Check that if carrier is detected,if so,change to the next channel
  1212  000286             ;input:none
  1213  000286             ;output:none
  1214  000286             ;*****************************************************************
  1215  000286             Check_CD:
  1216  000286             	jb0	F_CHECK_CD, Check_CD_Out	;not the time to do CD yet
  1217  000286   5906(1+S)  	bts1	F_CHECK_CD
  1218  000287   8299(2)  		jmp	Check_CD_Out
  1219  000288   4106(1)  	bclr	F_CHECK_CD
  1220  000289   61C9(1)  	B0BCLR	FP01IEN			;disable INT from nRF24L01
  1221  00028A             	movmi	spi_reg_addr, #CD
  1222  00028A   2D09(1)  		MOV		A, #CD
  1223  00028B   1F12(1)  		MOV		spi_reg_addr,A
  1224  00028C   C1BE(2)  	call	SPI_Read_Reg	
  1225  00028D             	jb0	spi_value.0, Check_CD_End
  1226  00028D   5813(1+S)  	bts1	spi_value.0
  1227  00028E   8298(2)  		jmp	Check_CD_End
  1228  00028F             	;call	Delay_10ms		;delay for real data to come in
  1229  00028F   C2F7(2)  	call	Ptr_Table_Inc		;Carrier detected,change to next channel
  1230  000290   C2EA(2)  	call	Get_Channel
  1231  000291   46D5(1)  	bclr	PIN_CE_nRF24L01		;disable Rx when changing channel
  1232  000292             	movmi	spi_reg_addr, #WRITE_REG+RF_CH
  1233  000292   2D25(1)  		MOV		A, #WRITE_REG+RF_CH
  1234  000293   1F12(1)  		MOV		spi_reg_addr,A
  1235  000294             	movmm	spi_value, channel	;select RF channel
  1236  000294   1E0F(1)  		MOV		A, channel
  1237  000295   1F13(1)  		MOV		spi_value,A
  1238  000296   C1C8(2)  	call	SPI_Write_Reg
  1239  000297   4ED5(1)  	bset	PIN_CE_nRF24L01		;enable Rx
  1240  000298             Check_CD_End:	
  1241  000298   69C9(1)  	B0BSET	FP01IEN			;enable INT from nRF24L01
  1242  000299             Check_CD_Out:	
  1243  000299   0E00(2)  	ret
  1244  00029A             	
  1245  00029A             
  1246  00029A             	INCLUDE		Misc.asm
  1247  00029A             ;*****************************************************************
  1248  00029A             ;Function:BeepLong
  1249  00029A             ;Description:beep for a relatively long while(1000ms) when power-on
  1250  00029A             ;input:none
  1251  00029A             ;output:none
  1252  00029A             ;*****************************************************************
  1253  00029A             BeepLong:
  1254  00029A   C47F(2)  	call	Init_TC0
  1255  00029B             	;call	Delay_250ms
  1256  00029B             	;call	Delay_250ms
  1257  00029B   C30B(2)  	call	Delay_250ms
  1258  00029C   C30B(2)  	call	Delay_250ms
  1259  00029D   C31C(2)  	call	Stop_TC0
  1260  00029E   0E00(2)  	ret
  1261  00029F             ;*****************************************************************
  1262  00029F             ;Function:BeepShort
  1263  00029F             ;Description:beep for a relatively short while(100ms) when a valid command received
  1264  00029F             

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -