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

📄 sd_test.asm

📁 mmc/sd卡的实现源码
💻 ASM
📖 第 1 页 / 共 5 页
字号:
$0272	$0E01	MOVLW	1
$0274	$6F6E	MOVWF	spilib_s_b_spi_init_advanced_param_low_to_high, 1
$0276	$EC37	F000	CALL	spilib_s_b_spi_init_advanced
$027A	$501C	MOVF	sdlib_main_global_portaddress_1, W, 0
$027C	$6EE9	MOVWF	FSR0L, 0
$027E	$501D	MOVF	sdlib_main_global_portaddress_2, W, 0
$0280	$6EEA	MOVWF	FSR0H, 0
$0282	$50EF	MOVF	INDF0, W, 0
$0284	$101E	IORWF	sdlib_main_global_mask1, W, 0
$0286	$6EEF	MOVWF	INDF0, 0
$0288	$6B5E	CLRF	sdlib_sd_init_local_i, 1
$028A	$	sdlib_L_15:
$028A	$0E09	MOVLW	9
$028C	$6E01	MOVWF	STACK_1, 0
$028E	$515E	MOVF	sdlib_sd_init_local_i, W, 1
$0290	$5C01	SUBWF	STACK_1, W, 0
$0292	$E306	BNC	sdlib_L_17
$0294	$	sdlib_L_16:
$0294	$0EFF	MOVLW	255
$0296	$6F76	MOVWF	sdlib_sd_spi_param_data_out, 1
$0298	$EC1B	F000	CALL	sdlib_sd_spi
$029C	$2B5E	INCF	sdlib_sd_init_local_i, F, 1
$029E	$D7F5	BRA	sdlib_L_15
$02A0	$	sdlib_L_17:
$02A0	$501C	MOVF	sdlib_main_global_portaddress_1, W, 0
$02A2	$6EE9	MOVWF	FSR0L, 0
$02A4	$501D	MOVF	sdlib_main_global_portaddress_2, W, 0
$02A6	$6EEA	MOVWF	FSR0H, 0
$02A8	$50EF	MOVF	INDF0, W, 0
$02AA	$141F	ANDWF	sdlib_main_global_mask0, W, 0
$02AC	$6EEF	MOVWF	INDF0, 0
$02AE	$6B6F	CLRF	sdlib_sd_send_command_param_partial_cmm, 1
$02B0	$6B70	CLRF	sdlib_sd_send_command_param_address_1, 1
$02B2	$6B71	CLRF	sdlib_sd_send_command_param_address_2, 1
$02B4	$6B72	CLRF	sdlib_sd_send_command_param_address_3, 1
$02B6	$6B73	CLRF	sdlib_sd_send_command_param_address_4, 1
$02B8	$0E95	MOVLW	149
$02BA	$6F74	MOVWF	sdlib_sd_send_command_param_crc, 1
$02BC	$EC67	F000	CALL	sdlib_sd_send_command
$02C0	$0E01	MOVLW	1
$02C2	$5D6B	SUBWF	sdlib_sd_send_command_local_result, W, 1
$02C4	$E003	BZ	sdlib_L_19
$02C6	$	sdlib_L_18:
$02C6	$0EFF	MOVLW	255
$02C8	$6E01	MOVWF	STACK_1, 0
$02CA	$D001	BRA	sdlib_L_21
$02CC	$	sdlib_L_19:
$02CC	$6A01	CLRF	STACK_1, 0
$02CE	$	sdlib_L_21:
$02CE	$0EFF	MOVLW	255
$02D0	$5C01	SUBWF	STACK_1, W, 0
$02D2	$E103	BNZ	sdlib_L_23
$02D4	$	sdlib_L_22:
$02D4	$0E01	MOVLW	1
$02D6	$6F5D	MOVWF	sdlib_sd_init_local_result, 1
$02D8	$0012	return
$02DA	$	sdlib_L_23:
$02DA	$	sdlib_L_20:
$02DA	$	sdlib_L_24:
$02DA	$0E01	MOVLW	1
$02DC	$6F6F	MOVWF	sdlib_sd_send_command_param_partial_cmm, 1
$02DE	$6B70	CLRF	sdlib_sd_send_command_param_address_1, 1
$02E0	$6B71	CLRF	sdlib_sd_send_command_param_address_2, 1
$02E2	$6B72	CLRF	sdlib_sd_send_command_param_address_3, 1
$02E4	$6B73	CLRF	sdlib_sd_send_command_param_address_4, 1
$02E6	$0EFF	MOVLW	255
$02E8	$6F74	MOVWF	sdlib_sd_send_command_param_crc, 1
$02EA	$EC67	F000	CALL	sdlib_sd_send_command
$02EE	$0E00	MOVLW	0
$02F0	$5D6B	SUBWF	sdlib_sd_send_command_local_result, W, 1
$02F2	$E003	BZ	sdlib_L_26
$02F4	$	sdlib_L_25:
$02F4	$0EFF	MOVLW	255
$02F6	$6E01	MOVWF	STACK_1, 0
$02F8	$D001	BRA	sdlib_L_27
$02FA	$	sdlib_L_26:
$02FA	$6A01	CLRF	STACK_1, 0
$02FC	$	sdlib_L_27:
$02FC	$0EFF	MOVLW	255
$02FE	$5C01	SUBWF	STACK_1, W, 0
$0300	$E102	BNZ	sdlib_L_29
$0302	$	sdlib_L_28:
$0302	$0000	nop
$0304	$D7EA	BRA	sdlib_L_24
$0306	$	sdlib_L_29:
$0306	$6B5D	CLRF	sdlib_sd_init_local_result, 1
$0308	$0012	RETURN
$030A	$	sdlib_sd_write_sector:
$030A	$0102	MOVLB	2
$030C	$5165	MOVF	sdlib_sd_write_sector_param_sector_1, W, 1
$030E	$6F60	MOVWF	sdlib_sd_write_sector_local_byte_start_1, 1
$0310	$5166	MOVF	sdlib_sd_write_sector_param_sector_2, W, 1
$0312	$6F61	MOVWF	sdlib_sd_write_sector_local_byte_start_2, 1
$0314	$5167	MOVF	sdlib_sd_write_sector_param_sector_3, W, 1
$0316	$6F62	MOVWF	sdlib_sd_write_sector_local_byte_start_3, 1
$0318	$5168	MOVF	sdlib_sd_write_sector_param_sector_4, W, 1
$031A	$6F63	MOVWF	sdlib_sd_write_sector_local_byte_start_4, 1
$031C	$0E09	MOVLW	9
$031E	$6E00	MOVWF	STACK_0, 0
$0320	$	sdlib_L_48:
$0320	$0E00	MOVLW	0
$0322	$5C00	SUBWF	STACK_0, W, 0
$0324	$E007	BZ	sdlib_L_49
$0326	$3760	RLCF	sdlib_sd_write_sector_local_byte_start_1, F, 1
$0328	$3761	RLCF	sdlib_sd_write_sector_local_byte_start_2, F, 1
$032A	$3762	RLCF	sdlib_sd_write_sector_local_byte_start_3, F, 1
$032C	$3763	RLCF	sdlib_sd_write_sector_local_byte_start_4, F, 1
$032E	$9160	BCF	sdlib_sd_write_sector_local_byte_start_1, 0, 1
$0330	$2E00	DECFSZ	STACK_0, F, 0
$0332	$D7F6	BRA	sdlib_L_48
$0334	$	sdlib_L_49:
$0334	$0E18	MOVLW	24
$0336	$6F6F	MOVWF	sdlib_sd_send_command_param_partial_cmm, 1
$0338	$5160	MOVF	sdlib_sd_write_sector_local_byte_start_1, W, 1
$033A	$6F70	MOVWF	sdlib_sd_send_command_param_address_1, 1
$033C	$5161	MOVF	sdlib_sd_write_sector_local_byte_start_2, W, 1
$033E	$6F71	MOVWF	sdlib_sd_send_command_param_address_2, 1
$0340	$5162	MOVF	sdlib_sd_write_sector_local_byte_start_3, W, 1
$0342	$6F72	MOVWF	sdlib_sd_send_command_param_address_3, 1
$0344	$5163	MOVF	sdlib_sd_write_sector_local_byte_start_4, W, 1
$0346	$6F73	MOVWF	sdlib_sd_send_command_param_address_4, 1
$0348	$0EFF	MOVLW	255
$034A	$6F74	MOVWF	sdlib_sd_send_command_param_crc, 1
$034C	$EC67	F000	CALL	sdlib_sd_send_command
$0350	$516B	MOVF	sdlib_sd_send_command_local_result, W, 1
$0352	$6F5D	MOVWF	sdlib_sd_write_sector_local_result, 1
$0354	$0E00	MOVLW	0
$0356	$5D5D	SUBWF	sdlib_sd_write_sector_local_result, W, 1
$0358	$E003	BZ	sdlib_L_51
$035A	$	sdlib_L_50:
$035A	$0EFF	MOVLW	255
$035C	$6E01	MOVWF	STACK_1, 0
$035E	$D001	BRA	sdlib_L_53
$0360	$	sdlib_L_51:
$0360	$6A01	CLRF	STACK_1, 0
$0362	$	sdlib_L_53:
$0362	$0EFF	MOVLW	255
$0364	$5C01	SUBWF	STACK_1, W, 0
$0366	$E103	BNZ	sdlib_L_55
$0368	$	sdlib_L_54:
$0368	$0E01	MOVLW	1
$036A	$6F5D	MOVWF	sdlib_sd_write_sector_local_result, 1
$036C	$0012	return
$036E	$	sdlib_L_55:
$036E	$	sdlib_L_52:
$036E	$0EFF	MOVLW	255
$0370	$6F76	MOVWF	sdlib_sd_spi_param_data_out, 1
$0372	$EC1B	F000	CALL	sdlib_sd_spi
$0376	$0EFF	MOVLW	255
$0378	$6F76	MOVWF	sdlib_sd_spi_param_data_out, 1
$037A	$EC1B	F000	CALL	sdlib_sd_spi
$037E	$0EFE	MOVLW	254
$0380	$6F76	MOVWF	sdlib_sd_spi_param_data_out, 1
$0382	$EC1B	F000	CALL	sdlib_sd_spi
$0386	$6B5E	CLRF	sdlib_sd_write_sector_local_i_1, 1
$0388	$6B5F	CLRF	sdlib_sd_write_sector_local_i_2, 1
$038A	$	sdlib_L_56:
$038A	$0EFF	MOVLW	255
$038C	$6E02	MOVWF	STACK_2, 0
$038E	$0E01	MOVLW	1
$0390	$6E03	MOVWF	STACK_3, 0
$0392	$80D8	BSF	STATUS, C, 0
$0394	$BF5F	BTFSC	sdlib_sd_write_sector_local_i_2, 7, 1
$0396	$D005	BRA	sdlib_L_59
$0398	$515F	MOVF	sdlib_sd_write_sector_local_i_2, W, 1
$039A	$5C03	SUBWF	STACK_3, W, 0
$039C	$E102	BNZ	sdlib_L_59
$039E	$515E	MOVF	sdlib_sd_write_sector_local_i_1, W, 1
$03A0	$5C02	SUBWF	STACK_2, W, 0
$03A2	$	sdlib_L_59:
$03A2	$E312	BNC	sdlib_L_58
$03A4	$	sdlib_L_57:
$03A4	$5169	MOVF	sdlib_sd_write_sector_param_data_1, W, 1
$03A6	$6EE9	MOVWF	FSR0L, 0
$03A8	$516A	MOVF	sdlib_sd_write_sector_param_data_2, W, 1
$03AA	$6EEA	MOVWF	FSR0H, 0
$03AC	$515E	MOVF	sdlib_sd_write_sector_local_i_1, W, 1
$03AE	$26E9	ADDWF	FSR0L, F, 0
$03B0	$515F	MOVF	sdlib_sd_write_sector_local_i_2, W, 1
$03B2	$22EA	ADDWFC	FSR0H, F, 0
$03B4	$50EF	MOVF	INDF0, W, 0
$03B6	$6F64	MOVWF	sdlib_sd_write_sector_local_tmp, 1
$03B8	$5164	MOVF	sdlib_sd_write_sector_local_tmp, W, 1
$03BA	$6F76	MOVWF	sdlib_sd_spi_param_data_out, 1
$03BC	$EC1B	F000	CALL	sdlib_sd_spi
$03C0	$2B5E	INCF	sdlib_sd_write_sector_local_i_1, F, 1
$03C2	$B4D8	BTFSC	STATUS, Z, 0
$03C4	$2B5F	INCF	sdlib_sd_write_sector_local_i_2, F, 1
$03C6	$D7E1	BRA	sdlib_L_56
$03C8	$	sdlib_L_58:
$03C8	$0EFF	MOVLW	255
$03CA	$6F76	MOVWF	sdlib_sd_spi_param_data_out, 1
$03CC	$EC1B	F000	CALL	sdlib_sd_spi
$03D0	$0EFF	MOVLW	255
$03D2	$6F76	MOVWF	sdlib_sd_spi_param_data_out, 1
$03D4	$EC1B	F000	CALL	sdlib_sd_spi
$03D8	$0EFF	MOVLW	255
$03DA	$6F76	MOVWF	sdlib_sd_spi_param_data_out, 1
$03DC	$EC1B	F000	CALL	sdlib_sd_spi
$03E0	$5175	MOVF	sdlib_sd_spi_local_result, W, 1
$03E2	$6F5E	MOVWF	sdlib_sd_write_sector_local_i_1, 1
$03E4	$6B5F	CLRF	sdlib_sd_write_sector_local_i_2, 1
$03E6	$0E1F	MOVLW	31
$03E8	$155E	ANDWF	sdlib_sd_write_sector_local_i_1, W, 1
$03EA	$6E00	MOVWF	STACK_0, 0
$03EC	$6A01	CLRF	STACK_1, 0
$03EE	$5000	MOVF	STACK_0, W, 0
$03F0	$6F5E	MOVWF	sdlib_sd_write_sector_local_i_1, 1
$03F2	$5001	MOVF	STACK_1, W, 0
$03F4	$6F5F	MOVWF	sdlib_sd_write_sector_local_i_2, 1
$03F6	$0E05	MOVLW	5
$03F8	$6E02	MOVWF	STACK_2, 0
$03FA	$94D8	BCF	STATUS, Z, 0
$03FC	$BF5F	BTFSC	sdlib_sd_write_sector_local_i_2, 7, 1
$03FE	$D005	BRA	sdlib_L_64
$0400	$0E00	MOVLW	0
$0402	$5D5F	SUBWF	sdlib_sd_write_sector_local_i_2, W, 1
$0404	$E102	BNZ	sdlib_L_64
$0406	$5002	MOVF	STACK_2, W, 0
$0408	$5D5E	SUBWF	sdlib_sd_write_sector_local_i_1, W, 1
$040A	$	sdlib_L_64:
$040A	$E003	BZ	sdlib_L_62
$040C	$	sdlib_L_61:
$040C	$0EFF	MOVLW	255
$040E	$6E01	MOVWF	STACK_1, 0
$0410	$D001	BRA	sdlib_L_65
$0412	$	sdlib_L_62:
$0412	$6A01	CLRF	STACK_1, 0
$0414	$	sdlib_L_65:
$0414	$0EFF	MOVLW	255
$0416	$5C01	SUBWF	STACK_1, W, 0
$0418	$E103	BNZ	sdlib_L_67
$041A	$	sdlib_L_66:
$041A	$0E02	MOVLW	2
$041C	$6F5D	MOVWF	sdlib_sd_write_sector_local_result, 1
$041E	$0012	return
$0420	$	sdlib_L_67:
$0420	$	sdlib_L_63:
$0420	$	sdlib_L_68:
$0420	$0EFF	MOVLW	255
$0422	$6F76	MOVWF	sdlib_sd_spi_param_data_out, 1
$0424	$EC1B	F000	CALL	sdlib_sd_spi
$0428	$0EFF	MOVLW	255
$042A	$5D75	SUBWF	sdlib_sd_spi_local_result, W, 1
$042C	$E003	BZ	sdlib_L_70
$042E	$	sdlib_L_69:
$042E	$0EFF	MOVLW	255
$0430	$6E01	MOVWF	STACK_1, 0
$0432	$D001	BRA	sdlib_L_71
$0434	$	sdlib_L_70:
$0434	$6A01	CLRF	STACK_1, 0
$0436	$	sdlib_L_71:
$0436	$0EFF	MOVLW	255
$0438	$5C01	SUBWF	STACK_1, W, 0
$043A	$E102	BNZ	sdlib_L_73
$043C	$	sdlib_L_72:
$043C	$0000	nop
$043E	$D7F0	BRA	sdlib_L_68
$0440	$	sdlib_L_73:
$0440	$6B5D	CLRF	sdlib_sd_write_sector_local_result, 1
$0442	$0012	RETURN
$0444	$	sdlib_sd_read_cid:
$0444	$0102	MOVLB	2
$0446	$6B5E	CLRF	sdlib_sd_read_cid_local_i, 1
$0448	$	sdlib_L_74:
$0448	$0E0F	MOVLW	15
$044A	$6E01	MOVWF	STACK_1, 0
$044C	$515E	MOVF	sdlib_sd_read_cid_local_i, W, 1
$044E	$5C01	SUBWF	STACK_1, W, 0
$0450	$E30C	BNC	sdlib_L_76
$0452	$	sdlib_L_75:
$0452	$515F	MOVF	sdlib_sd_read_cid_param_data_for_registers_1, W, 1
$0454	$6EE9	MOVWF	FSR0L, 0
$0456	$5160	MOVF	sdlib_sd_read_cid_param_data_for_registers_2, W, 1
$0458	$6EEA	MOVWF	FSR0H, 0
$045A	$515E	MOVF	sdlib_sd_read_cid_local_i, W, 1
$045C	$26E9	ADDWF	FSR0L, F, 0
$045E	$E301	BNC	sdlib_L_77
$0460	$2AEA	INCF	FSR0H, F, 0
$0462	$	sdlib_L_77:
$0462	$0E00	MOVLW	0
$0464	$6EEF	MOVWF	INDF0, 0
$0466	$2B5E	INCF	sdlib_sd_read_cid_local_i, F, 1
$0468	$D7EF	BRA	sdlib_L_74
$046A	$	sdlib_L_76:
$046A	$0E0A	MOVLW	10
$046C	$6F6F	MOVWF	sdlib_sd_send_command_param_partial_cmm, 1
$046E	$6B70	CLRF	sdlib_sd_send_command_param_address_1, 1
$0470	$6B71	CLRF	sdlib_sd_send_command_param_address_2, 1
$0472	$6B72	CLRF	sdlib_sd_send_command_param_address_3, 1
$0474	$6B73	CLRF	sdlib_sd_send_command_param_address_4, 1
$0476	$0EFF	MOVLW	255
$0478	$6F74	MOVWF	sdlib_sd_send_command_param_crc, 1
$047A	$EC67	F000	CALL	sdlib_sd_send_command
$047E	$0E00	MOVLW	0
$0480	$5D6B	SUBWF	sdlib_sd_send_command_local_result, W, 1
$0482	$E003	BZ	sdlib_L_79
$0484	$	sdlib_L_78:
$0484	$0EFF	MOVLW	255
$0486	$6E01	MOVWF	STACK_1, 0
$0488	$D001	BRA	sdlib_L_81
$048A	$	sdlib_L_79:
$048A	$6A01	CLRF	STACK_1, 0
$048C	$	sdlib_L_81:
$048C	$0EFF	MOVLW	255
$048E	$5C01	SUBWF	STACK_1, W, 0
$0490	$E103	BNZ	sdlib_L_83
$0492	$	sdlib_L_82:
$0492	$0E01	MOVLW	1
$0494	$6F5D	MOVWF	sdlib_sd_read_cid_local_result, 1
$0496	$0012	return
$0498	$	sdlib_L_83:
$0498	$	sdlib_L_80:
$0498	$6B5E	CLRF	sdlib_sd_read_cid_local_i, 1
$049A	$	sdlib_L_84:
$049A	$0E0F	MOVLW	15
$049C	$6E01	MOVWF	STACK_1, 0
$049E	$515E	MOVF	sdlib_sd_read_cid_local_i, W, 1
$04A0	$5C01	SUBWF	STACK_1, W, 0
$04A2	$E310	BNC	sdlib_L_86
$04A4	$	sdlib_L_85:
$04A4	$0EFF	MOVLW	255
$04A6	$6F76	MOVWF	sdlib_sd_spi_param_data_out, 1
$04A8	$EC1B	F000	CALL	sdlib_sd_spi
$04AC	$515F	MOVF	sdlib_sd_read_cid_param_data_for_registers_1, W, 1
$04AE	$6EE9	MOVWF	FSR0L, 0
$04B0	$5160	MOVF	sdlib_sd_read_cid_param_data_for_registers_2, W, 1
$04B2	$6EEA	MOVWF	FSR0H, 0
$04B4	$515E	MOVF	sdlib_sd_read_cid_local_i, W, 1
$04B6	$26E9	ADDWF	FSR0L, F, 0
$04B8	$E301	BNC	sdlib_L_87
$04BA	$2AEA	INCF	FSR0H, F, 0
$04BC	$	sdlib_L_87:
$04BC	$5175	MOVF	sdlib_sd_spi_local_result, W, 1
$04BE	$6EEF	MOVWF	INDF0, 0
$04C0	$2B5E	INCF	sdlib_sd_read_cid_local_i, F, 1
$04C2	$D7EB	BRA	sdlib_L_84
$04C4	$	sdlib_L_86:
$04C4	$6B5D	CLRF	sdlib_sd_read_cid_local_result, 1
$04C6	$0012	RETURN
$04C8	$	SD_test_printhex:
$04C8	$0102	MOVLB	2
$04CA	$0EF0	MOVLW	240
$04CC	$155F	ANDWF	sd_test_printhex_param_ix, W, 1
$04CE	$6F5D	MOVWF	sd_test_printhex_local_hix, 1
$04D0	$515D	MOVF	sd_test_printhex_local_hix, W, 1
$04D2	$6E00	MOVWF	STACK_0, 0
$04D4	$0E04	MOVLW	4
$04D6	$6E01	MOVWF	STACK_1, 0
$04D8	$	SD_test_L_0:
$04D8	$0E00	MOVLW	0
$04DA	$5C01	SUBWF	STACK_1, W, 0
$04DC	$E004	BZ	SD_test_L_1
$04DE	$3200	RRCF	STACK_0, F, 0
$04E0	$9E00	BCF	STACK_0, 7, 0
$04E2	$2E01	DECFSZ	STACK_1, F, 0
$04E4	$D7F9	BRA	SD_test_L_0
$04E6	$	SD_test_L_1:
$04E6	$5000	MOVF	STACK_0, W, 0
$04E8	$6F5D	MOVWF	sd_test_printhex_local_hix, 1
$04EA	$0E30	MOVLW	$30
$04EC	$255D	ADDWF	sd_test_printhex_local_hix, W, 1
$04EE	$6F5D	MOVWF	sd_test_printhex_local_hix, 1
$04F0	$0E39	MOVLW	57
$04F2	$6E02	MOVWF	STACK_2, 0
$04F4	$515D	MOVF	sd_test_printhex_local_hix, W, 1
$04F6	$5C02	SUBWF	STACK_2, W, 0
$04F8	$E203	BC	SD_test_L_3
$04FA	$	SD_test_L_2:
$04FA	$0EFF	MOVLW	255
$04FC	$6E01	MOVWF	STACK_1, 0
$04FE	$D001	BRA	SD_test_L_5
$0500	$	SD_test_L_3:
$0500	$6A01	CLRF	STACK_1, 0
$0502	$	SD_test_L_5:
$0502	$0EFF	MOVLW	255
$0504	$5C01	SUBWF	STACK_1, W, 0
$0506	$E103	BNZ	SD_test_L_7
$0508	$	SD_test_L_6:

⌨️ 快捷键说明

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