📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 08/14/2007 21:41:11 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Program Files\keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include<intrins.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5 sbit SCL=P2^0;
6 sbit SDA=P2^1;
7
8 //void delay(uchar n)
9 // {
10 // uint i;
11 // uchar j;
12 // for(j=0;j<n;j++)
13 // for(i=0;i<6000;i++);
14 // }
15 //
16 ///*启动I2C总线*/
17 //void sta()
18 // {
19 // SDA=1;
20 // SCL=1;
21 // _nop_();
22 // SDA=0;
23 // _nop_();
24 // SCL=0;
25 // }
26 //
27 //void stop( )/*停止I2C总线*/
28 // {
29 // SDA=0;
30 // SCL=1;
31 // delay(1);
32 // SDA=1;
33 // delay(1);
34 // }
35 //
36 //void mack( )/*发送应答位*/
37 // {
38 // SDA=0;
39 // SCL=1;
40 // _nop_();
41 // SCL=0;
42 // SDA=1;
43 // }
44 //
45 //void mnack( )/*发送非应答位*/
46 // {
47 // SDA=1;
48 // SCL=1;
49 // _nop_();
50 // SCL=0;
51 // SDA=0;
52 // }
53 //
54 //void cack( )/*应答位检查*/
55 // {
C51 COMPILER V8.02 MAIN 08/14/2007 21:41:11 PAGE 2
56 // SDA=1;
57 // SCL=1;
58 // F0=0;
59 // if(SDA==1)
60 // F0=1;
61 // SCL=0;
62 // _nop_( );
63 // }
64 //
65 ///*向虚拟I2C总线上发送1个数据字节*/
66 //void wrbyt(uchar shu)
67 // {
68 // uchar i;
69 // for(i=0;i<8;i++)
70 // {
71 // if((shu&0x80)>0)
72 // {
73 // SDA=1;
74 // SCL=1;
75 // _nop_();
76 // SCL=0;
77 // SDA=0;
78 // }
79 // else
80 // {
81 // SDA=0;
82 // SCL=1;
83 // _nop_();
84 // SCL=0;
85 // }
86 // shu=shu<<1;
87 // }
88 // }
89 //
90 ///*从I2C总线上读取1个数据字节*/
91 //uchar rdbyt( )
92 // {
93 // uchar nn=0xff,mm=0x80,uu=0x7f;
94 // uchar j;
95 // for(j=0;j<8;j++)
96 // {
97 // SDA=1;
98 // SCL=1;
99 // if(SDA==0)
100 // {nn=(nn&uu);}
101 // else
102 // {nn=(nn|mm);}
103 // nn=_crol_(nn,1);
104 // SCL=0;
105 // }
106 // return(nn);
107 // }
108 //
109 //void wrnbyta(uchar slaw,uchar gg[],uchar n)
110 // {
111 // do
112 // {
113 // sta( );
114 // wrbyt(slaw);
115 // cack( );
116 // }
117 // while(F0==1);
C51 COMPILER V8.02 MAIN 08/14/2007 21:41:11 PAGE 3
118 // wrbyt(gg[n]);
119 // cack( );
120 // }
121 //
122 ///*向虚拟I2C总线上发送n个字节的数据
123 //参数:写命令字、需要写到总线的数据、写数据长度
124 //ff[]:前两个字节分别为高地址、低地址、接着是数据,其中数据长度=地址+数据
125 //*/
126 //void wrnbyt(uchar slaw,uchar ff[],uchar number)
127 // {
128 // uchar idata k;
129 // do
130 // {
131 // sta( );
132 // wrbyt(slaw);
133 // cack( );
134 // }
135 // while(F0==1);
136 // for(k=0;k<number;k++)
137 // {
138 // wrbyt(ff[k]);
139 // cack( );
140 // while(F0==1)
141 // wrnbyta(slaw,ff,k);
142 // }
143 // stop( );
144 // }
145 //
146 ///*从虚拟I2C总线上读取n个字节的数据
147 //前提:已初始化读取的首地址
148 //参数:读命令字、保存数组、读取字节数
149 //*/
150 //void rdnbyt(uchar slar,uchar qq[],uchar number)
151 // {
152 // uchar idata data0,l;
153 // do
154 // {
155 // sta( );
156 // wrbyt(slar);
157 // cack( );
158 // }
159 // while(F0==1);
160 // for(l=0;l<number-1;l++)
161 // {
162 // data0=rdbyt( );
163 // qq[l]=data0;
164 // mack( );
165 // }
166 // data0=rdbyt( );
167 // qq[l]=data0;
168 // mnack( );
169 // stop( );
170 // }
171 //
172 ////读任意地址单元数据
173 ////参数:高地址、低地址
174 //char eeprom_read(uchar addr_h,uchar addr_l)
175 // {
176 // char a[2],temp[1];
177 // a[0]=addr_h;
178 // a[1]=addr_l;
179 // wrnbyt(0xa0,a,2);
C51 COMPILER V8.02 MAIN 08/14/2007 21:41:11 PAGE 4
180 // rdnbyt(0xa1,temp,1);
181 // return(temp[0]);
182 // }
183 //
184 ////写一字节到任意单元
185 //void eeprom_write(uchar addr_h,uchar addr_l,uchar data1)
186 // {
187 // char a[3];
188 // a[0]=addr_h;
189 // a[1]=addr_l;
190 // a[2]=data1;
191 // wrnbyt(0xa0,a,3);
192 // }
193
194 void main()
195 {
196 1 // char out[]={0x00,0x00,0x01,0x02,0x03};//将0x01,0x02,0x03写到以0x0000为首地址eeprom中
197 1 // char intd[5]; //连续读数据缓存数组
198 1 // wrnbyt(0xa0,out,5);//将0x01,0x02,0x03写到以0x0000为首地址eeprom中
199 1 // wrnbyt(0xa0,out,2);//初始化首地址,如果不是0x0000,须将out数组初始化
200 1 // rdnbyt(0xa1,intd,3);//从初始化地址中读3个字节到intd数组中
201 1 // eeprom_write(0x00,0x10,0xaa);//将0xaa写到0x0010地址中去
202 1 // P0=eeprom_read(0x00,0x10);//读取0x0010地址中的数据
203 1 // while(1);
204 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
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 + -