📄 sst39flash.lst
字号:
C51 COMPILER V7.06 SST39FLASH 11/29/2004 16:44:52 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE SST39FLASH
OBJECT MODULE PLACED IN SST39Flash.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE SST39Flash.c OPTIMIZE(4,SPEED) DEBUG OBJECTEXTEND CODE
stmt level source
1 /*********************************************************************
2
3 (c) copyright Extell Company 2001
4 ALL RIGHTS RESERVED
5
6 *********************************************************************
7 ESR-700 Demonstration Program for Voice Recognition Application
8 *********************************************************************
9
10 File: SST39Flash.c
11
12 Project: ESR-700 demo program for Voice Recognition Application
13
14 Description: SST Flash memory Fuctions
15
16 Date: Sep. 2001
17
18 ********************************************************************/
19 #include "main.h"
20 #include "extell51.h"
21
22
23 #define UNLOCK1_OFFSET 0x5555
24 #define UNLOCK2_OFFSET 0x2aaa
25 #define COMMAND_OFFSET 0x5555
26
27 #define FLASH_CMD_UNLOCK1 0xAA
28 #define FLASH_CMD_UNLOCK2 0x55
29 #define FLASH_CMD_READ_RESET 0xF0
30 #define FLASH_CMD_AUTOSELECT 0x90
31 #define FLASH_CMD_BYTE_PROGRAM 0xA0
32 #define FLASH_CMD_ERASE_SETUP 0x80
33 #define FLASH_CMD_CHIP_ERASE 0x10
34 #define FLASH_CMD_SECTOR_ERASE 0x30
35 #define FLASH_CMD_ERASE_SUSPEND 0xB0
36 #define FLASH_CMD_ERASE_RESUME 0x30
37
38 #define DQ7 0x80
39 #define DQ6 0x40
40 #define DQ5 0x20
41 void FlashWrite(unsigned int addr, unsigned char fdata);
42 unsigned char FlashWriteConfirm(unsigned int addr, unsigned char fdata);
43 unsigned char ChipErase(void);
44 unsigned char SectorErase(unsigned int SectorAddr);
45
46
47 void FlashWrite(unsigned int addr, unsigned char fdata)
48 {
49 1 write_XDATA(UNLOCK1_OFFSET,FLASH_CMD_UNLOCK1);
50 1 write_XDATA(UNLOCK2_OFFSET,FLASH_CMD_UNLOCK2);
51 1 write_XDATA(COMMAND_OFFSET,FLASH_CMD_BYTE_PROGRAM);
52 1 write_XDATA(addr,fdata);
53 1 }
54
55
C51 COMPILER V7.06 SST39FLASH 11/29/2004 16:44:52 PAGE 2
56 unsigned char SectorErase(unsigned int SectorAddr)
57 {
58 1 unsigned char data prev,next;
59 1 bit PollingCheck=0;
60 1 write_XDATA(UNLOCK1_OFFSET,FLASH_CMD_UNLOCK1);
61 1 write_XDATA(UNLOCK2_OFFSET,FLASH_CMD_UNLOCK2);
62 1 write_XDATA(COMMAND_OFFSET,FLASH_CMD_ERASE_SETUP);
63 1 write_XDATA(UNLOCK1_OFFSET,FLASH_CMD_UNLOCK1);
64 1 write_XDATA(UNLOCK2_OFFSET,FLASH_CMD_UNLOCK2);
65 1 write_XDATA(SectorAddr,FLASH_CMD_SECTOR_ERASE);
66 1 prev = read_XDATA(0);
67 1 next= read_XDATA(0);
68 1 while((prev&DQ6)!= (next&DQ6))
69 1 {
70 2 prev = next;
71 2 next= read_XDATA(0);
72 2 if(next&DQ7) PollingCheck = 1;
73 2 }
74 1 if(!PollingCheck)
75 1 {
76 2 next= read_XDATA(0);
77 2 if(next&DQ7) return(OK);
78 2 else return(ERROR);
79 2 }
80 1 return(OK);
81 1 }
C51 COMPILER V7.06 SST39FLASH 11/29/2004 16:44:52 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _FlashWrite (BEGIN)
; SOURCE LINE # 47
;---- Variable 'fdata' assigned to Register 'R5' ----
;---- Variable 'addr' assigned to Register 'R6/R7' ----
; SOURCE LINE # 48
; SOURCE LINE # 49
0000 905555 MOV DPTR,#05555H
0003 74AA MOV A,#0AAH
0005 F0 MOVX @DPTR,A
; SOURCE LINE # 50
0006 902AAA MOV DPTR,#02AAAH
0009 7455 MOV A,#055H
000B F0 MOVX @DPTR,A
; SOURCE LINE # 51
000C 905555 MOV DPTR,#05555H
000F 74A0 MOV A,#0A0H
0011 F0 MOVX @DPTR,A
; SOURCE LINE # 52
0012 8F82 MOV DPL,R7
0014 8E83 MOV DPH,R6
0016 ED MOV A,R5
0017 F0 MOVX @DPTR,A
; SOURCE LINE # 53
0018 22 RET
; FUNCTION _FlashWrite (END)
; FUNCTION _SectorErase (BEGIN)
; SOURCE LINE # 56
;---- Variable 'SectorAddr' assigned to Register 'R6/R7' ----
; SOURCE LINE # 57
; SOURCE LINE # 59
0000 C200 R CLR PollingCheck
; SOURCE LINE # 60
0002 905555 MOV DPTR,#05555H
0005 74AA MOV A,#0AAH
0007 F0 MOVX @DPTR,A
; SOURCE LINE # 61
0008 902AAA MOV DPTR,#02AAAH
000B 7455 MOV A,#055H
000D F0 MOVX @DPTR,A
; SOURCE LINE # 62
000E 905555 MOV DPTR,#05555H
0011 7480 MOV A,#080H
0013 F0 MOVX @DPTR,A
; SOURCE LINE # 63
0014 74AA MOV A,#0AAH
0016 F0 MOVX @DPTR,A
; SOURCE LINE # 64
0017 902AAA MOV DPTR,#02AAAH
001A 7455 MOV A,#055H
001C F0 MOVX @DPTR,A
; SOURCE LINE # 65
001D 8F82 MOV DPL,R7
001F 8E83 MOV DPH,R6
0021 7430 MOV A,#030H
0023 F0 MOVX @DPTR,A
; SOURCE LINE # 66
0024 900000 MOV DPTR,#00H
0027 E0 MOVX A,@DPTR
C51 COMPILER V7.06 SST39FLASH 11/29/2004 16:44:52 PAGE 4
0028 FF MOV R7,A
;---- Variable 'prev' assigned to Register 'R7' ----
; SOURCE LINE # 67
0029 E0 MOVX A,@DPTR
002A FE MOV R6,A
;---- Variable 'next' assigned to Register 'R6' ----
002B ?C0002:
; SOURCE LINE # 68
002B EE MOV A,R6
002C 5440 ANL A,#040H
002E FD MOV R5,A
002F EF MOV A,R7
0030 5440 ANL A,#040H
0032 6D XRL A,R5
0033 600E JZ ?C0003
; SOURCE LINE # 69
; SOURCE LINE # 70
0035 AF06 MOV R7,AR6
; SOURCE LINE # 71
0037 900000 MOV DPTR,#00H
003A E0 MOVX A,@DPTR
003B FE MOV R6,A
; SOURCE LINE # 72
003C 30E7EC JNB ACC.7,?C0002
003F D200 R SETB PollingCheck
; SOURCE LINE # 73
0041 80E8 SJMP ?C0002
0043 ?C0003:
; SOURCE LINE # 74
0043 20000D R JB PollingCheck,?C0005
; SOURCE LINE # 75
; SOURCE LINE # 76
0046 900000 MOV DPTR,#00H
0049 E0 MOVX A,@DPTR
; SOURCE LINE # 77
004A 30E703 JNB ACC.7,?C0006
004D 7F00 MOV R7,#00H
004F 22 RET
0050 ?C0006:
; SOURCE LINE # 78
0050 7F01 MOV R7,#01H
0052 22 RET
; SOURCE LINE # 79
0053 ?C0005:
; SOURCE LINE # 80
0053 7F00 MOV R7,#00H
; SOURCE LINE # 81
0055 ?C0007:
0055 22 RET
; FUNCTION _SectorErase (END)
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 111 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILER V7.06 SST39FLASH 11/29/2004 16:44:52 PAGE 5
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -