📄 ch375.lst
字号:
821 ,0,.Lscope9-.LFBB9
822 .Lscope9:
824 034c 8460 .global CH375_ReadDiskSize
826 0352 80E0 CH375_ReadDiskSize:
828 .LM95:
829 .LFBB10:
830 0356 DF91 /* prologue: frame size=8 */
831 0358 CF91 push r14
832 035a 1F91 push r15
833 035c 0F91 push r16
834 035e FF90 push r17
835 0360 EF90 push r28
836 0362 DF90 push r29
837 0364 CF90 in r28,__SP_L__
838 0366 0895 in r29,__SP_H__
839 sbiw r28,8
840 in __tmp_reg__,__SREG__
841 cli
842 out __SP_H__,r29
843 out __SREG__,__tmp_reg__
844 out __SP_L__,r28
845 /* prologue end (size=14) */
847 .LM96:
848 lds r24,101
849 andi r24,lo8(-5)
850 sts 101,r24
210:CH375\CH375.c **** return 0; //正常返回0
211:CH375\CH375.c **** }
212:CH375\CH375.c ****
213:CH375\CH375.c ****
214:CH375\CH375.c **** uint32 CH375_ReadDiskSize(void)
215:CH375\CH375.c **** {
851
852 .LM97:
853 ldi r24,lo8(83)
854 call CH375_WriteCMD
856 036a FF92 .LM98:
857 036c 0F93 call CH375_WaitInterrupt
858 036e 1F93 cpi r24,lo8(20)
859 0370 CF93 breq .L67
861 0374 CDB7 .LM99:
862 0376 DEB7 lds r24,101
863 0378 2897 andi r24,lo8(-5)
864 037a 0FB6 sts 101,r24
865 037c F894 ldi r22,lo8(0)
866 037e DEBF ldi r23,hi8(0)
867 0380 0FBE ldi r24,hlo8(0)
868 0382 CDBF ldi r25,hhi8(0)
869 rjmp .L69
216:CH375\CH375.c **** uint8 buffer[8];
217:CH375\CH375.c **** uint8 cnt;
218:CH375\CH375.c **** uint8 i;
219:CH375\CH375.c **** uint32 temp1, temp2;
220:CH375\CH375.c **** CH375_CS_L;
870 CH375_WaitInterrupt
871 cpi r24,lo8(20)
872 0384 8091 6500 breq .L67
874 038a 8093 6500 .LM99:
221:CH375\CH375.c **** CH375_WriteCMD(DISK_SIZE);
875 s 101,r24
877 038e 83E5 .LM97:
878 0390 0E94 0000 ldi r24,lo8(83)
222:CH375\CH375.c **** if(CH375_WaitInterrupt() != USB_INT_SUCCESS)
879 __SP_H__,r29
880 out __SREG__,__tmp_reg__
881 0394 0E94 0000 out __SP_L__,r28
882 0398 8431 /* prologue end (size=14) */
223:CH375\CH375.c **** {
224:CH375\CH375.c **** CH375_CS_L;
884 :
885 lds r24,101
886 039c 8091 6500 andi r24,lo8(-5)
887 03a0 8B7F sts 101,r24
889 03a6 60E0 .LM97:
890 03a8 70E0 ldi r24,lo8(83)
891 03aa 80E0 call CH375_WriteCMD
893 03ae 00C0 .LM98:
894 call CH375_WaitInterrupt
225:CH375\CH375.c **** return 0;
226:CH375\CH375.c **** }
227:CH375\CH375.c **** CH375_WriteCMD(RD_USB_DATA);
895 stabn 68,0,220,.LM96-.LFBB10
896 .LM96:
897 03b0 88E2 lds r24,101
898 03b2 0E94 0000 andi r24,lo8(-5)
228:CH375\CH375.c **** cnt = CH375_ReadDAT();
899 __SP_L__
900 in r29,__SP_H__
901 03b6 0E94 0000 sbiw r28,8
902 03ba 082F in __tmp_reg__,__SREG__
903 03bc 7E01 cli
904 03be 0894 out __SP_H__,r29
905 03c0 E11C out __SREG__,__tmp_reg__
906 03c2 F11C out __SP_L__,r28
907 03c4 10E0 /* prologue end (size=14) */
909 .LM96:
229:CH375\CH375.c **** for(i=0;i<cnt;i++)buffer[i] = CH375_ReadDAT();
910 1
911 andi r24,lo8(-5)
912 03c8 0E94 0000 sts 101,r24
914 03ce 8193 .LM97:
915 03d0 7F01 ldi r24,lo8(83)
916 03d2 1F5F call CH375_WriteCMD
918 03d4 1017 .LM98:
919 03d6 01F4 call CH375_WaitInterrupt
230:CH375\CH375.c **** CH375_CS_H;
920 stabn 68,0,220,.LM96-.LFBB10
921 .LM96:
922 03d8 8091 6500 lds r24,101
923 03dc 8460 andi r24,lo8(-5)
924 03de 8093 6500 sts 101,r24
231:CH375\CH375.c ****
232:CH375\CH375.c **** /* data format is big endian */
233:CH375\CH375.c **** temp1 = (uint32)buffer[0]<<24;
925 29,__SP_H__
926 sbiw r28,8
927 03e2 2981 in __tmp_reg__,__SREG__
928 03e4 30E0 cli
929 03e6 40E0 out __SP_H__,r29
930 03e8 50E0 out __SREG__,__tmp_reg__
931 03ea 522F out __SP_L__,r28
932 03ec 4427 /* prologue end (size=14) */
934 03f0 2227 .LM96:
234:CH375\CH375.c **** temp1 += (uint32)buffer[1]<<16;
935 01
936 andi r24,lo8(-5)
937 03f2 8A81 sts 101,r24
939 03f6 A0E0 .LM97:
940 03f8 B0E0 ldi r24,lo8(83)
941 03fa DC01 call CH375_WriteCMD
943 03fe 8827 .LM98:
944 0400 280F call CH375_WaitInterrupt
945 0402 391F cpi r24,lo8(20)
946 0404 4A1F breq .L67
235:CH375\CH375.c **** temp1 += (uint32)buffer[2]<<8;
948 (-5)
949 sts 101,r24
951 040a 280F .LM97:
952 040c 311D ldi r24,lo8(83)
953 040e 411D call CH375_WriteCMD
236:CH375\CH375.c **** temp1 += (uint32)buffer[3]<<0;
237:CH375\CH375.c ****
238:CH375\CH375.c **** temp2 = (uint32)buffer[4]<<24;
955 r28
956 /* prologue end (size=14) */
958 0414 70E0 .LM96:
959 0416 80E0 lds r24,101
960 0418 90E0 andi r24,lo8(-5)
961 041a 962F sts 101,r24
963 041e 7727 .LM97:
964 0420 6627 ldi r24,lo8(83)
239:CH375\CH375.c **** temp2 += (uint32)buffer[5]<<16;
965 5_WriteCMD
967 0422 EE80 .LM98:
968 0424 FF24 call CH375_WaitInterrupt
969 0426 00E0 cpi r24,lo8(20)
970 0428 10E0 breq .L67
972 042c FF24 .LM99:
973 042e EE24 lds r24,101
974 0430 6E0D andi r24,lo8(-5)
975 0432 7F1D sts 101,r24
976 0434 801F ldi r22,lo8(0)
977 0436 911F ldi r23,hi8(0)
240:CH375\CH375.c **** temp2 += (uint32)buffer[6]<<8;
978 eCMD
980 0438 E885 .LM98:
981 043a 6E0F call CH375_WaitInterrupt
982 043c 711D cpi r24,lo8(20)
983 043e 811D breq .L67
241:CH375\CH375.c **** temp2 += (uint32)buffer[7]<<0;
242:CH375\CH375.c ****
243:CH375\CH375.c **** return temp1 * temp2;
985 (-5)
986 sts 101,r24
988 0444 FF24 .LM97:
989 0446 00E0 ldi r24,lo8(83)
990 0448 10E0 call CH375_WriteCMD
992 044c 0F2D .LM98:
993 044e FE2C call CH375_WaitInterrupt
994 0450 EE24 cpi r24,lo8(20)
995 0452 6E0D breq .L67
997 0456 801F .LM99:
998 0458 911F lds r24,101
999 045a EB80 andi r24,lo8(-5)
1000 045c FF24 sts 101,r24
1001 045e 00E0 ldi r22,lo8(0)
1002 0460 10E0 ldi r23,hi8(0)
1003 0462 102F ldi r24,hlo8(0)
1004 0464 0F2D ldi r25,hhi8(0)
1005 0466 FE2C rjmp .L69
1006 0468 EE24 .L67:
1008 046c 3F1D .LM100:
1009 046e 401F ldi r24,lo8(40)
1010 0470 511F call CH375_WriteCMD
1012 .LM101:
1013 call CH375_ReadDAT
1014 0476 2896 mov r16,r24
1015 0478 0FB6 movw r14,r28
1016 047a F894 sec
1017 047c DEBF adc r14,__zero_reg__
1018 047e 0FBE adc r15,__zero_reg__
1019 0480 CDBF ldi r17,lo8(0)
1020 0482 DF91 rjmp .L70
1021 0484 CF91 .L71:
1023 0488 0F91 .LM102:
1024 048a FF90 call CH375_ReadDAT
1025 048c EF90 movw r30,r14
1026 048e 0895 st Z+,r24
1027 movw r14,r30
1028 subi r17,lo8(-(1))
1029 .L70:
1030 cp r17,r16
1031 brne .L71
1033 .LM103:
1034 lds r24,101
1035 ori r24,lo8(4)
1036 sts 101,r24
1038 .LM104:
1039 ldd r18,Y+1
1040 ldi r19,lo8(0)
1041 ldi r20,lo8(0)
244:CH375\CH375.c **** }
245:CH375\CH375.c ****
246:CH375\CH375.c **** uint8 CH375_CheckExist(void)
247:CH375\CH375.c **** {
1042 .L71
1044 .LM103:
1045 lds r24,101
1046 ori r24,lo8(4)
248:CH375\CH375.c **** CH375_CS_L;
1047
1048 call CH375_ReadDAT
1049 0490 8091 6500 movw r30,r14
1050 0494 8B7F st Z+,r24
1051 0496 8093 6500 movw r14,r30
249:CH375\CH375.c **** CH375_WriteCMD(RESET_ALL); //复位全部
1052 ,r28
1053 sec
1054 049a 85E0 adc r14,__zero_reg__
1055 049c 0E94 0000 adc r15,__zero_reg__
250:CH375\CH375.c **** CH375_DelayNms(40); //延时40ms
1056 M100-.LFBB10
1057 .LM100:
1058 04a0 88E2 ldi r24,lo8(40)
1059 04a2 90E0 call CH375_WriteCMD
251:CH375\CH375.c **** CH375_WriteCMD(CHECK_EXIST); //检查芯片是否存在
1061 101,r24
1062 ldi r22,lo8(0)
1063 04a8 86E0 ldi r23,hi8(0)
1064 04aa 0E94 0000 ldi r24,hlo8(0)
252:CH375\CH375.c **** CH375_WriteDAT(0x55); //填数据0x55 取反为0xaa
1065 222,.LM98-.LFBB10
1066 .LM98:
1067 04ae 85E5 call CH375_WaitInterrupt
1068 04b0 0E94 0000 cpi r24,lo8(20)
253:CH375\CH375.c **** if(CH375_ReadDAT() != 0xaa){CH375_CS_H;return 0;}//不存在则退出
1069 96-.LFBB10
1070 .LM96:
1071 04b4 0E94 0000 lds r24,101
1072 04b8 8A3A andi r24,lo8(-5)
1073 04ba 01F0 sts 101,r24
1075 .LM97:
1076 04bc 8091 6500 ldi r24,lo8(83)
1077 04c0 8460 call CH375_WriteCMD
1079 04c6 80E0 .LM98:
1080 04c8 90E0 call CH375_WaitInterrupt
1081 04ca 0895 cpi r24,lo8(20)
1082 breq .L67
254:CH375\CH375.c **** CH375_CS_L;
1083 LM96:
1084 lds r24,101
1085 04cc 8091 6500 andi r24,lo8(-5)
1086 04d0 8B7F sts 101,r24
1088 04d6 81E0 .LM97:
1089 04d8 90E0 ldi r24,lo8(83)
255:CH375\CH375.c **** return 1;
256:CH375\CH375.c **** }
1090 __SP_H__,r29
1091 out __SREG__,__tmp_reg__
1092 04da 0895 out __SP_L__,r28
1093 /* prologue end (size=14) */
1095 .LM96:
1096 lds r24,101
1097 andi r24,lo8(-5)
1098 sts 101,r24
1100 .LM97:
1101 ldi r24,lo8(83)
DEFINED SYMBOLS
*ABS*:00000000 CH375.c
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc1XWZqW.s:2 *ABS*:0000003f __SREG__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc1XWZqW.s:3 *ABS*:0000003e __SP_H__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc1XWZqW.s:4 *ABS*:0000003d __SP_L__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc1XWZqW.s:5 *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc1XWZqW.s:6 *ABS*:00000001 __zero_reg__
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc1XWZqW.s:75 .text:00000000 CH375_DelayNms
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc1XWZqW.s:126 .text:0000001a CH375_WriteCMD
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc1XWZqW.s:194 .text:00000042 CH375_WriteDAT
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc1XWZqW.s:243 .text:00000064 CH375_ReadDAT
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc1XWZqW.s:295 .text:00000086 CH375_WaitInterrupt
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc1XWZqW.s:326 .text:0000009c CH375_WaitInterrupt_NEW
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc1XWZqW.s:396 .text:000000e6 CH375_IniDisk
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc1XWZqW.s:507 .text:00000162 CH375_ReadOneSector
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc1XWZqW.s:710 .text:0000029a CH375_WriteOneSector
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc1XWZqW.s:850 .text:00000368 CH375_ReadDiskSize
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cc1XWZqW.s:1041 .text:00000490 CH375_CheckExist
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__mulsi3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -