📄 250451.lst
字号:
C51 COMPILER V7.20 250451 11/03/2004 13:56:10 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE 250451
OBJECT MODULE PLACED IN 250451.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE 250451.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 //#include <stdio.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5 //-------------------------
6 extern uchar data xs1[8];
7 //下面是我正在用的没有问题。
8 sbit SO=P2^3; //2
9 sbit SI=P2^5; //5
10 sbit SCK=P2^4; //6
11 sbit CS=P2^2; //1
12 //25045可编程看门狗监控EEPROM指令集
13 #define WREN 0x06; 00000110 //设置写使能锁存器(允许写操作)
14 #define WRDI 0x04; 00000100 //复位写使能锁存器(禁止写操作)
15 #define RDSR 0x05; 00000101 //读状态寄存器
16 #define WRSR 0x01; 00000001 //写状态寄存器(块锁定)
17 #define READ 0x03; 00000011 //从开始于所选地址的存储器列阵中读出数据
18 #define WRTE 0x02; 00000010 //把数据写入开始于所选地址的存储器阵列中(1至4字节)
19
20 void in_byte(unsigned char BYT);
21 unsigned char out_byte(void);
22 unsigned char rdsr_dog(void);
23 void wrsr_dog(unsigned char status_reg);
24 unsigned char wip_poll(void);
25 void wrdi_dog(void);
26 void rest_dog(void);
27 unsigned char byte_read(unsigned char H,unsigned char L);
28 void byte_write(unsigned char H,unsigned char L,unsigned char D);
29 unsigned char rda[8];
30 unsigned char cs_rda[8];
31 //看门狗写使能子程序
32 void wren_dog(void)
33 {
34 1 SCK=0;
35 1 CS=0;
36 1 in_byte(0x06);
37 1 SCK=0;
38 1 CS=1;
39 1 }
40 //看门狗写禁止子程序
41 void wrdi_dog(void)
42 {
43 1 SCK=0;
44 1 CS=0;
45 1 in_byte(0x04);
46 1 SCK=0;
47 1 CS=1;
48 1 }
49 //写状态寄存器
50 void wrsr_dog(unsigned char status_reg)
51 {
52 1 // unsigned char com=0x01;//WRSR;
53 1 SCK=0;
54 1 CS=0;
55 1 in_byte(0x01);
C51 COMPILER V7.20 250451 11/03/2004 13:56:10 PAGE 2
56 1 in_byte(status_reg);
57 1 SCK=0;
58 1 CS=1;
59 1 wip_poll();
60 1 }
61 //读状态寄存器
62 unsigned char rdsr_dog(void)
63 {
64 1 // unsigned char com=0x05;//RDSR;
65 1 SCK=0;
66 1 CS=0;
67 1 in_byte(0x05);
68 1 return(out_byte());
69 1 SCK=0;
70 1 CS=1;
71 1 }
72 //字节读
73 unsigned char byte_read(unsigned char H,unsigned char L)
74 {
75 1 unsigned char data_dog,add;
76 1 wren_dog();//看门狗写使能子程序
77 1 SCK=0;
78 1 CS=0;
79 1 add=H<<3;
80 1 add|=0x03;//READ;
81 1 in_byte(add);
82 1 add=L;
83 1 in_byte(add);
84 1 data_dog=out_byte();
85 1 SCK=0;
86 1 CS=1;
87 1 return(data_dog);
88 1 }
89 //字节写
90 //H,地址高字节;L地址低字节;D写入的数据
91 void byte_write(unsigned char H,unsigned char L,unsigned char D)
92 {
93 1 unsigned char data_dog,add;
94 1 wren_dog();//看门狗写使能子程序
95 1 SCK=0;
96 1 CS=0;
97 1 add=H<<3;
98 1 add|=0x02;//WRTE;
99 1 in_byte(add);
100 1 add=L;
101 1 in_byte(add);
102 1 data_dog=D;
103 1 in_byte(data_dog);
104 1 SCK=0;
105 1 CS=1;
106 1 wip_poll();
107 1 }
108 //复位看门狗子程序
109 void rest_dog(void)
110 {
111 1 CS=0;
112 1 CS=1;
113 1 }
114 //检验写操作是否结束。
115 unsigned char wip_poll(void)
116 {
117 1 unsigned char i;
C51 COMPILER V7.20 250451 11/03/2004 13:56:10 PAGE 3
118 1 unsigned char wip;
119 1 for(i=0xff;i>=1;i--)
120 1 {
121 2 wip=rdsr_dog();
122 2 wip&=0x01;
123 2 if(wip==0) break;
124 2 }
125 1 return(wip);
126 1 }
127 //单字节指令或数据写入X25045
128 //在SI线上输入的数据在SCK的上升沿被锁存。
129 void in_byte(unsigned char byt)
130 {
131 1 unsigned char i;
132 1 for(i=8;i>=1;i--)
133 1 {
134 2 SCK=0;
135 2 SI=byt&0x80;
136 2 SCK=1;
137 2 byt=byt<<1;
138 2 }
139 1 }
140 //单字节数据从X25045读到单片机
141 //数据由SCK的下降沿输出到SO线上。
142 unsigned char out_byte(void)
143 {
144 1 unsigned char i;
145 1 unsigned char byt;
146 1 for(i=8;i>=1;i--)
147 1 {
148 2 byt=byt<<1;
149 2 SCK=1;
150 2 SCK=0;
151 2 byt|=SO;
152 2 }
153 1 return (byt);
154 1 }
155 void d25045(uchar x)
156 {uchar i,a=10;
157 1 switch(x)
158 1 {
159 2 case 1:
160 2 wrdi_dog();//看门狗写禁止子程序
161 2 wren_dog();//看门狗写使能子程序
162 2 wrsr_dog(32);//写状态寄存器200ms
163 2 break;
164 2 case 2:
165 2 for(i=0;i<8;i++){byte_read(0,0);byte_write(0,i,xs1[i]);}//写地址数据
166 2 break;
167 2 case 3:
168 2 for(i=0;i<8;i++){xs1[i]=byte_read(0,i);} //字节读
169 2 break;
170 2 case 4:
171 2 rest_dog();//复位看门狗子程序
172 2 break;
173 2 }
174 1 }
175 /*
176 void main(void)
177 {uchar a,b,c,d,e,f,g,h,j;
178 //wrdi_dog();//看门狗写禁止子程序
179 //rest_dog();//复位看门狗子程序
C51 COMPILER V7.20 250451 11/03/2004 13:56:10 PAGE 4
180 //wren_dog();//看门狗写使能子程序
181 //wrsr_dog(16);//写状态寄存器
182 d25045(1);
183 while(1)
184 {
185 TAB[0]=a;
186 TAB[1]=b;
187 TAB[2]=c;
188 TAB[3]=e;
189 TAB[4]=f;
190 TAB[5]=g;
191 TAB[6]=h;
192 TAB[7]=j;
193
194 d25045(2);
195 d25045(3);
196
197 a=TAB[0];
198 b=TAB[1];
199 c=TAB[2];
200 e=TAB[3];
201 f=TAB[4];
202 g=TAB[5];
203 h=TAB[6];
204 j=TAB[7];
205 }
206 }
207 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 307 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 10
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 + -