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

📄 flash.s

📁 项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档
💻 S
字号:
	.module flash.c
	.area text
	.dbfile flash.c
	.dbfunc e SetProtectAddress _SetProtectAddress fV
;        address -> 2,X
_SetProtectAddress::
	.dbline -1
	tsx
	.dbline 18
; #include "flash.h"
; #include "GP32C.h"
; #include <string.h>
; static void 	Delay1(void);
; static void 	Delay2(void);
; static void 	DoEraseFlash(void);
; static void 	DoWriteFlash(void);
; static void 	EraseFlash_End(void);
; static void 	WriteFlash_End(void);
; UINT8 	PrgIOfRam[];
; static UINT16 	g_bBegin, g_bEnd;
; static UINT8 	*g_pAddress;
; 
; static UINT8 	*g_pData;
; static UINT8 	g_nNum;
; 
; void	SetProtectAddress(UINT8 address)
; {
	.dbline 19
; 	FLBPR = address;
	lda 2,X
	sta 0xff7e
	.dbline -2
L1:
	.dbline 0 ; func end
	rts
	.dbsym l address 2 c
	.dbend
	.dbfunc e EraseFlash _EraseFlash fV
;        address -> 2,X
_EraseFlash::
	.dbline -1
	tsx
	.dbline 22
; }
; void	EraseFlash(UINT8 *address)
; {
	.dbline 23
; 	g_pAddress = address;
	lda 2,X
	sta *_g_pAddress
	lda 3,X
	sta *_g_pAddress+1
	.dbline 25
; 
; 	asm("ldhx #_DoEraseFlash");
	ldhx #_DoEraseFlash
	.dbline 26
; 	asm("sthx _g_bBegin");
	sthx _g_bBegin
	.dbline 27
; 	asm("ldhx #_EraseFlash_End");
	ldhx #_EraseFlash_End
	.dbline 28
; 	asm("sthx _g_bEnd");
	sthx _g_bEnd
	.dbline 32
; 	
; 	
; 	
; 	memcpy((void *)PrgIOfRam, (void *)g_bBegin, g_bEnd - g_bBegin);
	lda *_g_bEnd+1
	sub *_g_bBegin+1
	sta *__r1
	lda *_g_bEnd
	sbc *_g_bBegin
	sta *__r0
	lda *__r1
	psha
	lda *__r0
	psha
	lda *_g_bBegin+1
	psha
	lda *_g_bBegin
	psha
	lda #<_PrgIOfRam
	psha
	lda #>_PrgIOfRam
	psha
	jsr _memcpy
	ais #6
	tsx
	.dbline 35
; 	
; 
; 	asm("ldhx #_PrgIOfRam");
	ldhx #_PrgIOfRam
	.dbline 36
; 	asm("jsr ,x");
	jsr ,x
	.dbline -2
L2:
	.dbline 0 ; func end
	rts
	.dbsym l address 2 pc
	.dbend
	.dbfunc s DoEraseFlash _DoEraseFlash fV
;              i -> 0,X
_DoEraseFlash:
	.dbline -1
	ais #-1
	tsx
	.dbline 39
; }
; static void 	DoEraseFlash(void)
; {
	.dbline 41
; 	UINT8 i;
; 	FLCR = 0b00000010;
	lda #2
	sta 0xfe08
	.dbline 42
; 	i = FLBPR;
	lda 0xff7e
	sta ,X
	.dbline 43
; 	*((volatile UINT8*)g_pAddress) = 68;
	lda #68
	ldhx *_g_pAddress
	sta ,x
	tsx
	.dbline 44
; 	asm("bsr _Delay1");
	bsr _Delay1
	.dbline 45
; 	FLCR = 0b00001010;
	lda #10
	sta 0xfe08
	.dbline 46
; 	asm("bsr _Delay1");
	bsr _Delay1
	.dbline 47
; 	FLCR = 0b00001000;
	lda #8
	sta 0xfe08
	.dbline 48
; 	asm("bsr _Delay1");
	bsr _Delay1
	.dbline 49
; 	FLCR = 0b00000000;	
	clra
	sta 0xfe08
	.dbline 50
; 	asm("bsr _Delay1");
	bsr _Delay1
	.dbline -2
L3:
	ais #1
	.dbline 0 ; func end
	rts
	.dbsym l i 0 c
	.dbend
	.dbfunc s Delay1 _Delay1 fV
;              i -> 0,X
_Delay1:
	.dbline -1
	ais #-1
	tsx
	.dbline 53
; }
; static void Delay1(void)
; {
	.dbline 55
	clr ,X
	bra L8
L5:
	.dbline 55
L6:
	.dbline 55
	inc ,X
L8:
	.dbline 55
; 	UINT8 i;
; 	for(i = 0; i < 10; ++i);
	lda ,X
	cmp #10
	blo L5
	.dbline -2
L4:
	ais #1
	.dbline 0 ; func end
	rts
	.dbsym l i 0 c
	.dbend
	.dbfunc s EraseFlash_End _EraseFlash_End fV
_EraseFlash_End:
	.dbline -1
	.dbline 58
; }
; static void EraseFlash_End(void)
; {
	.dbline -2
L9:
	.dbline 0 ; func end
	rts
	.dbend
	.dbfunc e WriteFlash _WriteFlash fV
;              n -> 6,X
;           data -> 4,X
;        address -> 2,X
_WriteFlash::
	.dbline -1
	tsx
	.dbline 61
; }
; void	WriteFlash(UINT8 *address, UINT8 *data, int n)
; {
	.dbline 62
; 	g_pAddress = address;
	lda 2,X
	sta *_g_pAddress
	lda 3,X
	sta *_g_pAddress+1
	.dbline 63
; 	g_pData = data;
	lda 4,X
	sta *_g_pData
	lda 5,X
	sta *_g_pData+1
	.dbline 64
; 	g_nNum = n;
	lda 7,X
	sta *_g_nNum
	.dbline 66
; 
; 	asm("ldhx #_DoWriteFlash");
	ldhx #_DoWriteFlash
	.dbline 67
; 	asm("sthx _g_bBegin");
	sthx _g_bBegin
	.dbline 68
; 	asm("ldhx #_WriteFlash_End");
	ldhx #_WriteFlash_End
	.dbline 69
; 	asm("sthx _g_bEnd");
	sthx _g_bEnd
	.dbline 71
; 	
; 	memcpy((void *)PrgIOfRam, (void *)g_bBegin, g_bEnd - g_bBegin);
	lda *_g_bEnd+1
	sub *_g_bBegin+1
	sta *__r1
	lda *_g_bEnd
	sbc *_g_bBegin
	sta *__r0
	lda *__r1
	psha
	lda *__r0
	psha
	lda *_g_bBegin+1
	psha
	lda *_g_bBegin
	psha
	lda #<_PrgIOfRam
	psha
	lda #>_PrgIOfRam
	psha
	jsr _memcpy
	ais #6
	tsx
	.dbline 75
; 	
; 	
; 		
; 	asm("ldhx #_PrgIOfRam");
	ldhx #_PrgIOfRam
	.dbline 76
; 	asm("jsr ,x");
	jsr ,x
	.dbline -2
L10:
	.dbline 0 ; func end
	rts
	.dbsym l n 6 I
	.dbsym l data 4 pc
	.dbsym l address 2 pc
	.dbend
	.dbfunc s DoWriteFlash _DoWriteFlash fV
;              j -> 0,X
;              i -> 1,X
_DoWriteFlash:
	.dbline -1
	ais #-2
	tsx
	.dbline 82
; 	
; 	
; 	
; }
; static void 	DoWriteFlash(void)
; {
	.dbline 84
; 	UINT8 i, j;
; 	FLCR = 0b00000001;
	lda #1
	sta 0xfe08
	.dbline 85
; 	j = FLBPR;
	lda 0xff7e
	sta ,X
	.dbline 86
; 	*((volatile UINT8*)g_pAddress) = 68;
	lda #68
	ldhx *_g_pAddress
	sta ,x
	tsx
	.dbline 87
; 	asm("bsr _Delay2");
	bsr _Delay2
	.dbline 88
; 	FLCR = 0b00001001;
	lda #9
	sta 0xfe08
	.dbline 89
; 	asm("bsr _Delay2");
	bsr _Delay2
	.dbline 90
; 	for(j = 0 ;j < g_nNum; ++j)
	clr ,X
	bra L15
L12:
	.dbline 91
; 	{
	.dbline 92
; 		*((volatile UINT8*)g_pAddress + j) = g_pData[j];
	clr *__r0
	lda ,X
	add *_g_pData+1
	sta *__r1
	lda *__r0
	adc *_g_pData
	sta *__r0
	ldhx *__r0
	lda ,x
	tsx
	sta *__r1
	clr *__r2
	lda ,X
	add *_g_pAddress+1
	sta *__r3
	lda *__r2
	adc *_g_pAddress
	sta *__r2
	lda *__r1
	ldhx *__r2
	sta ,x
	tsx
	.dbline 93
	clr 1,X
	bra L19
L16:
	.dbline 93
L17:
	.dbline 93
	inc 1,X
L19:
	.dbline 93
	lda 1,X
	cmp #30
	blo L16
	.dbline 94
L13:
	.dbline 90
	inc ,X
L15:
	.dbline 90
	lda ,X
	cmp *_g_nNum
	blo L12
	.dbline 95
; 		for(i = 0; i < 30; ++i);
; 	}
; 	FLCR = 0b00001000;
	lda #8
	sta 0xfe08
	.dbline 96
; 	asm("bsr _Delay2");
	bsr _Delay2
	.dbline 97
; 	FLCR = 0b00000000;	
	clra
	sta 0xfe08
	.dbline 98
; 	asm("bsr _Delay2");
	bsr _Delay2
	.dbline -2
L11:
	ais #2
	.dbline 0 ; func end
	rts
	.dbsym l j 0 c
	.dbsym l i 1 c
	.dbend
	.dbfunc s Delay2 _Delay2 fV
;              i -> 0,X
_Delay2:
	.dbline -1
	ais #-1
	tsx
	.dbline 102
; 	
; }
; static void Delay2(void)
; {
	.dbline 104
	clr ,X
	bra L24
L21:
	.dbline 104
L22:
	.dbline 104
	inc ,X
L24:
	.dbline 104
; 	UINT8 i;
; 	for(i = 0; i < 10; ++i);
	lda ,X
	cmp #10
	blo L21
	.dbline -2
L20:
	ais #1
	.dbline 0 ; func end
	rts
	.dbsym l i 0 c
	.dbend
	.dbfunc s WriteFlash_End _WriteFlash_End fV
_WriteFlash_End:
	.dbline -1
	.dbline 107
; }
; static void WriteFlash_End(void)
; {
	.dbline -2
L25:
	.dbline 0 ; func end
	rts
	.dbend
	.area bss
	.dbfile flash.c
_g_nNum:
	.blkb 1
	.dbsym s g_nNum _g_nNum c
_g_pData:
	.blkb 2
	.dbsym s g_pData _g_pData pc
_g_pAddress:
	.blkb 2
	.dbsym s g_pAddress _g_pAddress pc
_g_bEnd:
	.blkb 2
	.dbsym s g_bEnd _g_bEnd i
_g_bBegin:
	.blkb 2
	.dbsym s g_bBegin _g_bBegin i
_PrgIOfRam::
	.blkb 1
	.dbsym e PrgIOfRam _PrgIOfRam A[1:1]c

⌨️ 快捷键说明

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