📄 block0.lst
字号:
174 =1 sbit WDT = WDTC^1;
175 =1 sbit SWDT = WDTC^0;
176 =1
177 =1 /* IEA */
178 =1 sbit EBO = IEA^3;
179 =1
180 =1 /* IPH */
181 =1 sbit PBO = IPA^3;
182 =1
26
27 extern void Flash_Block0_byte_program(unsigned short int dataAddr, unsigned char dataByte);
28
29 /*********************************************************************************************************
-**
30 * 字节编程函数---Flash_Block1_byte_program() //对MCU内部FLASH的Block1区域单字节编程函数
31 * 输入参数: dataAddr---编程的字节地址
32 * 输入参数: dataByte---编程的数据
33 **********************************************************************************************************
-*/
34 void Flash_Block1_byte_program(unsigned short int dataAddr, unsigned char dataByte)
35 {
36 1 unsigned short int destAddr = dataAddr;
37 1 SFCF = SFCF | 0x41; // SFCF.6=1: IAP功能使能, SFCF.0=1: 选择Block1
38 1 SFAH = destAddr>>8; // 将扇区地址的高8位装入FLASH的高8位地址寄存器(SFAH)中
39 1 SFAL = destAddr; // 将扇区地址的低8位装入FLASH的低8位地址寄存器(SFAL)中
40 1 SFDT = dataByte; // 在FLASH的数据寄存器(SFDT)中填入编程的数据--dataByte
41 1 SFCM = 0x0e; // 在FLASH的命令寄存器(SFCM)中填入字节编程命令--SFCM_PB=0X0E
42 1 while (SFST&0x04); //SFST.2=0:IAP操作完成
43 1 SFCF = SFCF & ~0x40; // SFCF.6=0: IAP功能禁止
44 1 SFDT = 0; //清除原来的FLASH数据寄存器,
45 1 }
46
47 void main(void)
48 {
49 1 unsigned int addr_flash;
50 1 unsigned char i;
51 1
52 1 addr_flash=0x0800; //针对SST89E516RD的BLOCK1的地址(0x0000-0x1fff);如是SST89E52-58RD,BLOCK1地址应在0xe0
-00-0xffff之间
53 1 for ( i=0; i<0x40; i++) //对Block1的FLASH的0x0800--0x083f地址范围内单元连续写入0x21--0x60的数据,
54 1 { //运行后可用编程器查看FLASH编程的结果
55 2 Flash_Block1_byte_program(addr_flash,i+0x21);
C51 COMPILER V7.50 BLOCK0 11/17/2005 23:12:25 PAGE 5
56 2 addr_flash++;
57 2 }
58 1
59 1 addr_flash=0x0a00;
60 1 for ( i=0; i<0x40; i++) //对Block0的FLASH的0x0a00--0x0a3f地址范围内单元连续写入0x31--0x70的数据,
61 1 { //运行后可用编程器查看FLASH编程的结果
62 2 Flash_Block0_byte_program(addr_flash,i+0x31);
63 2 addr_flash++;
64 2 }
65 1
66 1 while(1)
67 1 {
68 2 P1=0x55; //点亮P1口,指示编程完毕;
69 2 }
70 1
71 1 }
C51 COMPILER V7.50 BLOCK0 11/17/2005 23:12:25 PAGE 6
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _Flash_Block1_byte_program (BEGIN)
; SOURCE LINE # 34
;---- Variable 'dataByte' assigned to Register 'R5' ----
;---- Variable 'dataAddr' assigned to Register 'R6/R7' ----
; SOURCE LINE # 35
; SOURCE LINE # 36
;---- Variable 'destAddr' assigned to Register 'R2/R3' ----
0000 AB07 MOV R3,AR7
0002 AA06 MOV R2,AR6
; SOURCE LINE # 37
0004 43B141 ORL SFCF,#041H
; SOURCE LINE # 38
0007 8AB4 MOV SFAH,R2
; SOURCE LINE # 39
0009 8BB3 MOV SFAL,R3
; SOURCE LINE # 40
000B 8DB5 MOV SFDT,R5
; SOURCE LINE # 41
000D 75B20E MOV SFCM,#0EH
0010 ?C0001:
; SOURCE LINE # 42
0010 E5B6 MOV A,SFST
0012 20E2FB JB ACC.2,?C0001
0015 ?C0002:
; SOURCE LINE # 43
0015 53B1BF ANL SFCF,#0BFH
; SOURCE LINE # 44
0018 E4 CLR A
0019 F5B5 MOV SFDT,A
; SOURCE LINE # 45
001B 22 RET
; FUNCTION _Flash_Block1_byte_program (END)
; FUNCTION main (BEGIN)
; SOURCE LINE # 47
; SOURCE LINE # 48
; SOURCE LINE # 52
0000 750008 R MOV addr_flash,#08H
0003 750000 R MOV addr_flash+01H,#00H
; SOURCE LINE # 53
0006 E4 CLR A
0007 F500 R MOV i,A
0009 ?C0004:
; SOURCE LINE # 54
; SOURCE LINE # 55
0009 E500 R MOV A,i
000B 2421 ADD A,#021H
000D FD MOV R5,A
000E AF00 R MOV R7,addr_flash+01H
0010 AE00 R MOV R6,addr_flash
0012 120000 R LCALL _Flash_Block1_byte_program
; SOURCE LINE # 56
0015 0500 R INC addr_flash+01H
0017 E500 R MOV A,addr_flash+01H
0019 7002 JNZ ?C0013
001B 0500 R INC addr_flash
001D ?C0013:
; SOURCE LINE # 57
001D 0500 R INC i
C51 COMPILER V7.50 BLOCK0 11/17/2005 23:12:25 PAGE 7
001F E500 R MOV A,i
0021 C3 CLR C
0022 9440 SUBB A,#040H
0024 40E3 JC ?C0004
0026 ?C0005:
; SOURCE LINE # 59
0026 75000A R MOV addr_flash,#0AH
0029 750000 R MOV addr_flash+01H,#00H
; SOURCE LINE # 60
002C E4 CLR A
002D F500 R MOV i,A
002F ?C0007:
; SOURCE LINE # 61
; SOURCE LINE # 62
002F E500 R MOV A,i
0031 2431 ADD A,#031H
0033 FD MOV R5,A
0034 AF00 R MOV R7,addr_flash+01H
0036 AE00 R MOV R6,addr_flash
0038 120000 E LCALL _Flash_Block0_byte_program
; SOURCE LINE # 63
003B 0500 R INC addr_flash+01H
003D E500 R MOV A,addr_flash+01H
003F 7002 JNZ ?C0014
0041 0500 R INC addr_flash
0043 ?C0014:
; SOURCE LINE # 64
0043 0500 R INC i
0045 E500 R MOV A,i
0047 C3 CLR C
0048 9440 SUBB A,#040H
004A 40E3 JC ?C0007
004C ?C0010:
; SOURCE LINE # 66
; SOURCE LINE # 67
; SOURCE LINE # 68
004C 759055 MOV P1,#055H
; SOURCE LINE # 69
004F 80FB SJMP ?C0010
; FUNCTION main (END)
C51 COMPILER V7.50 BLOCK0 11/17/2005 23:12:25 PAGE 8
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
IP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B8H 1
SFAH . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B4H 1
SFCF . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B1H 1
CCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D8H 1
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
addr_flash . . . . . . . . . . . . . AUTO DATA U_INT 0000H 2
i. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0002H 1
SFAL . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B3H 1
SFCM . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B2H 1
SFDT . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B5H 1
WDTC . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C0H 1
SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
SFST . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B6H 1
_Flash_Block0_byte_program . . . . . . EXTERN CODE PROC ----- -----
_Flash_Block1_byte_program . . . . . . PUBLIC CODE PROC 0000H -----
dataAddr . . . . . . . . . . . . . . * REG * DATA U_INT 0006H 2
dataByte . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
destAddr . . . . . . . . . . . . . . * REG * DATA U_INT 0002H 2
IEA. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00E8H 1
IPA. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00F8H 1
T2CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C8H 1
PSW. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D0H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 109 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 3
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -