?? 24c00.lst
字號:
C51 COMPILER V7.50 24C00 05/09/2007 17:54:05 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 24C00
OBJECT MODULE PLACED IN 24C00.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE 24C00.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "reg51.h"
2 #include "intrins.h"
3 #include"address.h"
4 #define uchar unsigned char
5 #define uint unsigned char
6 #define true 1
7 #define false 0
8 #define bool bit
9 #define Byte unsigned char
10 #define Word unsigned int
11 #define read 0x80
12 #define write 0x00
13
14 //私有內部函數
15 #define \
16 SomeNOP(); \
17 _nop_();_nop_();_nop_();_nop_();
18
19 //私有內部函數
20 void IICStart(void)
21 {
22 1 EA = 0;
23 1 IICDATA = 1;IICSCL = 1;SomeNOP();
24 1 IICDATA = 0;SomeNOP();
25 1 IICSCL = 0; IICDATA = 1;
26 1 }
27 //私有內部函數
28 void IICStop(void)
29 {
30 1 IICSCL = 0;IICDATA = 0;SomeNOP();
31 1 IICSCL = 1;SomeNOP();IICDATA = 1;
32 1 EA = 1;
33 1 }
34
35 //私有內部函數
36 void SendAck(void)
37 {
38 1 IICDATA = 0;SomeNOP();
39 1 IICSCL = 1;SomeNOP();
40 1 IICSCL = 0;
41 1 }
42 //私有內部函數
43 void SendNotAck(void)
44 {
45 1 IICDATA = 1;SomeNOP();
46 1 IICSCL = 1;SomeNOP();
47 1 IICSCL = 0;
48 1 }
49 //私有內部函數
50 void IICSendByte(uchar ch)
51 {
52 1 uchar i = 8;
53 1 while(i--)
54 1 {
55 2 IICSCL = 0;_nop_();
C51 COMPILER V7.50 24C00 05/09/2007 17:54:05 PAGE 2
56 2 IICDATA = (bit)(ch&0x80);ch<<=1;SomeNOP();
57 2 IICSCL = 1;SomeNOP();
58 2 }
59 1 IICSCL = 0;
60 1 }
61 //私有內部函數
62 uchar IICReceiveByte(void)
63 {
64 1 uchar i = 8;
65 1 uchar ddata = 0;
66 1 IICDATA = 1;
67 1 while(i--)
68 1 {
69 2 ddata<<=1;
70 2 IICSCL = 0;SomeNOP();
71 2 IICSCL = 1;SomeNOP();
72 2 if(IICDATA)ddata |= 0x01;
73 2 }
74 1 IICSCL = 0;
75 1 return ddata;
76 1
77 1 }
78 //私有內部函數
79 bool WaitAck(void)
80 {
81 1 IICDATA = 1;SomeNOP();
82 1 IICSCL = 1;SomeNOP();
83 1 while(IICDATA){IICStart(); IICSendByte(0xa0);IICDATA = 1;SomeNOP(); IICSCL = 1;SomeNOP();}
84 1 IICSCL = 0;
85 1 return true;
86 1 }
87
88 //***********************************
89 //**公有函數,外部接口(API) **
90 //***********************************
91 //寫一個數據
92 void Write24c02_OneByte(unsigned char addr,unsigned char ddata)
93 {
94 1 IICStart();
95 1 IICSendByte(0xa0);
96 1 WaitAck();
97 1 IICSendByte(addr);
98 1 WaitAck();
99 1 IICSendByte(ddata);
100 1 WaitAck();
101 1 IICStop();
102 1 SomeNOP();
103 1 }
104 //讀一個數據
105 unsigned char Read24c02_OneByte(unsigned char addr)
106 {
107 1 uchar temp;
108 1 IICStart();
109 1 IICSendByte(0xa0); //先寫入地址,設置寫
110 1 WaitAck();
111 1 IICSendByte(addr);
112 1 WaitAck();
113 1 IICStart();
114 1 IICSendByte(0xa1); //設置讀
115 1 WaitAck();
116 1 temp = IICReceiveByte();
117 1 SendNotAck();
C51 COMPILER V7.50 24C00 05/09/2007 17:54:05 PAGE 3
118 1 IICStop();
119 1 return temp;
120 1 }
121 //寫n個數據
122 void Write24c02_nByte(unsigned char addr,unsigned char n,unsigned char *buff)
123 {
124 1 while(n--)Write24c02_OneByte(addr++,*buff++);
125 1 }
126 //讀n個數據
127 void Read24c02_nByte(unsigned char addr,unsigned char n,unsigned char *buff)
128 {
129 1 while(n--)*buff++=Read24c02_OneByte(addr++);
130 1 }
131
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 336 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 10
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 + -