📄 flash.lst
字号:
C51 COMPILER V7.02b FLASH 03/06/2006 15:41:23 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE FLASH
OBJECT MODULE PLACED IN .\output\flash.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE flash.c LARGE BROWSE DEBUG OBJECTEXTEND TABS(3) OBJECT(.\output\flash.obj)
stmt level source
1 /************************************************************************************
2 * Copyright (c) 2004,西安铭朗电子科技有限责任公司
3 * All rights reserved.
4 *
5 * 文件名称: flash.C
6 * 文件标识: none
7 * 适用器件: w29c020
8 *
9 * 摘 要: 本文件是字库(GB2312)读写子程序;使用外部22.1184MHz晶振.
10 *
11 * 当前版本:1.2
12 * 作 者:张宁强
13 * 完成日期:2006年1月10日
14 *
15 * 历史版本:1.0
16 * 原作者 : 李林利 卢阳
17 * 完成日期:2005年6月1日
18 *************************************************************************************/
19
20 /************************************************************************************/
21 // 引用外部头文件
22
23 #include "c8051f040.h"
24 #include "flash.h"
25 #include "delay.h"
26
27 /************************************************************************************/
28
29 /************************************************************************************
30 * 函数名称:flash_write_protect;
31 *
32 * 函数功能描述:Flash写保护函数;1:打开保护进行读写,0:进入保护状态模式;
33 *
34 * 输入参数:Flash写保护开关;
35 *
36 * 返回数据:none;
37 *
38 * 注意: none;
39 ************************************************************************************/
40
41 void flash_write_protect(bool flag)
42 {
43 1 unsigned char xdata *ad;
44 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
45 1 SFRPAGE = SFR_PAGE_F; // set SFR page F
46 1
47 1 if(flag==0)
48 1 {
49 2 P4&=0xf5;
50 2 P4|=0x05;
51 2 ad=0xd555;
52 2 *ad=0xaa;
53 2
54 2 P4&=0xf2;
55 2 P4|=0x02;
C51 COMPILER V7.02b FLASH 03/06/2006 15:41:23 PAGE 2
56 2 ad=0xeaaa;
57 2 *ad=0x55;
58 2
59 2 P4&=0xf5;
60 2 P4|=0x05;
61 2 ad=0xd555;
62 2 *ad=0x80;
63 2
64 2 P4&=0xf5;
65 2 P4|=0x05;
66 2 ad=0xd555;
67 2 *ad=0xaa;
68 2
69 2 P4&=0xf2;
70 2 P4|=0x02;
71 2 ad=0xeaaa;
72 2 *ad=0x55;
73 2
74 2 P4&=0xf5;
75 2 P4|=0x05;
76 2 ad=0xd555;
77 2 *ad=0x20;
78 2
79 2 Delay_ms(10);
80 2 }
81 1 else
82 1 {
83 2 P4&=0xf5;
84 2 P4|=0x05;
85 2 ad=0xd555;
86 2 *ad=0xaa;
87 2
88 2 P4&=0xf2;
89 2 P4|=0x02;
90 2 ad=0xeaaa;
91 2 *ad=0x55;
92 2
93 2 P4&=0xf5;
94 2 P4|=0x05;
95 2 ad=0xd555;
96 2 *ad=0xa0;
97 2 }
98 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
99 1 }
100
101 /***********************************************************************************
102 * 函数名称:flash_chip_erase;
103 *
104 * 函数功能描述:Flash芯片擦除程序;
105 *
106 * 输入参数:none;
107 *
108 * 返回数据:none;
109 *
110 * 注意: none;
111 ************************************************************************************/
112
113 void flash_chip_erase(void)
114 {
115 1 unsigned char xdata *ad;
116 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
117 1 SFRPAGE = SFR_PAGE_F; // set SFR page F
C51 COMPILER V7.02b FLASH 03/06/2006 15:41:23 PAGE 3
118 1
119 1 P4&=0xf5;
120 1 P4|=0x05;
121 1 ad=0xd555;
122 1 *ad=0xaa;
123 1
124 1 P4&=0xf2;
125 1 P4|=0x02;
126 1 ad=0xeaaa;
127 1 *ad=0x55;
128 1
129 1 P4&=0xf5;
130 1 P4|=0x05;
131 1 ad=0xd555;
132 1 *ad=0x80;
133 1
134 1 P4&=0xf5;
135 1 P4|=0x05;
136 1 ad=0xd555;
137 1 *ad=0xaa;
138 1
139 1 P4&=0xf2;
140 1 P4|=0x02;
141 1 ad=0xeaaa;
142 1 *ad=0x55;
143 1
144 1 P4&=0xf5;
145 1 P4|=0x05;
146 1 ad=0xd555;
147 1 *ad=0x10;
148 1
149 1 Delay_ms(50);
150 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
151 1 }
152
153
154 /***********************************************************************************
155 * 函数名称:flash_write_byte;
156 *
157 * 函数功能描述:Flash写入字节函数程序;
158 *
159 * 输入参数:unsigned long类型地址,unsigned char类型数据;
160 *
161 * 返回数据:none;
162 *
163 * 注意: none;
164 ************************************************************************************/
165
166 void flash_write_byte(unsigned long address, unsigned char dat)
167 {
168 1 unsigned char xdata *x;
169 1 unsigned int temp;
170 1 unsigned char sec;
171 1 char data SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
172 1 SFRPAGE = SFR_PAGE_F; // set SFR page F
173 1 temp=address|0xc000;
174 1 sec=address>>14;
175 1 P4=sec;
176 1 x=temp;
177 1 *x=dat;
178 1 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
179 1 }
C51 COMPILER V7.02b FLASH 03/06/2006 15:41:23 PAGE 4
180
181 /***********************************************************************************
182 * 函数名称:flash_write_byte_save;
183 *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -