📄 lesson8.lst
字号:
C51 COMPILER V6.12 LESSON8 01/31/2007 10:56:07 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE LESSON8
OBJECT MODULE PLACED IN .\lesson8.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE .\lesson8.c DEBUG OBJECTEXTEND
stmt level source
1 #include<reg52.h>
2 #define uchar unsigned char
3 sbit sda=P2^0;
4 sbit scl=P2^1;
5 uchar a;
6 void delay()
7 { ;; }
8 void start() //开始信号
9 {
10 1 sda=1;
11 1 delay();
12 1 scl=1;
13 1 delay();
14 1 sda=0;
15 1 delay();
16 1 }
17
18 void stop() //停止
19 {
20 1 sda=0;
21 1 delay();
22 1 scl=1;
23 1 delay();
24 1 sda=1;
25 1 delay();
26 1 }
27
28 void respons() //应答
29 {
30 1 uchar i;
31 1 scl=1;
32 1 delay();
33 1 while((sda==1)&&(i<250))i++;
34 1 scl=0;
35 1 delay();
36 1 }
37
38 void init()
39 {
40 1 sda=1;
41 1 delay();
42 1 scl=1;
43 1 delay();
44 1 }
45
46 void write_byte(uchar date)
47 {
48 1 uchar i,temp;
49 1 temp=date;
50 1
51 1
52 1 for(i=0;i<8;i++)
53 1 {
54 2 temp=temp<<1;
55 2 scl=0;
C51 COMPILER V6.12 LESSON8 01/31/2007 10:56:07 PAGE 2
56 2 delay();
57 2 sda=CY;
58 2 delay();
59 2 scl=1;
60 2 delay();
61 2 // scl=0;
62 2 // delay();
63 2 }
64 1 scl=0;
65 1 delay();
66 1 sda=1;
67 1 delay();
68 1 }
69
70 uchar read_byte()
71 {
72 1 uchar i,k;
73 1 scl=0;
74 1 delay();
75 1 sda=1;
76 1 delay();
77 1 for(i=0;i<8;i++)
78 1 {
79 2 scl=1;
80 2 delay();
81 2 /* if(sda==1)
82 2 j=1;
83 2 else
84 2 j=0;*/
85 2
86 2 k=(k<<1)|sda;
87 2 scl=0;
88 2 delay();
89 2 }
90 1 return k;
91 1 }
92
93 void delay1(uchar x)
94 {
95 1 uchar a,b;
96 1 for(a=x;a>0;a--)
97 1 for(b=100;b>0;b--);
98 1 }
99
100 void write_add(uchar address,uchar date)
101 {
102 1 start();
103 1 write_byte(0xa0);
104 1 respons();
105 1 write_byte(address);
106 1 respons();
107 1 write_byte(date);
108 1 respons();
109 1 stop();
110 1 }
111
112 uchar read_add(uchar address)
113 {
114 1 uchar date;
115 1 start();
116 1 write_byte(0xa0);
117 1 respons();
C51 COMPILER V6.12 LESSON8 01/31/2007 10:56:07 PAGE 3
118 1 write_byte(address);
119 1 respons();
120 1 start();
121 1 write_byte(0xa1);
122 1 respons();
123 1 date=read_byte();
124 1 stop();
125 1 return date;
126 1 }
127
128 void main()
129 {
130 1 init();
131 1 write_add(23,0xaa);
132 1 delay1(100);
133 1 P1=read_add(23);
134 1 while(1);
135 1 }
136
137
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 221 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 1
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 + -