📄 39sf020.lst
字号:
C51 COMPILER V8.05a 39SF020 12/16/2008 16:46:32 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE 39SF020
OBJECT MODULE PLACED IN 39SF020.OBJ
COMPILER INVOKED BY: C:\Keil V3\C51\BIN\C51.EXE 39SF020.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <absacc.h>
2 #include <INTRINS.H>
3 #include <39SF020.h>
4
5 extern unsigned char Read39SF02abyte(unsigned char H_addr,unsigned int L_addr);//读一个字节数据
6 extern void Write39SF02abyte(unsigned char H_addr,unsigned int L_addr,unsigned char W_Data);//写一个字节数
-据
7 extern void SectorErase(unsigned char H_addr,unsigned int SectorAddr);//扇区擦除
8 extern void ChipErase();//整片擦除
9
10
11 void delay_10us(unsigned int us)
12 {
13 1 while(us--)
14 1 {
15 2 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
16 2 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
17 2 }
18 1 }
19
20 void delay_Nms(unsigned int ms)
21 {
22 1 unsigned int i;
23 1 while(ms--)
24 1 {
25 2 i=252;
26 2 while(i--);
27 2 }
28 1
29 1 }
30
31 /***********************************************************************************/
32
33 /* 选择 39C020 段地址(高位地址),seg 为段地址*/
34 void select_segment(unsigned char seg)
35 {
36 1 P1&=0xfc;
37 1 switch(seg)
38 1 {
39 2 case 0: P1|=0x00; break; // 39c020 a17a16= 000 00000-0ffff
40 2 case 1: P1|=0x01; break; // 39c020 a17a16= 001 10000-1ffff
41 2 case 2: P1|=0x02; break; // 39c020 a17a16= 010 20000-2ffff
42 2 case 3: P1|=0x03; break; // 39c020 a17a16= 011 30000-3ffff
43 2 }
44 1 }
45 /*
46 void select_segment(unsigned char seg)
47 {
48 P4&=0xfc;
49 switch(seg)
50 {
51 case 0: P4|=0x00; break; // 39c020 a17a16= 000 00000-0ffff
52 case 1: P4|=0x01; break; // 39c020 a17a16= 001 10000-1ffff
53 case 2: P4|=0x02; break; // 39c020 a17a16= 010 20000-2ffff
54 case 3: P4|=0x03; break; // 39c020 a17a16= 011 30000-3ffff
C51 COMPILER V8.05a 39SF020 12/16/2008 16:46:32 PAGE 2
55 }
56 }
57 */
58 void protect() //解除保护
59 {
60 1 select_segment(0);/*必须写到第0段*/
61 1 XBYTE[0x5555]=0xaa;
62 1 delay_10us(2);
63 1 XBYTE[0x2aaa]=0x55;
64 1 delay_10us(2);
65 1 XBYTE[0x5555]=0xa0;
66 1 delay_10us(2);
67 1 }
68 /*************39SF020扇区分布****************
69 地址从00000-3FFFF
70 每个扇区大小是:4Kbytes 哪么:
71 0扇区:0 0000-0 0FFF 1扇区:0 1000-0 1FFF
72 2扇区:0 2000-0 2FFF 3扇区:0 3000-0 3FFF
73 4扇区:0 4000-0 4FFF 5扇区:0 5000-0 5FFF
74 ........
75 62扇区:3 E000-3 EFFF 63扇区:3 F000-3 FFFF
76
77
78 ********************************************/
79
80 void SectorErase(unsigned char H_addr,unsigned int SectorAddr)//扇区擦除
81 {
82 1 select_segment(H_addr); /*设置高位*/
83 1 CE=0;
84 1 XBYTE[0x5555]=0xaa;
85 1 delay_10us(2);
86 1 XBYTE[0x2aaa]=0x55;
87 1 delay_10us(2);
88 1 XBYTE[0x5555]=0x80;
89 1 delay_10us(2);
90 1 XBYTE[0x5555]=0xAA;
91 1 delay_10us(2);
92 1 XBYTE[0x2AAA]=0x55;
93 1 delay_10us(2);
94 1 XBYTE[SectorAddr]=0x30;
95 1 delay_10us(2);
96 1 CE=1;
97 1 delay_Nms(30);
98 1 }
99
100 void ChipErase()//整片擦除
101 {
102 1 select_segment(0);/*必须写到第0段*/
103 1 CE=0;
104 1 XBYTE[0x5555]=0xaa;
105 1 delay_10us(4);
106 1 XBYTE[0x2aaa]=0x55;
107 1 delay_10us(4);
108 1 XBYTE[0x5555]=0x80;
109 1 delay_10us(4);
110 1 XBYTE[0x5555]=0xAA;
111 1 delay_10us(4);
112 1 XBYTE[0x2AAA]=0x55;
113 1 delay_10us(4);
114 1 XBYTE[0x5555]=0x10;
115 1 delay_10us(4);
116 1 CE=1;
C51 COMPILER V8.05a 39SF020 12/16/2008 16:46:32 PAGE 3
117 1 delay_Nms(100);
118 1 }
119
120 unsigned char Read39SF02abyte(unsigned char H_addr,unsigned int L_addr)//读数据
121 {
122 1 unsigned char Data;
123 1 //unsigned char i;
124 1 CE=0;
125 1 select_segment(H_addr&0x03); /*s_sector 是256的整数倍*/
126 1 _nop_();_nop_();_nop_();_nop_();_nop_();
127 1 Data=XBYTE[L_addr];
128 1 CE=1;
129 1 return Data;
130 1 }
131 void Write39SF02abyte(unsigned char H_addr,unsigned int L_addr,unsigned char W_Data) //写数据
132 {
133 1 CE=0;
134 1 protect(); //解除保护
135 1 select_segment(H_addr&0x03); /*s_sector 是256的整数倍*/
136 1 XBYTE[L_addr]=W_Data; //高位
137 1 delay_10us(2);
138 1 CE=1;
139 1 }
140
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 318 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
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 + -