📄 sramfwr.lst
字号:
RC51 COMPILER V03.03.27, SRAMFWR 11/21/02 15:49:54 PAGE 1
QCW(0x00002F32)
WIN32 RC51 COMPILER V03.03.27, COMPILATION OF MODULE SRAMFWR
OBJECT MODULE PLACED IN d:\data\msc1210\ride\flashaccess\sramfwr\sramfwr.obj
COMPILER INVOKED BY: RC51.EXE D:\DATA\MSC1210\RIDE\FLASHACCESS\SRAMFWR\SRAMFWR.C
- OBJECT(D:\DATA\MSC1210\RIDE\FLASHACCESS\SRAMFWR\SRAMFWR.OBJ) PIN(D
-:\RIDE\INC) NOAM PR(D:\DATA\MSC1210\RIDE\FLASHACCESS\SRAMFWR\SRAMFW
-R.LST) CD SB OE(1) SM MODAMD(DP2) FP(NOFLOAT) PW(80) NOIS UNSIGNEDC
-HAR ET(CHAR)
stmt level source
1 // Texas Instruments
2 // Name: SRAMFWR.c
3 // Revision: 1.0
4 // Description: Write/ErasePage Flash Data/Program using BootRom R
-outine
5 // Using MSC1210-DAQEVM
6 #include <REG1210.H>
7 #include <stdio.h>
8 #define FDM 1 // Flash Data Memory
9 #define FPM 0 // Flash Program Memory
10 extern void init_VonNeumann(void);
11 extern void write_flash_byte (int faddr, char fdata);
12 char write_flash_chk(int faddr, char fdata, char fdm)
13 { unsigned char ie, eicon, c;
14 1 ie=IE; eicon=EICON; //Backup Interrupt values
15 1 IE &= 0x7f; // Turn off EA;
16 1 EICON &= 0xdf; // Turn off AuxInt
17 1 MWS = !fdm; // redirect MOVX to program write for FPM
18 1 write_flash_byte(faddr,fdata);
19 1 MWS=0; EICON=eicon; IE=ie;
20 1 c=(fdm==FDM)?*(char xdata *) faddr: *(char code *) faddr;
21 1 if (fdata==c) return(0); else return(1);
22 1 }
23 char page_erase(int faddr, char fdata, char fdm)
24 { char i;
25 1 FMCON |= 0x40; // set flash page erase bit
26 1 i=write_flash_chk(faddr,fdata,fdm);
27 1 FMCON &= 0xbf; // clear flash page erase bit
28 1 return(i);
29 1 }
30
31 void main(void)
32 {
33 1 xdata char xchar _at_ 0x0400;
34 1 code char cchar _at_ 0x1000;
WARNING C217 IN LINE 34 OF sramfwr.c : 'cchar' local variable code qualified :
-'static' assumed
35 1 char error=0;
36 1 CKCON &= 0xf8; // 0 MOVX cycle stretch
37 1 PDCON &= 0xfd; // turn on sys timer
38 1 USEC = 2-1; // Flash Related Timer Setup
39 1 MSEC = 1843-1;
40 1 RCAP2 = 65535; // UART0 setup: 57600 Baud @ 1.8432MHz
41 1 T2CON = 0x34; // T2 as baudrate generator
42 1 SCON = 0x52; // Async mode 1, 8-bit UART, enable rcvr, TI
-=1, RI=0
43 1 printf("\x1b[46;37m\x1b[25C\x1b[2J");
44 1 printf("MSC1210 VonNeumann SRAM Routines for Flash Data/Program M
-emory Write/Erase\n");
45 1 init_VonNeumann();
46 1 if (!write_flash_chk(&xchar,0x55,FDM) && xchar==0x55 )
WARNING C207 IN LINE 46 OF sramfwr.c : suspicious pointer conversion
47 1 printf("Pass: Write Xdata 0x0400 with 0x55\n"); else error=1;
48 1 if (!page_erase(&xchar, 0xff, FDM) && xchar== 0xff)
WARNING C207 IN LINE 48 OF sramfwr.c : suspicious pointer conversion
49 1 printf("Pass: Erase Xdata 0x400~0x47F\n"); else error=1;
50 1 if (!write_flash_chk(&cchar,0xAA,FPM) && cchar==0xAA )
WARNING C207 IN LINE 50 OF sramfwr.c : suspicious pointer conversion
51 1 printf("Pass: Write Code 0x1000 with 0xAA\n"); else error=1;
52 1 if (!page_erase(&cchar, 0xff, FPM) && cchar== 0xff)
WARNING C207 IN LINE 52 OF sramfwr.c : suspicious pointer conversion
53 1 printf("Pass: Erase Code 0x1000~0x107F\n"); else error=1;
-
54 1 if (error==1) printf("Error found. Testing fail.\n");
55 1 while(1){;}
56 1 }
57
RC51 COMPILER V03.03.27, SRAMFWR 11/21/02 15:49:54 PAGE 2
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _write_flash_chk (BEGIN)
; SOURCE LINE # 12
0000 8E00 R MOV faddr,R6
0002 8F00 R MOV faddr+01H,R7
0004 8D00 R MOV fdata,R5
0006 8B00 R MOV fdm,R3
; SOURCE LINE # 14
0008 85A800 R MOV ie,IE
000B 85D800 R MOV eicon,EICON
; SOURCE LINE # 15
000E 53A87F ANL IE,#07FH
; SOURCE LINE # 16
0011 53D8DF ANL EICON,#0DFH
; SOURCE LINE # 17
0014 E500 R MOV A,fdm
0016 24FF ADD A,#0FFH
0018 B3 CPL C
0019 E4 CLR A
001A 33 RLC A
001B F58F MOV MWS,A
; SOURCE LINE # 18
001D 120000 R LCALL _write_flash_byte
; SOURCE LINE # 19
0020 758F00 MOV MWS,#000H
0023 8500D8 R MOV EICON,eicon
0026 8500A8 R MOV IE,ie
; R6 is assigned to c
; SOURCE LINE # 20
0029 E500 R MOV A,fdm
002B AB00 R MOV R3,fdm
002D 7A00 MOV R2,#000H
002F 6401 XRL A,#001H
0031 700B JNZ ?ELSE2
0033 850083 R MOV DPH,faddr
0036 850082 R MOV DPL,faddr+01H
0039 E0 MOVX A,@DPTR
003A FE MOV R6,A
003B FB MOV R3,A
003C 8009 SJMP ?NXT2
003E ?ELSE2:
003E 850083 R MOV DPH,faddr
0041 850082 R MOV DPL,faddr+01H
0044 E4 CLR A
0045 93 MOVC A,@A+DPTR
0046 FE MOV R6,A
0047 ?NXT2:
; SOURCE LINE # 21
0047 E500 R MOV A,fdata
0049 B50603 CJNE A,AR6,?ELSE3
004C E4 CLR A
004D FF MOV R7,A
004E 22 RET
004F ?ELSE3:
004F 7F01 MOV R7,#001H
0051 22 RET
; FUNCTION _write_flash_chk (END)
; FUNCTION _page_erase (BEGIN)
; SOURCE LINE # 23
0000 8E00 R MOV faddr,R6
0002 8F00 R MOV faddr+01H,R7
; Register R5 is assigned to parameter fdata
; Register R4 is assigned to parameter fdm
; SOURCE LINE # 25
0004 43EE40 ORL FMCON,#040H
; SOURCE LINE # 26
0007 120000 R LCALL _write_flash_chk
000A 8F00 R MOV i,R7
; SOURCE LINE # 27
000C 53EEBF ANL FMCON,#0BFH
; SOURCE LINE # 28
000F AF00 R MOV R7,i
0011 22 RET
; FUNCTION _page_erase (END)
; FUNCTION main (BEGIN)
; SOURCE LINE # 35
0000 750000 R MOV error,#000H
; SOURCE LINE # 36
0003 538EF8 ANL CKCON,#0F8H
; SOURCE LINE # 37
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -