📄 exam1.lst
字号:
C51 COMPILER V7.02a EXAM1 11/26/2005 12:26:59 PAGE 1
C51 COMPILER V7.02a, COMPILATION OF MODULE EXAM1
OBJECT MODULE PLACED IN EXAM1.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\c51.exe EXAM1.C DB OE SMALL ROM(LARGE)
stmt level source
1 /****************************************************************/
2 /*功能:
3 /*版本:v1.0
4 /*设计人:
5 /*编写日期:
6 /*最后修改日期:
7 /*状态:in test
8 /****************************************************************/
9 /*头文件定义*/
10 #include <reg51.h>
11 #include <intrins.h>
12 /*预定义部分*/
13 #define uchar unsigned char
14 #define uint unsigned int
15 #define bytenum 32 //每页的字符数
16 sbit XSI=P1^0;
17 sbit XSCK=P1^1;
18 sbit XSO=P1^2;
19 sbit XCS_A=P1^3;
20 sbit XCS_B=P1^4;
21 /*函数声明部分*/
22 void write_byte(uchar); //写一个字节
23 uchar read_byte(); //读一个字节
24 void write_en(); //置 写使能寄存器
25 void write_cmd(uchar); //写 控制寄存器
26 uchar read_status(); //读 状态寄存器
27 bit check_ready();
28 void write_one_data(uint,uchar); //写一字节数据
29 uchar read_one_data(uint); //读一字节数据
30 void write_page(uint,uchar *); //写一页数据
31 uchar *read_page(uint); //读一页数据
32 /*主函数部分*/
33 /*********************************************************************/
34 /*函数名:main()
35 /*功能:主函数
36 /*输入参数:无
37 /*返回值:无
38 /*编写日期:
39 /*最后修改日期:
40 /********************************************************************/
41 void main()
42 {
43 1 uchar dat,status;
44 1 P1=0xff;
45 1 //XCS_A=0;XCS_B=0;XSI=0;XSCK=0;XSO=0;
46 1 write_en();
47 1 status=read_status();
48 1 write_en();
49 1 write_one_data(0x00,0x0f);
50 1 dat=read_one_data(0x00);
51 1 while(1);
52 1 }
53
54 /*其他函数定义部分*/
55 /*********************************************************************/
C51 COMPILER V7.02a EXAM1 11/26/2005 12:26:59 PAGE 2
56 /*函数名:
57 /*功能:
58 /*输入参数:
59 /*返回值:
60 /*调用函数:
61 /*被调用函数:
62 /*编写日期:
63 /*最后修改日期:
64 /********************************************************************/
65 void write_byte(uchar byte)
66 {
67 1 uchar i=0;
68 1 uchar tmp;
69 1 for(i=0;i<8;i++)
70 1 {
71 2 XSCK=0;
72 2 tmp=byte&0x80;
73 2 if(tmp!=0)
74 2 XSI=1;
75 2 else
76 2 XSI=0;
77 2 XSCK=1; //上升沿输出数据
78 2 _nop_();
79 2 byte<<=1;
80 2 }
81 1 }
82 /*********************************************************************/
83 /*函数名:
84 /*功能:
85 /*输入参数:
86 /*返回值:
87 /*调用函数:
88 /*被调用函数:
89 /*编写日期:
90 /*最后修改日期:
91 /********************************************************************/
92 uchar read_byte()
93 {
94 1 uchar i;
95 1 uchar byte=0;
96 1 for(i=0;i<8;i++)
97 1 {
98 2 byte<<=1;
99 2 XSCK=0;
100 2 _nop_();
101 2 if(XSO==1)
102 2 byte+=1;
103 2 XSCK=1;
104 2 }
105 1 XSCK=0;
106 1 return(byte);
107 1 }
108 /*********************************************************************/
109 /*函数名:
110 /*功能:
111 /*输入参数:
112 /*返回值:
113 /*调用函数:
114 /*被调用函数:
115 /*编写日期:
116 /*最后修改日期:
117 /********************************************************************/
C51 COMPILER V7.02a EXAM1 11/26/2005 12:26:59 PAGE 3
118 void write_en()
119 {
120 1 XCS_A=0;XCS_B=0;
121 1 write_byte(0x06); //置 写使能寄存器
122 1 XCS_A=1;XCS_B=1;
123 1 }
124 /*********************************************************************/
125 /*函数名:
126 /*功能:
127 /*输入参数:
128 /*返回值:
129 /*调用函数:
130 /*被调用函数:
131 /*编写日期:
132 /*最后修改日期:
133 /********************************************************************/
134 void write_cmd(uchar cmd)
135 {
136 1 XCS_A=0;XCS_B=0;
137 1 write_byte(0x01);
138 1 write_byte(cmd);
139 1 XCS_A=1;XCS_B=1;
140 1 }
141 /*********************************************************************/
142 /*函数名:
143 /*功能:
144 /*输入参数:
145 /*返回值:
146 /*调用函数:
147 /*被调用函数:
148 /*编写日期:
149 /*最后修改日期:
150 /********************************************************************/
151 uchar read_status()
152 {
153 1 uchar status;
154 1 XCS_A=0;XCS_B=0; //芯片使能
155 1 write_byte(0x05); //读状态寄存器 命令
156 1 status=read_byte(); //读状态寄存器
157 1 XCS_A=1;XCS_B=1; //芯片不使能
158 1 return(status);
159 1 }
160 /*********************************************************************/
161 /*函数名:
162 /*功能:
163 /*输入参数:
164 /*返回值:
165 /*调用函数:
166 /*被调用函数:
167 /*编写日期:
168 /*最后修改日期:
169 /********************************************************************/
170 bit check_ready()
171 {
172 1 uchar status=0xff;
173 1 write_en();
174 1 status=read_status();
175 1 status=status & 0x01;
176 1 if(!status)
177 1 return 1;
178 1 else
179 1 return 0;
C51 COMPILER V7.02a EXAM1 11/26/2005 12:26:59 PAGE 4
180 1 }
181 /*********************************************************************/
182 /*函数名:
183 /*功能:
184 /*输入参数:
185 /*返回值:
186 /*调用函数:
187 /*被调用函数:
188 /*编写日期:
189 /*最后修改日期:
190 /********************************************************************/
191 void write_one_data(uint addr,uchar dat)
192 {
193 1 uchar addrH,addrL;
194 1 addrL=addr;
195 1 addr>>=8;
196 1 addrH=addr;
197 1 XSCK=0;XCS_A=0;XCS_B=0; //芯片使能
198 1 write_byte(0x02); //写数据 命令
199 1 write_byte(addrH); //写入数据的地址
200 1 write_byte(addrL);
201 1 write_byte(dat); //写数据
202 1 XCS_A=1;XCS_B=1; //芯片步不使能
203 1 }
204 /*********************************************************************/
205 /*函数名:
206 /*功能:
207 /*输入参数:
208 /*返回值:
209 /*调用函数:
210 /*被调用函数:
211 /*编写日期:
212 /*最后修改日期:
213 /********************************************************************/
214 uchar read_one_data(uint addr)
215 {
216 1 uchar dat;
217 1 uchar addrH,addrL;
218 1 addrL=addr;
219 1 addr>>=8;
220 1 addrH=addr;
221 1 XSCK=0;XCS_A=0;XCS_B=0; //芯片使能
222 1 write_byte(0x03); //读数据 命令
223 1 write_byte(addrH); //写入数据的地址
224 1 write_byte(addrL);
225 1 dat=read_byte(); //读数据
226 1 XCS_A=1;XCS_B=1; //芯片不使能
227 1 return(dat);
228 1 }
229 /*********************************************************************/
230 /*函数名:
231 /*功能:
232 /*输入参数:
233 /*返回值:
234 /*调用函数:
235 /*被调用函数:
236 /*编写日期:
237 /*最后修改日期:
238 /********************************************************************/
239 void write_page(uint addr,uchar *page)
240 {
241 1 uchar i;
C51 COMPILER V7.02a EXAM1 11/26/2005 12:26:59 PAGE 5
242 1 uchar addrH,addrL;
243 1 addrL=addr;
244 1 addr>>=8;
245 1 addrH=addr;
246 1 XSCK=0;XCS_A=0;XCS_B=0; //芯片使能
247 1 write_byte(0x02); //写数据 命令
248 1 write_byte(addrH); //写入数据的地址
249 1 write_byte(addrL);
250 1 for(i=0;i<bytenum;i++) //写一页数据
251 1 {
252 2 write_byte(page[i]);
253 2 }
254 1 XCS_A=1;XCS_B=1; //芯片不使能
255 1 }
256 /*********************************************************************/
257 /*函数名:
258 /*功能:
259 /*输入参数:
260 /*返回值:
261 /*调用函数:
262 /*被调用函数:
263 /*编写日期:
264 /*最后修改日期:
265 /********************************************************************/
266 uchar *read_page(uint addr)
267 {
268 1 uchar page[bytenum];
269 1 uchar i;
270 1 uchar addrH,addrL;
271 1 addrL=addr;
272 1 addr>>=8;
273 1 addrH=addr;
274 1 XSCK=0;XCS_A=0;XCS_B=0; //芯片使能
275 1 write_byte(0x03); //读数据 命令
276 1 write_byte(addrH); //写入数据的地址
277 1 write_byte(addrL);
278 1 for(i=0;i<bytenum;i++) //读一页数据
279 1 {
280 2 page[i]=read_byte();
281 2 }
282 1 XCS_A=1;XCS_B=1; //芯片不使能
283 1 return(page);
284 1 }
285 /********************END********************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 306 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 37
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 + -