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

📄 flash.lst

📁 项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档
💻 LST
📖 第 1 页 / 共 2 页
字号:
    9195 CD 912B      jsr	_SCIRe1
    9198 A7 02        aiS	#2
    919A 95           tSX	
    919B B7 41        stA	*__r1
    919D E6 02        ldA	2,X
    919F EB 07        add	7,X
    91A1 B7 43        stA	*__r3
    91A3 E6 01        ldA	1,X
    91A5 E9 06        adc	6,X
    91A7 B7 42        stA	*__r2
    91A9 B6 41        ldA	*__r1
    91AB 55 42        ldHX	*__r2
    91AD F7           stA	0,X
    91AE 95           tSX	
(0058) 		ch[m]=SCIRe1(&fp); 
(0059) 		if (fp == 1) return 1;
    91AF F6           ldA	0,X
    91B0 A1 01        cmp	#1
    91B2 26 04        bne	0x91B8
    91B4 A6 01        ldA	#1
    91B6 20 22        bra	0x91DA
(0060) 		m ++;
    91B8 E6 02        ldA	2,X
    91BA AB 01        add	#1
    91BC E7 02        stA	2,X
    91BE E6 01        ldA	1,X
    91C0 A9 00        adc	#0
    91C2 E7 01        stA	1,X
(0061) 	}
    91C4 3F 40        clr	*__r0
    91C6 E6 05        ldA	5,X
    91C8 B7 41        stA	*__r1
    91CA E6 02        ldA	2,X
    91CC B7 43        stA	*__r3
    91CE E6 01        ldA	1,X
    91D0 B7 42        stA	*__r2
    91D2 55 42        ldHX	*__r2
    91D4 75 40        cpHX	*__r0
    91D6 95           tSX	
    91D7 91 BA        blt	0x9193
(0062) 	return 0;	 
    91D9 4F           clrA	
    91DA A7 03        aiS	#3
    91DC 81           rts	
FILE: SCIInit.c
(0001) #include "GP32C.H"
(0002) #include "SCIInit.H"
(0003) void SCIInit(void)
(0004)  {  //总线频率fBUS=2.4576MHz,定义波特率Bt=9600
_SCIInit:
    91DD A6 02        ldA	#2
    91DF B7 19        stA	0x19
(0005)     SCBR=0b00000010;
(0006)     //设置允许SCI,正常码输出、8位数据、无校验
(0007)     SCC1=0b01000000; 
    91E1 A6 40        ldA	#64
    91E3 B7 13        stA	0x13
(0008)     //设置允许发送、允许接收,查询方式收发     
(0009)     SCC2=0b00001100;        
    91E5 A6 0C        ldA	#12
    91E7 B7 14        stA	0x14
    91E9 81           rts	
(0010)  }
(0011) void SCIOpen(void)
(0012) {
_SCIOpen:
    91EA 1A 14        Bset	5,0x14
    91EC 81           rts	
_SetProtectAddress:
  address              --> X+2
    91ED 95           tSX	
FILE: flash.c
(0001) #include "flash.h"
(0002) #include "GP32C.h"
(0003) #include <string.h>
(0004) static void 	Delay1(void);
(0005) static void 	Delay2(void);
(0006) static void 	DoEraseFlash(void);
(0007) static void 	DoWriteFlash(void);
(0008) static void 	EraseFlash_End(void);
(0009) static void 	WriteFlash_End(void);
(0010) UINT8 	PrgIOfRam[];
(0011) static UINT16 	g_bBegin, g_bEnd;
(0012) static UINT8 	*g_pAddress;
(0013) 
(0014) static UINT8 	*g_pData;
(0015) static UINT8 	g_nNum;
(0016) 
(0017) void	SetProtectAddress(UINT8 address)
(0018) {
    91EE E6 02        ldA	2,X
    91F0 C7 FF7E      stA	0xFF7E
    91F3 81           rts	
_EraseFlash:
  address              --> X+2
    91F4 95           tSX	
(0019) 	FLBPR = address;
(0020) }
(0021) void	EraseFlash(UINT8 *address)
(0022) {
    91F5 E6 02        ldA	2,X
    91F7 B7 8A        stA	0xFFFFFF8A
    91F9 E6 03        ldA	3,X
    91FB B7 8B        stA	0xFFFFFF8B
(0023) 	g_pAddress = address;
(0024) 
(0025) 	asm("ldhx #_DoEraseFlash");
    91FD 45 9230      ldHX	#0x9230
(0026) 	asm("sthx _g_bBegin");
    9200 35 8E        stHX	0xFFFFFF8E
(0027) 	asm("ldhx #_EraseFlash_End");
    9202 45 926A      ldHX	#0x926A
(0028) 	asm("sthx _g_bEnd");
    9205 35 8C        stHX	0xFFFFFF8C
(0029) 	
(0030) 	
(0031) 	
(0032) 	memcpy((void *)PrgIOfRam, (void *)g_bBegin, g_bEnd - g_bBegin);
    9207 B6 8D        ldA	0xFFFFFF8D
    9209 B0 8F        sub	0xFFFFFF8F
    920B B7 41        stA	*__r1
    920D B6 8C        ldA	0xFFFFFF8C
    920F B2 8E        sbc	0xFFFFFF8E
    9211 B7 40        stA	*__r0
    9213 B6 41        ldA	*__r1
    9215 87           pshA	
    9216 B6 40        ldA	*__r0
    9218 87           pshA	
    9219 B6 8F        ldA	0xFFFFFF8F
    921B 87           pshA	
    921C B6 8E        ldA	0xFFFFFF8E
    921E 87           pshA	
    921F A6 90        ldA	#-112
    9221 87           pshA	
    9222 A6 00        ldA	#0
    9224 87           pshA	
    9225 CD 9329      jsr	_memcpy
    9228 A7 06        aiS	#6
    922A 95           tSX	
(0033) 	
(0034) 
(0035) 	asm("ldhx #_PrgIOfRam");
    922B 45 0090      ldHX	#0x0090
(0036) 	asm("jsr ,x");
    922E FD           jsr	0,X
    922F 81           rts	
_DoEraseFlash:
  i                    --> X+0
    9230 A7 FF        aiS	#-1
    9232 95           tSX	
(0037) }
(0038) static void 	DoEraseFlash(void)
(0039) {
    9233 A6 02        ldA	#2
    9235 C7 FE08      stA	0xFE08
(0040) 	UINT8 i;
(0041) 	FLCR = 0b00000010;
(0042) 	i = FLBPR;
    9238 C6 FF7E      ldA	0xFF7E
    923B F7           stA	0,X
(0043) 	*((volatile UINT8*)g_pAddress) = 68;
    923C A6 44        ldA	#68
    923E 55 8A        ldHX	0xFFFFFF8A
    9240 F7           stA	0,X
    9241 95           tSX	
(0044) 	asm("bsr _Delay1");
    9242 AD 17        bsr	0x925B
(0045) 	FLCR = 0b00001010;
    9244 A6 0A        ldA	#10
    9246 C7 FE08      stA	0xFE08
(0046) 	asm("bsr _Delay1");
    9249 AD 10        bsr	0x925B
(0047) 	FLCR = 0b00001000;
    924B A6 08        ldA	#8
    924D C7 FE08      stA	0xFE08
(0048) 	asm("bsr _Delay1");
    9250 AD 09        bsr	0x925B
(0049) 	FLCR = 0b00000000;	
    9252 4F           clrA	
    9253 C7 FE08      stA	0xFE08
(0050) 	asm("bsr _Delay1");
    9256 AD 03        bsr	0x925B
    9258 A7 01        aiS	#1
    925A 81           rts	
_Delay1:
  i                    --> X+0
    925B A7 FF        aiS	#-1
    925D 95           tSX	
(0051) }
(0052) static void Delay1(void)
(0053) {
    925E 7F           clr	0,X
    925F 20 01        bra	0x9262
(0054) 	UINT8 i;
(0055) 	for(i = 0; i < 10; ++i);
    9261 7C           inc	0,X
    9262 F6           ldA	0,X
    9263 A1 0A        cmp	#10
    9265 25 FA        bcs	0x9261
    9267 A7 01        aiS	#1
    9269 81           rts	
(0056) }
(0057) static void EraseFlash_End(void)
(0058) {
_EraseFlash_End:
    926A 81           rts	
_WriteFlash:
  n                    --> X+6
  data                 --> X+4
  address              --> X+2
    926B 95           tSX	
(0059) }
(0060) void	WriteFlash(UINT8 *address, UINT8 *data, int n)
(0061) {
    926C E6 02        ldA	2,X
    926E B7 8A        stA	0xFFFFFF8A
    9270 E6 03        ldA	3,X
    9272 B7 8B        stA	0xFFFFFF8B
(0062) 	g_pAddress = address;
(0063) 	g_pData = data;
    9274 E6 04        ldA	4,X
    9276 B7 88        stA	0xFFFFFF88
    9278 E6 05        ldA	5,X
    927A B7 89        stA	0xFFFFFF89
(0064) 	g_nNum = n;
    927C E6 07        ldA	7,X
    927E B7 87        stA	0xFFFFFF87
(0065) 
(0066) 	asm("ldhx #_DoWriteFlash");
    9280 45 92B3      ldHX	#0x92B3
(0067) 	asm("sthx _g_bBegin");
    9283 35 8E        stHX	0xFFFFFF8E
(0068) 	asm("ldhx #_WriteFlash_End");
    9285 45 9328      ldHX	#0x9328
(0069) 	asm("sthx _g_bEnd");
    9288 35 8C        stHX	0xFFFFFF8C
(0070) 	
(0071) 	memcpy((void *)PrgIOfRam, (void *)g_bBegin, g_bEnd - g_bBegin);
    928A B6 8D        ldA	0xFFFFFF8D
    928C B0 8F        sub	0xFFFFFF8F
    928E B7 41        stA	*__r1
    9290 B6 8C        ldA	0xFFFFFF8C
    9292 B2 8E        sbc	0xFFFFFF8E
    9294 B7 40        stA	*__r0
    9296 B6 41        ldA	*__r1
    9298 87           pshA	
    9299 B6 40        ldA	*__r0
    929B 87           pshA	
    929C B6 8F        ldA	0xFFFFFF8F
    929E 87           pshA	
    929F B6 8E        ldA	0xFFFFFF8E
    92A1 87           pshA	
    92A2 A6 90        ldA	#-112
    92A4 87           pshA	
    92A5 A6 00        ldA	#0
    92A7 87           pshA	
    92A8 CD 9329      jsr	_memcpy
    92AB A7 06        aiS	#6
    92AD 95           tSX	
(0072) 	
(0073) 	
(0074) 		
(0075) 	asm("ldhx #_PrgIOfRam");
    92AE 45 0090      ldHX	#0x0090
(0076) 	asm("jsr ,x");
    92B1 FD           jsr	0,X
    92B2 81           rts	
_DoWriteFlash:
  j                    --> X+0
  i                    --> X+1
    92B3 A7 FE        aiS	#-2
    92B5 95           tSX	
(0077) 	
(0078) 	
(0079) 	
(0080) }
(0081) static void 	DoWriteFlash(void)
(0082) {
    92B6 A6 01        ldA	#1
    92B8 C7 FE08      stA	0xFE08
(0083) 	UINT8 i, j;
(0084) 	FLCR = 0b00000001;
(0085) 	j = FLBPR;
    92BB C6 FF7E      ldA	0xFF7E
    92BE F7           stA	0,X
(0086) 	*((volatile UINT8*)g_pAddress) = 68;
    92BF A6 44        ldA	#68
    92C1 55 8A        ldHX	0xFFFFFF8A
    92C3 F7           stA	0,X
    92C4 95           tSX	
(0087) 	asm("bsr _Delay2");
    92C5 AD 52        bsr	0x9319
(0088) 	FLCR = 0b00001001;
    92C7 A6 09        ldA	#9
    92C9 C7 FE08      stA	0xFE08
(0089) 	asm("bsr _Delay2");
    92CC AD 4B        bsr	0x9319
(0090) 	for(j = 0 ;j < g_nNum; ++j)
    92CE 7F           clr	0,X
    92CF 20 33        bra	0x9304
(0091) 	{
    92D1 3F 40        clr	*__r0
    92D3 F6           ldA	0,X
    92D4 BB 89        add	0xFFFFFF89
    92D6 B7 41        stA	*__r1
    92D8 B6 40        ldA	*__r0
    92DA B9 88        adc	0xFFFFFF88
    92DC B7 40        stA	*__r0
    92DE 55 40        ldHX	*__r0
    92E0 F6           ldA	0,X
    92E1 95           tSX	
    92E2 B7 41        stA	*__r1
    92E4 3F 42        clr	*__r2
    92E6 F6           ldA	0,X
    92E7 BB 8B        add	0xFFFFFF8B
    92E9 B7 43        stA	*__r3
    92EB B6 42        ldA	*__r2
    92ED B9 8A        adc	0xFFFFFF8A
    92EF B7 42        stA	*__r2
    92F1 B6 41        ldA	*__r1
    92F3 55 42        ldHX	*__r2
    92F5 F7           stA	0,X
    92F6 95           tSX	
(0092) 		*((volatile UINT8*)g_pAddress + j) = g_pData[j];
(0093) 		for(i = 0; i < 30; ++i);
    92F7 6F 01        clr	1,X
    92F9 20 02        bra	0x92FD
    92FB 6C 01        inc	1,X
    92FD E6 01        ldA	1,X
    92FF A1 1E        cmp	#30
    9301 25 F8        bcs	0x92FB
(0094) 	}
    9303 7C           inc	0,X
    9304 F6           ldA	0,X
    9305 B1 87        cmp	0xFFFFFF87
    9307 25 C8        bcs	0x92D1
(0095) 	FLCR = 0b00001000;
    9309 A6 08        ldA	#8
    930B C7 FE08      stA	0xFE08
(0096) 	asm("bsr _Delay2");
    930E AD 09        bsr	0x9319
(0097) 	FLCR = 0b00000000;	
    9310 4F           clrA	
    9311 C7 FE08      stA	0xFE08
(0098) 	asm("bsr _Delay2");
    9314 AD 03        bsr	0x9319
    9316 A7 02        aiS	#2
    9318 81           rts	
_Delay2:
  i                    --> X+0
    9319 A7 FF        aiS	#-1
    931B 95           tSX	
(0099) 	
(0100) }
(0101) static void Delay2(void)
(0102) {
    931C 7F           clr	0,X
    931D 20 01        bra	0x9320
(0103) 	UINT8 i;
(0104) 	for(i = 0; i < 10; ++i);
    931F 7C           inc	0,X
    9320 F6           ldA	0,X
    9321 A1 0A        cmp	#10
    9323 25 FA        bcs	0x931F
    9325 A7 01        aiS	#1
    9327 81           rts	
(0105) }
(0106) static void WriteFlash_End(void)
(0107) {
FILE: <library>
_WriteFlash_End:
    9328 81           rts	
_memcpy:
    9329 95           tSX	
    932A AF 02        aiX	#2
    932C 7E 40        mov	0,X+,*__r0
    932E 7E 41        mov	0,X+,*__r1
    9330 7E 42        mov	0,X+,*__r2
    9332 7E 43        mov	0,X+,*__r3
    9334 7E 44        mov	0,X+,*__r4
    9336 7E 45        mov	0,X+,*__r5
    9338 95           tSX	
    9339 55 44        ldHX	*__r4
    933B 65 0000      cpHX	#0x0000
    933E 27 18        beq	0x9358
    9340 55 42        ldHX	*__r2
    9342 E6 00        ldA	0,X
    9344 AF 01        aiX	#1
    9346 35 42        stHX	*__r2
    9348 55 40        ldHX	*__r0
    934A E7 00        stA	0,X
    934C AF 01        aiX	#1
    934E 35 40        stHX	*__r0
    9350 55 44        ldHX	*__r4
    9352 AF FF        aiX	#-1
    9354 35 44        stHX	*__r4
    9356 20 E3        bra	0x933B
    9358 95           tSX	
    9359 E6 02        ldA	2,X
    935B B7 40        stA	*__r0
    935D E6 03        ldA	3,X
    935F B7 41        stA	*__r1
    9361 81           rts	

⌨️ 快捷键说明

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