📄 eeprom.lst
字号:
C51 COMPILER V8.02 EEPROM 09/26/2008 11:40:17 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE EEPROM
OBJECT MODULE PLACED IN .\EEPROM.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\EEPROM\EEPROM.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\EEPROM.lst) OBJE
-CT(.\EEPROM.obj)
line level source
1 /********************************************************************************/
2 /* filename : EEPROM.c */
3 /* created : xillinx */
4 /* descript : 处理EEPROM相关的函数 */
5 /********************************************************************************/
6 #include "../CPU/CPU.h"
7 #include "../EEPROM/EEPROM.h"
8
9 /********************************************************************************/
10 /* funname : IIC_delay() */
11 /* created : xillinx */
12 /* time : 2008-08-06 */
13 /* descript: 简单的时间延时 */
14 /********************************************************************************/
15 void IIC_delay_max(void)
16 { _nop_();
17 1 _nop_();
18 1 _nop_();
19 1 _nop_();
20 1 _nop_();
21 1 _nop_();
22 1 _nop_();
23 1 _nop_();
24 1 _nop_();
25 1 _nop_();
26 1 _nop_();
27 1 _nop_();
28 1 _nop_();
29 1 _nop_();
30 1 _nop_();
31 1 _nop_();
32 1 _nop_();
33 1 _nop_();
34 1 _nop_();
35 1 _nop_();
36 1 _nop_();
37 1 _nop_();
38 1 _nop_();
39 1 _nop_();
40 1 }
41 void IIC_delay_min(void)
42 { _nop_();
43 1 _nop_();
44 1 _nop_();
45 1 _nop_();
46 1 _nop_();
47 1 _nop_();
48 1 _nop_();
49 1 _nop_();
50 1 _nop_();
51 1 _nop_();
52 1 _nop_();
53 1 _nop_();
54 1 _nop_();
C51 COMPILER V8.02 EEPROM 09/26/2008 11:40:17 PAGE 2
55 1 _nop_();
56 1 _nop_();
57 1 _nop_();
58 1 _nop_();
59 1 _nop_();
60 1 }
61
62 void IIC_delay_ms(unsigned int time)
63 { unsigned int i,j;
64 1 for(i=time;i>0;i--)
65 1 { for(j=0;j<0x1000;j++)
66 2 { ;
67 3 }
68 2 }
69 1 }
70
71 /********************************************************************************/
72 /* funname : I2C_initialize() */
73 /* created : xillinx */
74 /* time : 2008-08-06 */
75 /* descript: 时钟信号和数据信号都释放变成高电平,注意先释放时钟,后释放数据更好 */
76 /********************************************************************************/
77 void I2C_initialize(void)
78 { I2C_SCLK_PIN=0x0;
79 1 IIC_delay_min();
80 1 I2C_DATA_PIN=0x1;
81 1 IIC_delay_min();
82 1 I2C_SCLK_PIN=0x1;
83 1 IIC_delay_min();
84 1 }
85
86 /********************************************************************************/
87 /* funname : I2C_start() */
88 /* created : xillinx */
89 /* time : 2008-08-06 */
90 /* descript: 必须从空闲状态下,保持时钟信号为高电平,拉低数据信号 */
91 /********************************************************************************/
92 void I2C_start(void)
93 { I2C_DATA_PIN=0x0; //* 启动信号
94 1 IIC_delay_min();
95 1 I2C_SCLK_PIN=0x0; //* 准备发送数据
96 1 IIC_delay_min();
97 1 }
98
99 /********************************************************************************/
100 /* funname : I2C_stop() */
101 /* created : xillinx */
102 /* time : 2008-08-06 */
103 /* descript: 保持时钟信号为高电平,释放数据信号为高电平 */
104 /********************************************************************************/
105 void I2C_stop(void)
106 { I2C_SCLK_PIN=0x1;
107 1 IIC_delay_min();
108 1 I2C_DATA_PIN=0x1;
109 1 IIC_delay_min();
110 1 }
111
112 /********************************************************************************/
113 /* funname : I2C_go_hi() */
114 /* created : xillinx */
115 /* time : 2008-08-06 */
116 /* descript: 在时钟为低时把数据置为高,然后把时钟置为高 */
C51 COMPILER V8.02 EEPROM 09/26/2008 11:40:17 PAGE 3
117 /********************************************************************************/
118 void I2C_go_hi(void)
119 { I2C_DATA_PIN=0x1;
120 1 IIC_delay_min();
121 1 I2C_SCLK_PIN=0x1;
122 1 IIC_delay_min();
123 1 }
124
125 /********************************************************************************/
126 /* funname : I2C_send_bit() */
127 /* created : xillinx */
128 /* time : 2008-08-06 */
129 /* descript: 发送一位数据给IIC器件 */
130 /********************************************************************************/
131 void I2C_send_bit(unsigned char mbit)
132 { I2C_DATA_PIN=mbit;
133 1 IIC_delay_min();
134 1 I2C_SCLK_PIN=0x1;
135 1 IIC_delay_max();
136 1 I2C_SCLK_PIN=0x0;
137 1 IIC_delay_min();
138 1 }
139
140 /********************************************************************************/
141 /* funname : I2C_send_8_bits() */
142 /* created : xillinx */
143 /* time : 2008-08-06 */
144 /* descript: 发送一位数据给IIC器件,结束之后,数据线由mdata的最后一位决定,时钟 */
145 /* 线输出低电平 */
146 /********************************************************************************/
147 void I2C_send_8_bits(unsigned char mdata)
148 { unsigned char i;
149 1 for(i=0x0;i<0x8;i++)
150 1 { if(mdata&0x80)
151 2 { I2C_send_bit(0x1);
152 3 }
153 2 else
154 2 { I2C_send_bit(0x0);
155 3 }
156 2 mdata<<=0x1;
157 2 }
158 1 I2C_DATA_PIN=0x0;
159 1 IIC_delay_min();
160 1 }
161
162 /********************************************************************************/
163 /* funname : I2C_read_ack() */
164 /* created : xillinx */
165 /* time : 2008-08-06 */
166 /* descript: I2C总线的数据都是以字节(8位)的方式传送的,发送器件每发送一个字节之 */
167 /* 后,在时钟的第9个脉冲期间释放数据总线, 由接收器发送一个ACK(把数据总线的电平 */
168 /* 拉低)来表示数据成功接收。 */
169 /********************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -