📄 x5045.lst
字号:
C51 COMPILER V6.12 X5045 06/02/2005 08:50:15 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE X5045
OBJECT MODULE PLACED IN .\X5045.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE .\X5045.C DEBUG OBJECTEXTEND
stmt level source
1 #include "public.h"
2
3 /*
4 //写使能子程序
5 void wren_cmd(void)
6 {
7 uchar aa;
8 SCK=0; // Bring SCK low
9 CS=0; // Bring /CS low
10 aa=WREN_INST;
11 inbyte(aa); // Send WREN instruction
12 SCK=0; // Bring SCK low
13 CS=1; // Bring /CS high
14 }
15
16
17 //写使能复位子程序
18 void wrdi_cmd(void)
19 {
20 uchar aa;
21 SCK=0; // Bring SCK low
22 CS=0; // Bring /CS low
23 aa=WRDI_INST;
24 inbyte(aa); // Send WRDI instruction
25 SCK=0; // Bring SCK low
26 CS=1; // Bring /CS high
27 }
28
29
30 //写状态寄存器子程序
31 void wrsr_cmd(void)
32 {
33 uchar aa;
34 SCK=0; // Bring SCK low
35 CS=0; // Bring /CS low
36 aa=WRSR_INST;
37 inbyte(aa); // Send WRSR instruction
38 aa=STATUS_REG;
39 inbyte(aa); // Send status register
40 SCK=0; // Bring SCK low
41 CS=1; // Bring /CS high
42 wip_poll(); // Poll for completion of write cycle
43 }
44
45
46 //读状态寄存器,读出的数据放入到aa中
47 uchar rdsr_cmd (void)
48 {
49 uchar aa;
50 SCK=0;
51 CS=0;
52 aa=RDSR_INST;
53 inbyte(aa);
54 aa=outbyte();
55 SCK=0;
C51 COMPILER V6.12 X5045 06/02/2005 08:50:15 PAGE 2
56 CS=1;
57 return aa;
58 }
59
60
61 //字节写入,aa为写入的数据,dd为写入的地址,对于25045而言为000-1FF
62 void byte_write(aa,dd)
63 uchar aa;
64 uint dd;
65 {
66 SCK=0;
67 CS=0;
68 inbyte((((uchar)(dd-0XFF))<<3)|WRITE_INST);// Send WRITE instruction including MSB of address
69 //将高位地址左移3位与写入先导字相或,得到正确的先导字写入5045
70 inbyte((uchar)(dd));
71 //输出低位地址到5045
72 inbyte(aa);
73 //写入数据到5045的对应单元
74 SCK=0;
75 CS=1;
76 wip_poll();
77 //检测是否写完
78 }
79
80
81
82 //字节读出,其中dd为读出的地址,返回的值为读出的数据
83 uchar byte_read(dd)
84 uint dd;
85 {
86 uchar cc;
87 SCK=0;
88 CS=0;
89 inbyte((((uchar)(dd-0XFF))<<3)|READ_INST);// Send READ_INST instruction including MSB of address
90 //将高位地址左移3位与读出先导字相或,得到正确的先导字写入5045
91 inbyte((uchar)(dd));
92 //输出低位地址到5045
93 cc=outbyte();//得到读出的数据
94 SCK=0;
95 CS=1;
96 return cc;
97 }
98
99
100
101 //页面写入,其中aa1,aa2,aa3,aa4为需要写入的4个数据(最大也就只能一次写入4个字,dd为写入的首地址
102 void page_write(aa1,aa2,aa3,aa4,dd)
103 uchar aa1,aa2,aa3,aa4;
104 uint dd;
105 {
106 SCK=0;
107 CS=0;
108 inbyte((((uchar)(dd-0XFF))<<3)|WRITE_INST);// Send WRITE instruction including MSB of address
109 //将高位地址左移3位与写入先导字相或,得到正确的先导字写入5045
110 inbyte((uchar)(dd));
111 //写入低位地址到5045
112 inbyte(aa1);
113 //写入数据1到5045的对应单元
114 inbyte(aa2);
115 //写入数据2到5045的对应单元
116 inbyte(aa3);
117 //写入数据3到5045的对应单元
C51 COMPILER V6.12 X5045 06/02/2005 08:50:15 PAGE 3
118 inbyte(aa4);
119 //写入数据4到5045的对应单元
120 SCK=0;
121 CS=1;
122 wip_poll();
123 }
124
125
126
127 //连续读出,由于函数的返回值只能为1个,对于连续读出的数据只能使用指针作为函数的返回值才能做到返回一系列的数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -