?? 24c08.lst
字號:
C51 COMPILER V8.05a 24C08 11/06/2007 17:37:01 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE 24C08
OBJECT MODULE PLACED IN 24c08.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 24c08.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*==============================I2C 24C04==============================
2
3 程序名稱:I2C 24C04(12864液晶并行顯示) P3.3為減 P3.2為增
4
5 版 本:Agni 07-SV開發(fā)板
6
7 作 者:藍(lán)極風(fēng)電子技術(shù)
8
9 日 期:2007.10.28
10
11 注:(1):主芯片AT89S52使用11.0592M晶振
12
13 (2):Keil uV3 3.30編譯運(yùn)行通過
14
15 (3):本例程在 Agni 07-SV 開發(fā)板平臺上成功運(yùn)行通過
16
17 (4):藍(lán)極風(fēng)電子技術(shù)網(wǎng)版權(quán)所有,只供學(xué)習(xí)參考,不得應(yīng)用于商業(yè)用途.
18
19 (5):更多學(xué)習(xí)資源瀏覽:(http://www.bluepw.com 或 http://www.bluepw.cn)
20
21 ============================================================================*/
22 #include<at89x52.h> //包括一個52標(biāo)準(zhǔn)內(nèi)核的頭文件
23 #include<24c08_lcd.h>
24 #define uchar unsigned char //定義一下方便使用
25 #define uint unsigned int
26 #define ulong unsigned long
27
28 #define WriteDeviceAddress 0xa0 //定義器件在IIC總線中的地址
29 #define ReadDviceAddress 0xa1
30 sbit SCL=P3^4;
31 sbit SDA=P3^5;
32
33 sbit K1=P3^0;
34 uchar k;
35 void keyscan(void);
36
37 //定時函數(shù)
38 void DelayMs(uint number)
39 {
40 1 uchar temp;
41 1 for(;number!=0;number--)
42 1 {
43 2 for(temp=112;temp!=0;temp--) ;
44 2 }
45 1 }
46
47 void key_delay(void) //延時
48 {
49 1 int t;
50 1 for(t=0;t<3300;t++);
51 1 }
52
53 //開始總線
54 void Start()
55 {
C51 COMPILER V8.05a 24C08 11/06/2007 17:37:01 PAGE 2
56 1 SDA=1;
57 1 SCL=1;
58 1 SDA=0;
59 1 SCL=0;
60 1 }
61
62 //結(jié)束總線
63 void Stop()
64 {
65 1 SCL=0;
66 1 SDA=0;
67 1 SCL=1;
68 1 SDA=1;
69 1 }
70
71
72 //發(fā)ACK0
73 void NoAck()
74 {
75 1 SDA=1;
76 1 SCL=1;
77 1 SCL=0;
78 1 }
79
80 //測試ACK
81 bit TestAck()
82 {
83 1 bit ErrorBit;
84 1 SDA=1;
85 1 SCL=1;
86 1 ErrorBit=SDA;
87 1 SCL=0;
88 1 return(ErrorBit);
89 1 }
90
91 //寫入8個bit到24c02
92 void Write8Bit(uchar input)
93 {
94 1 uchar temp;
95 1 for(temp=8;temp!=0;temp--)
96 1 {
97 2 SDA=(bit)(input&0x80);
98 2 SCL=1;
99 2 SCL=0;
100 2 input=input<<1;
101 2 }
102 1 }
103
104 //寫入一個字節(jié)到24c02中
105 void Write24c02(uchar ch,uchar address)
106 {
107 1 Start();
108 1 Write8Bit(WriteDeviceAddress);
109 1 TestAck();
110 1 Write8Bit(address);
111 1 TestAck();
112 1
113 1 Write8Bit(ch);
114 1 TestAck();
115 1
116 1 Stop();
117 1 DelayMs(10);
C51 COMPILER V8.05a 24C08 11/06/2007 17:37:01 PAGE 3
118 1 }
119
120 //從24c02中讀出8個bit
121 uchar Read8Bit()
122 {
123 1 uchar temp,rbyte=0;
124 1 for(temp=8;temp!=0;temp--)
125 1 {
126 2 SCL=1;
127 2 rbyte=rbyte<<1;
128 2 rbyte=rbyte|((uchar)(SDA));
129 2 SCL=0;
130 2 }
131 1 return(rbyte);
132 1 }
133
134 //從24c02中讀出1個字節(jié)
135 uchar Read24c02(uchar address)
136 {
137 1 uchar ch;
138 1
139 1 Start();
140 1 Write8Bit(WriteDeviceAddress);
141 1 TestAck();
142 1 Write8Bit(address);
143 1 TestAck();
144 1 Start();
145 1 Write8Bit(ReadDviceAddress);
146 1 TestAck();
147 1 ch=Read8Bit();
148 1 NoAck();
149 1 Stop();
150 1 return(ch);
151 1 }
152
153
154 //寫入按鍵次數(shù)到24c02,并讀出來顯示在4個LED上
155 void main(void) // 主程序
156 {
157 1 uchar c1=0;
158 1 uchar m=100;
159 1 Init_lcd();
160 1 while(1)
161 1 {
162 2 m=Read24c02(0xff); //讀出24c02第一個地址數(shù)據(jù)
163 2 keyscan();
164 2 switch(k)
165 2 {
166 3 case 0: m=m+1;k=8;break;
167 3 case 1: m=m-1;k=9;break;
168 3 default:break;
169 3 }
170 2 Show(0x80,16," I2C存儲器測試 ");
171 2 Show(0x90,16,"基準(zhǔn)值: 100 ");
172 2 Show(0x88,16,"增量: 1 ");
173 2 Show(0x98,16,"存儲值: ");
174 2 Write24c02(m,0xff); //寫入24c02
175 2 Show_dig(0x9D,m);
176 2 key_delay();key_delay();key_delay();key_delay();
177 2 }
178 1
179 1 }
C51 COMPILER V8.05a 24C08 11/06/2007 17:37:01 PAGE 4
180
181 void keyscan(void) //按鍵為P3.2和P3.3
182 {
183 1
184 1 key_delay();
185 1 key_delay();
186 1 if(P3_2==0) //P3.2為增
187 1 k=0;
188 1 key_delay();
189 1 key_delay();
190 1 if(P3_3==0) //P3.3為減
191 1 k=1;
192 1 key_delay();
193 1 }
194 /************************ end **********************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 567 ----
CONSTANT SIZE = 79 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 15
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -