📄 eep.lst
字号:
C51 COMPILER V7.02b EEP 01/10/2008 11:39:28 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE EEP
OBJECT MODULE PLACED IN eep.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE eep.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1
2 /*-------------------------------------------------------------------------*/
3 #include <absacc.h>
4 #include <reg52.h>
5 #include <eep.h>
6 #include <intrins.h>
7 #include <lcd.h>
8 /*-------------------------------------------------------------------------*/
9 //#define s_delay(); {_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop
-_();_nop_();_nop_();_nop_();}
10 /*-------------------------------------------------------------------------*/
11 bit start_bit(void);
12 void stop_bit(void);
13 //void ack(void);
14 void no_ack(void);
15 bit write_byte(unsigned char);
16 unsigned char read_byte(void);
17 /*----------------------------------------------------------------*/
18 bit start_bit(void)
19 {
20 1 bit jump=1;
21 1 sda=1;
22 1 scl=1;
23 1 if((sda & scl)==0) //error
24 1 jump=1;
25 1 else
26 1 jump=0;
27 1 s_delay();
28 1 sda=0;
29 1 s_delay();
30 1 scl=0;
31 1 return jump;
32 1 }
33 /*----------------------------------------------------------------*/
34 void stop_bit(void)
35 {
36 1 sda=0;
37 1 s_delay();
38 1 scl=1;
39 1 s_delay();
40 1 sda=1;
41 1 }
42 /*----------------------------------------------------------------
43 void ack(void)
44 {
45 sda=0;
46 s_delay();
47 scl=1;
48 s_delay();
49 scl=0;
50 } */
51 /*----------------------------------------------------------------*/
52 void no_ack(void)
53 {
54 1 sda=1;
C51 COMPILER V7.02b EEP 01/10/2008 11:39:28 PAGE 2
55 1 s_delay();
56 1 scl=1;
57 1 s_delay();
58 1 scl=0;
59 1 }
60 /*----------------------------------------------------------------*/
61 bit write_byte(unsigned char number)
62 {
63 1 unsigned char i;
64 1 bit temp;
65 1 for(i=0;i<8;i++)
66 1 {
67 2 sda=number&0x80;
68 2 s_delay();
69 2 scl=1;
70 2 s_delay();
71 2 scl=0;
72 2 s_delay();
73 2 number=number<<1;
74 2 }
75 1 sda=1;
76 1 s_delay();
77 1 scl=1;
78 1 s_delay();
79 1 i=0;
80 1 if(sda && (i<10))
81 1 {
82 2 _delay500us(1);
83 2 i++;
84 2 }
85 1 temp=sda;
86 1 scl=0;
87 1 return temp;
88 1 }
89 /*----------------------------------------------------------------*/
90 unsigned char read_byte(void)
91 {
92 1 unsigned char i,number;
93 1 number=0;
94 1 sda=1;
95 1 for(i=0;i<8;i++)
96 1 {
97 2 s_delay();
98 2 number=number<<1;
99 2 scl=1;
100 2 s_delay();
101 2 if(sda)
102 2 number+=1;
103 2 scl=0;
104 2 }
105 1 return(number);
106 1 }
107 /*----------------------------------------------------------------*/
108 void _write_eep_byte(unsigned int address,unsigned char number)
109 {
110 1 if(start_bit()==0)
111 1 if(write_byte(0xa0|((((unsigned char *) &address)[0])<<1))==0)
112 1 if(write_byte(((unsigned char *) &address)[1])==0)
113 1 if(write_byte(number)==0)
114 1 stop_bit();
115 1 _delay500us(200);
116 1 }
C51 COMPILER V7.02b EEP 01/10/2008 11:39:28 PAGE 3
117 /*----------------------------------------------------------------*/
118 unsigned char _read_eep_byte(unsigned int address)
119 {
120 1 unsigned char number;
121 1 if(start_bit()==0)
122 1 {
123 2 if(write_byte(0xa0|((((unsigned char *) &address)[0])<<1))==0)
124 2 if(write_byte(((unsigned char *) &address)[1])==0)
125 2 if(start_bit()==0)
126 2 {
127 3 if(write_byte(0xa1|((((unsigned char *) &address)[0])<<1))==0)
128 3 {
129 4 number=read_byte();
130 4 no_ack();
131 4 }
132 3 }
133 2 }
134 1 stop_bit();
135 1 return(number);
136 1 }
137 /*----------------------------------------------------------------
138 void _write_eep_word(unsigned int address,unsigned int number)
139 {
140 _write_eep_byte(address,((unsigned char *)&number)[0]);
141 address++;
142 _write_eep_byte(address,((unsigned char *)&number)[1]);
143 }
144 /*----------------------------------------------------------------
145 unsigned int _read_eep_word(unsigned int address)
146 {
147 unsigned int number;
148 ((unsigned char *)&number)[0]=_read_eep_byte(address);
149 address++;
150 ((unsigned char *)&number)[1]=_read_eep_byte(address);
151 return number;
152 }
153 /*----------------------------------------------------------------*/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 402 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 7
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -