📄 24c02.lst
字号:
C51 COMPILER V8.08 24C02 03/23/2009 15:37:34 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE 24C02
OBJECT MODULE PLACED IN 24C02.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 24C02.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <AT89X52.H>
2 #define uchar unsigned char
3 #define uint unsigned int
4 sbit wx1= P3^5;
5 sbit wx2= P3^6;
6 sbit scl=P2^2;
7 sbit sda=P2^3;
8 void display();
9 uchar k,count,num,flag;
10 uchar code table[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
11 void delay()
12 {
13 1 ; ;
14 1 }
15
16 void init() //24C02 初始化
17 {
18 1 sda=1;
19 1 delay();
20 1 scl=1;
21 1 delay();
22 1 TR0=1;
23 1 ET0=1;
24 1 EA=1;
25 1 }
26 void start() //开始信号
27 {
28 1 sda=1;
29 1 delay();
30 1 scl=1;
31 1 delay();
32 1 sda=0;
33 1 delay();
34 1 }
35 void stop() //结束信号
36 {
37 1 sda=0;
38 1 delay();
39 1 scl=1;
40 1 delay();
41 1 sda=1;
42 1 delay();
43 1 }
44 void respons() //应答信号
45 {
46 1 uchar i=0;
47 1 scl=1;
48 1 delay();
49 1 while((sda==1)&&(i<250))i++; //应答等待,如超时则认为应答成功
50 1 scl=0;
51 1 delay();
52 1 }
53 void writebyte(uchar dat) //写位操作
54 {
55 1 uchar i,temp;
C51 COMPILER V8.08 24C02 03/23/2009 15:37:34 PAGE 2
56 1 temp=dat;
57 1 for(i=0;i<8;i++)
58 1 {
59 2 temp=temp<<1;
60 2 scl=0;
61 2 delay();
62 2 sda=CY;
63 2 delay();
64 2 scl=1;
65 2 delay();
66 2 }
67 1 scl=0;
68 1 delay();
69 1 sda=1;
70 1 delay();
71 1 }
72 uchar readbyte() //读位操作
73 {
74 1 uchar i,k;
75 1 scl=0;
76 1 delay();
77 1 sda=1;
78 1 delay();
79 1 for(i=0;i<8;i++)
80 1 {
81 2 scl=1;
82 2 delay();
83 2 k=(k<<1)|sda;
84 2 scl=0;
85 2 delay();
86 2 }
87 1 return k;
88 1
89 1 }
90 void writeadd(uchar address,uchar info) //向24C02 写数据操作,凡写入都要有形参
91 {
92 1 start();
93 1 writebyte(0xa0);
94 1 respons();
95 1 writebyte(address);
96 1 respons();
97 1 writebyte(info);
98 1 respons();
99 1 stop();
100 1 }
101 uchar readadd(uchar address) //从24C02 读数据操作,凡读出都要有返回值
102 {
103 1 uchar dd;
104 1 start();
105 1 writebyte(0xa0);
106 1 respons();
107 1 writebyte(address);
108 1 respons();
109 1 start();
110 1 writebyte(0xa1);
111 1 respons();
112 1 dd=readbyte();
113 1 stop();
114 1 return dd;
115 1 }
116 delay1(uchar z)
117 {
C51 COMPILER V8.08 24C02 03/23/2009 15:37:34 PAGE 3
118 1 int x,y;
119 1 for(x=z;x>0;x--)
120 1 for(y=100;y>0;y--);
121 1 }
122
123 void display(uchar x)
124 {
125 1 wx1=0;
126 1 P0=table[x/10];
127 1 delay1(1);
128 1 P0=0xff;
129 1 wx1=1;
130 1 wx2=0;
131 1 P0=table[x%10];
132 1 delay1(1);
133 1 P0=0xff;
134 1 wx2=1;
135 1 }
136 void main()
137 {
138 1 init();
139 1 count=readadd(0);
140 1 delay1(10);
141 1 TH0=(65536-50000)/256;
142 1 TL0=(65536-50000)%256;
143 1 while(1)
144 1 {
145 2 display(count);
146 2 }
147 1 }
148
149
150
151 void ser() interrupt 1
152 {
153 1 TH0=(65536-50000)/256;
154 1 TL0=(65536-50000)%256;
155 1 num++;
156 1 if(num==20)
157 1 {
158 2 count++;
159 2 if(count==100)
160 2 {
161 3 count=0;
162 3 }
163 2 writeadd(0,count);
164 2 delay1(10);
165 2
166 2
167 2 }
168 1 }
169
170
171
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 360 ----
CONSTANT SIZE = 10 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
C51 COMPILER V8.08 24C02 03/23/2009 15:37:34 PAGE 4
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 + -