📄 24c04.lst
字号:
C51 COMPILER V7.06 24C04 06/26/2004 13:41:27 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 24C04
OBJECT MODULE PLACED IN 24c04.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 24c04.c LARGE BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <string.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4 #include <reg89C58.h>
5 #include <intrins.h>
6
7 #include "net.h"
8 #include "24c04.h"
9
10 sbit SDA=P3^5;
11 sbit SCL=P3^4;
12
13
14
15 void delay1(UINT x)
16 {
17 1 UCHAR j;
18 1 while(x--){
19 2 for(j=0;j<150;j++)
20 2 {;}
21 2 }
22 1 }
23
24
25 void wrbyt0()
26 {SDA=0;SCL=1;_nop_();_nop_();SCL=0;}
27 void wrbyt1()
28 {SDA=1;SCL=1;_nop_();_nop_();SCL=0;SDA=0;}
29
30
31
32
33
34
35 UCHAR rdbyt()
36 {
37 1 UCHAR nn=0xff,mm=0x80,uu=0x7f;
38 1 UCHAR j;
39 1 UINT q=0;
40 1 for(j=0;j<8;j++)
41 1 {SDA=1;SCL=1;
42 2 if(SDA==0)
43 2 {nn=(nn&uu);
44 3 nn=_crol_(nn,1);
45 3 SCL=0;
46 3 }
47 2 else
48 2 {nn=(nn|mm);
49 3 nn=_crol_(nn,1);
50 3 SCL=0;}
51 2 }
52 1 return(nn);
53 1 }
54
55
C51 COMPILER V7.06 24C04 06/26/2004 13:41:27 PAGE 2
56
57
58
59
60
61
62 void sta() ////1-STAR IIC BUS
63 { SDA=1;
64 1 SCL=1;
65 1 while(SCL==0){;}
66 1 _nop_();
67 1 SDA=0;
68 1 _nop_();
69 1 _nop_();
70 1 SCL=0;
71 1 }
72 void stop() /////2-STOP IIC BUS
73 {
74 1 SDA=0;
75 1 SCL=1;
76 1 while(SCL==0){;}
77 1 _nop_();
78 1 SDA=1;
79 1 _nop_();
80 1 _nop_();
81 1 SCL=0;
82 1 }
83 void mack()
84 {
85 1 SDA=0;
86 1 SCL=1;
87 1 _nop_();
88 1 _nop_();
89 1 SCL=0;
90 1 SDA=1;
91 1 }
92 void mnack()
93 {SDA=1; SCL=1;_nop_(); _nop_();SCL=0;SDA=0;}
94 void cack()
95 { SDA=1;SCL=1;F0=0;
96 1 if(SDA==0)
97 1 {SCL=0;_nop_();_nop_();}
98 1 else
99 1 {F0=1;SCL=0;_nop_();_nop_(); }
100 1 }
101 void wrbyt(UCHAR shu)
102 {UCHAR i;
103 1 if((shu&0x80)>0)
104 1 {SDA=1;}
105 1 else
106 1 {SDA=0;}
107 1 SCL=1;
108 1 while(SCL==0){;}
109 1 _nop_();SCL=0;SDA=0;
110 1 shu=_crol_(shu,1);
111 1 for(i=1;i<8;i++)
112 1 { if((shu&0x80)>0)
113 2 {wrbyt1();}
114 2 else
115 2 {wrbyt0();}
116 2 shu=_crol_(shu,1);
117 2 }
C51 COMPILER V7.06 24C04 06/26/2004 13:41:27 PAGE 3
118 1 }
119 void wrnbyta(UCHAR slaw,UCHAR gg[],UCHAR n)
120 {
121 1 do{
122 2 sta();
123 2 wrbyt(slaw);
124 2 cack();
125 2 }while(F0==1);
126 1 wrbyt(gg[n]);
127 1 cack();
128 1 }
129 void wrnbyt(UCHAR slaw,UCHAR number,UCHAR ff[])
130 {
131 1 UCHAR k;
132 1 do{
133 2 sta();
134 2 wrbyt(slaw);
135 2 cack();
136 2 }while(F0==1);
137 1 for(k=0;k<number;k++)
138 1 {
139 2 wrbyt(ff[k]);
140 2 cack();
141 2 while(F0==1)
142 2 {
143 3 wrnbyta(slaw,ff,k);
144 3 }
145 2 }
146 1 stop();
147 1 delay1(600);
148 1 }
149 void rdnbyt(UCHAR number,UCHAR slar,UCHAR qq[])
150 {
151 1 UCHAR data0,l;
152 1 do{
153 2 sta();
154 2 wrbyt(slar);
155 2 cack();
156 2 }while(F0==1);
157 1 for(l=0;l<number;l++)
158 1 {
159 2 data0=rdbyt();
160 2 qq[l]=data0;
161 2 if(l<(number-1))
162 2 {mack();}
163 2 }
164 1 mnack();
165 1 stop();
166 1 }
167
168 void read_temp(UCHAR qrdaddr,UCHAR readlen,UCHAR QHYTEMP[]) //起始地址读出的长度和存储的字节
169 { //超如地址
170 1 //讯出字节的长充
171 1 //存储读出的数据
172 1 UCHAR QTEMP[2];
173 1 UCHAR rdaddr[2];
174 1 QTEMP[0]=0Xa0;
175 1 QTEMP[1]=0Xa1;
176 1 rdaddr[0]=qrdaddr;
177 1 wrnbyt(QTEMP[0],1,rdaddr);
178 1 rdnbyt(readlen,0xa1,QHYTEMP);
179 1
C51 COMPILER V7.06 24C04 06/26/2004 13:41:27 PAGE 4
180 1 }
181 void write_temp(UCHAR WRADDR,UCHAR SLAW,UCHAR WRTEMP[])
182 { UCHAR i;
183 1 UCHAR temp[18];
184 1 UCHAR HTEMP[2];
185 1
186 1 HTEMP[0]=0Xa0;
187 1 temp[0]=WRADDR;
188 1 for (i=1;i<=SLAW;i++)
189 1 {
190 2 temp[i]=WRTEMP[i-1];
191 2 }
192 1 wrnbyt(HTEMP[0],SLAW+1,temp);
193 1
194 1 }
195
196
197
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 593 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 45
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -