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

📄 flash.s

📁 开发环境 iccavr6.0 单片机时钟由pdiusbd12的clkout给出8M 为了回报的每一个无私的开发者
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module Flash.c
	.area lit(rom, con, rel)
_Fat16_Bpb::
	.byte 235,3
	.byte 144,'M
	.byte 'S,'W
	.byte 'I,'N
	.byte 52,46
	.byte 49,0
	.byte 2,1
	.byte 1,0
	.byte 2,0
	.byte 2,0
	.byte 252,248
	.byte 250,0
	.byte 63,0
	.byte 255,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 41,49
	.byte 50,51
	.byte 52,'Y
	.byte 'U,'X
	.byte 'K,45
	.byte 'M,'A
	.byte 'S,'S
	.byte 45,49
	.byte 'F,'A
	.byte 'T,49
	.byte 54,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 0,0
	.byte 'U,170
	.dbfile D:\AvrUSB\Flash.c
	.dbsym e Fat16_Bpb _Fat16_Bpb A[512:512]kc
	.area text(rom, con, rel)
	.dbfile D:\AvrUSB\Flash.c
	.dbfunc e Flash_Reset _Flash_Reset fV
	.even
_Flash_Reset::
	.dbline -1
	.dbline 30
; #include <iom161v.h>
; #include <macros.h>
; #include "Flash.h"
; extern unsigned char PageBuf[512];
; 
; const  unsigned char  Fat16_Bpb[512]={
;   0xEB,0x03,0x90,'M','S','W','I','N','4','.','1',0,2,1,1,
;   0,2,0,2,0,0xfc,0xf8,0xfa,0,0x3f,0,0xff,0,0,0,0,0,0,0,0,0,//35
;   0,0,0x29,'1','2','3','4',
;   'Y','U','X','K','-','M','A','S','S','-','1',
;   'F','A','T','1','6',0,0,0,//61  
;   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
;   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
;   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
;   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
;   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
;   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
;   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
;   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
;   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
;   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
;   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
;   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
;   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
;   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
;   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
;   0x55,0xAA//unsigned char ExecutableMarker[2]  
; };
; void Flash_Reset(void)
; {
	.dbline 31
;   FC_CMD=RESET;
	ldi R24,255
	sts 40960,R24
	.dbline 32
;   asm("nop \n nop");
	nop 
	 nop
L2:
	.dbline 33
L3:
	.dbline 33
;   WAITRB;
	sbis 0x10,4
	rjmp L2
	.dbline -2
	.dbline 34
; }
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Check_Flash_Id _Check_Flash_Id fi
;             id -> R16,R17
	.even
_Check_Flash_Id::
	.dbline -1
	.dbline 36
; unsigned int Check_Flash_Id(void)
; {
	.dbline 38
;   unsigned int id;
;   FC_CMD=READID;
	ldi R24,144
	sts 40960,R24
	.dbline 39
;   FC_ADDR=READ0;
	clr R2
	sts 36864,R2
	.dbline 40
;   id=FC_DATA<<8;
	lds R16,32768
	clr R17
	mov R17,R16
	clr R16
	.dbline 41
;   id+=FC_DATA;
	lds R2,32768
	clr R3
	add R16,R2
	adc R17,R3
	.dbline 42
;   FC_INACTIVE
	sts 0xfc01,R22
	.dbline 43
;   return id;
	.dbline -2
L5:
	.dbline 0 ; func end
	ret
	.dbsym r id 16 i
	.dbend
	.dbfunc e Erase_Cluster _Erase_Cluster fc
;              v -> R20
;      blockPage -> R20,R21
;        cluster -> R20,R21
	.even
_Erase_Cluster::
	xcall push_gset1
	movw R20,R16
	.dbline -1
	.dbline 46
; }
; BOOL Erase_Cluster(unsigned int cluster)
; {
	.dbline 48
;   unsigned char v;
;   unsigned int blockPage=cluster*32;
	ldi R16,32
	ldi R17,0
	movw R18,R20
	xcall empy16s
	movw R20,R16
	.dbline 49
;   fWPs;
	SBI 0x12,5
	.dbline 49
	.dbline 50
;   FC_CMD=BLOCK_ERASE_1C;
	ldi R24,96
	sts 40960,R24
	.dbline 51
;   FC_ADDR=blockPage%256;
	movw R24,R20
	andi R25,0
	sts 36864,R24
	.dbline 52
;   FC_ADDR=blockPage/256;
	movw R2,R20
	mov R2,R3
	clr R3
	sts 36864,R2
	.dbline 53
;   FC_CMD=BLOCK_ERASE_2C;
	ldi R24,208
	sts 40960,R24
	.dbline 54
;   asm("nop \n nop");
	nop 
	 nop
L7:
	.dbline 55
L8:
	.dbline 55
;   WAITRB;
	sbis 0x10,4
	rjmp L7
	.dbline 56
;   FC_CMD=READSTATUS;
	ldi R24,112
	sts 40960,R24
	.dbline 57
;   v=FC_DATA;
	lds R20,32768
	.dbline 58
;   FC_INACTIVE
	sts 0xfc01,R22
	.dbline 59
;   fWPc;
	CBI 0x12,5
	.dbline 59
	.dbline 60
;   if(v&0x01)
	sbrs R20,0
	rjmp L10
	.dbline 61
; 	 return FALSE;
	clr R16
	xjmp L6
L10:
	.dbline 62
;   return TRUE;
	ldi R16,1
	.dbline -2
L6:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r v 20 c
	.dbsym r blockPage 20 i
	.dbsym r cluster 20 i
	.dbend
	.dbfunc e ReadPage _ReadPage fV
;      blockPage -> R10,R11
;              i -> R20,R21
;          pPage -> R22,R23
;           page -> R10,R11
;          block -> R12,R13
	.even
_ReadPage::
	xcall push_gset4
	movw R10,R18
	movw R12,R16
	ldd R22,y+8
	ldd R23,y+9
	.dbline -1
	.dbline 66
; }
; 
; void ReadPage(unsigned int block,unsigned int page,unsigned char *pPage)
; {
	.dbline 67
;   unsigned int i=512;
	ldi R20,512
	ldi R21,2
	.dbline 68
;   unsigned int blockPage=block*32+page;
	ldi R16,32
	ldi R17,0
	movw R18,R12
	xcall empy16s
	movw R2,R16
	add R2,R10
	adc R3,R11
	movw R10,R2
	.dbline 69
;   FC_CMD=READ0;
	clr R2
	sts 40960,R2
	.dbline 70
;   FC_ADDR=0x00;
	sts 36864,R2
	.dbline 71
;   FC_ADDR=blockPage%256;
	movw R24,R10
	andi R25,0
	sts 36864,R24
	.dbline 72
;   FC_ADDR=blockPage/256;
	movw R2,R10
	mov R2,R3
	clr R3
	sts 36864,R2
	.dbline 73
;   asm("nop \n nop");
	nop 
	 nop
L13:
	.dbline 74
L14:
	.dbline 74
;   WAITRB;
	sbis 0x10,4
	rjmp L13
	xjmp L17
L16:
	.dbline 75
	.dbline 75
	lds R2,32768
	movw R30,R22
	st Z+,R2
	movw R22,R30
	.dbline 75
L17:
	.dbline 75
;   while(i--){*pPage++=FC_DATA;}
	movw R2,R20
	subi R20,1
	sbci R21,0
	tst R2
	brne L16
	tst R3
	brne L16
X0:
	.dbline 76
;   asm("nop \n nop");

⌨️ 快捷键说明

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