📄 text1.lst
字号:
C51 COMPILER V8.08 TEXT1 08/01/2008 09:29:47 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: D:\keil\程序\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<intrins.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5 #define addwr 0xa0 //定义写数据地址
6 #define addrd 0xa1
7 #define _nop_();
8
9 sbit sda=P2^0;
10 sbit scl=P2^1;
11 void delay(uint j)
12 {
13 1 uchar i;
14 1 for(;j>0;j--)
15 1 for(i=0;i<125;i++);
16 1
17 1
18 1 }
19
20 //起始条件
21 void start()
22 {
23 1 sda=1;
24 1 scl=1;
25 1 _nop_();_nop_();_nop_();_nop_();
26 1 sda=0;
27 1 _nop_();_nop_();_nop_();_nop_();
28 1 }
29
30 //停止条件
31 void stop()
32 {
33 1 sda=0;
34 1 scl=1;
35 1 _nop_();_nop_();_nop_();_nop_();
36 1 sda=1;
37 1 _nop_();_nop_();_nop_();_nop_();
38 1 }
39
40 //应答位
41 void ack()
42 {
43 1 sda=0;
44 1 _nop_();_nop_();_nop_();_nop_();
45 1 scl=1;
46 1 _nop_();_nop_();_nop_();_nop_();
47 1 scl=0;
48 1 }
49
50 //反向应答位
51
52 void noack()
53 {
54 1 sda=1;
55 1 _nop_();_nop_();_nop_();_nop_();
C51 COMPILER V8.08 TEXT1 08/01/2008 09:29:47 PAGE 2
56 1 scl=1;
57 1 _nop_();_nop_();_nop_();_nop_();
58 1 scl=0;
59 1 }
60
61 //发送数据子程序
62
63 void send (uchar date)
64 {
65 1 uchar bitcouter=8;
66 1 uchar temp;
67 1 do
68 1 {
69 2
70 2 temp=date;
71 2 scl=0;
72 2 _nop_();_nop_();_nop_();_nop_();
73 2 if((temp&0x80)==0x80)//如果最高位是1
74 2 sda=1;
75 2 else
76 2 sda=0;
77 2
78 2 scl=1;
79 2 _nop_();_nop_();_nop_();_nop_();
80 2 date=date<<1;
81 2 bitcouter--;
82 2 }while(bitcouter);
83 1 scl=0;
84 1 }
85
86 //读一字节的数据
87 uchar read()
88 {
89 1 uchar temp=0;
90 1 uchar temp1=0;
91 1 uchar bitcounter=8;
92 1 sda=1;
93 1 do{
94 2 scl=0;
95 2 _nop_();_nop_();_nop_();_nop_();
96 2 scl=1;
97 2 _nop_();_nop_();_nop_();_nop_();
98 2 temp=temp<<1;
99 2 if(sda)
100 2 temp=temp|0x01;
101 2 else
102 2 temp=temp&0xfe;
103 2 //temp=temp<<1;
104 2 bitcounter--;
105 2 }while(bitcounter);
106 1 return(temp);
107 1
108 1
109 1 }
110
111 void wrtorom(uchar date[],uchar address,uchar num)
112 {
113 1 uchar i;
114 1 uchar*pdate;
115 1 pdate=date;
116 1 for(i=0;i<num;i++)
117 1 {
C51 COMPILER V8.08 TEXT1 08/01/2008 09:29:47 PAGE 3
118 2 start();
119 2 send(0xa0);
120 2 ack();
121 2 send(address+i);
122 2 ack();
123 2
124 2 send(*(pdate+i));
125 2 ack();
126 2 stop();
127 2 delay(20);
128 2
129 2 }
130 1 }
131
132 void rdfromrom(uchar date[],uchar address,uchar num)
133 {
134 1 uchar i;
135 1 uchar*pdate;
136 1 pdate=date;
137 1 for(i=0;i<num;i++)
138 1 {
139 2 start();
140 2 send(0xa0);
141 2 ack();
142 2 send(address+i);
143 2 ack();
144 2 start();
145 2 send(0xa1);
146 2 ack();
147 2 *(pdate+i)=read();
148 2 scl=0;
149 2 noack();
150 2 stop();
151 2
152 2
153 2 }
154 1
155 1 }
156
157 void main()
158 {
159 1 uchar i;
160 1 uchar number[8]={0xaa,0xfe,0x55,0xfc,0xd4,0xf2,0x56,0x88};
161 1
162 1 // uchar number1[8];
163 1 wrtorom(number,0,8);
164 1 delay(30);
165 1 number[0]=0;
166 1 number[1]=0;
167 1
168 1 rdfromrom(number,0,8);
169 1 for(i=0;i<8;i++)
170 1 {
171 2 P1=number[i];
172 2 // P1=numbe1[i];
173 2
174 2 // uchar number1[8]=number[i];
175 2 delay(4000);
176 2
177 2 }
178 1 delay(400);
179 1 delay(400);
C51 COMPILER V8.08 TEXT1 08/01/2008 09:29:47 PAGE 4
180 1 //delay(4000);
181 1 //P1=number[2];
182 1 delay(400);
183 1 delay(400);
184 1
185 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 347 ----
CONSTANT SIZE = 8 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 25
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 + -