📄 fm24c16a.lst
字号:
C51 COMPILER V7.06 FM24C16A 01/22/2007 09:50:05 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE FM24C16A
OBJECT MODULE PLACED IN .\output\FM24C16A.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE FM24C16A.C OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND OBJECT(.\output\FM24
-C16A.obj)
stmt level source
1 #include"includes.h"
2 bdata unsigned char aba;
3 sbit abita0=aba^0;sbit abita1=aba^1;sbit abita2=aba^2;sbit abita3=aba^3;
4 sbit abita4=aba^4;sbit abita5=aba^5;sbit abita6=aba^6;sbit abita7=aba^7;
5 sbit FMSCLA = P3^3;
6 sbit FMSDAA = P3^4;
7 /***************************************************/
8 //void load_work_step_infomation_from_fm(unsigned char work_step)
9 //{
10 // current_ws_type = read_f24c16_byte(FM_WORK_STEP_INFO_BASE+4+work_step*7+0);
11 // current_ws_current = read_f24c16_int (FM_WORK_STEP_INFO_BASE+4+work_step*7+1);
12 // current_ws_voltage = read_f24c16_int (FM_WORK_STEP_INFO_BASE+4+work_step*7+3);
13 // current_ws_minute = read_f24c16_int (FM_WORK_STEP_INFO_BASE+4+work_step*7+5);
14 //}
15
16 void I_delayA(void)
17 {
18 1 // _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
19 1 }
20 void I_delaylA(void)
21 {
22 1 // _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
23 1 // _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
24 1 }
25 /************************************************************
26 *函数原型:void I_start(void); *
27 * 功能: 提供I2C总线工作时序中的起始位。 *
28 ************************************************************/
29 void I_startA(void)
30 {
31 1 FMSCLA = HIGH;I_delaylA();
32 1 FMSDAA = LOW;I_delayA();
33 1 FMSCLA = LOW;I_delayA();
34 1 }
35 /************************************************************
36 *函数原型:void function I_stop(void); *
37 * 功能: 提供I2C总线工作时序中的停止位。 *
38 ************************************************************/
39 void I_stopA(void)
40 {
41 1 FMSDAA = LOW;I_delayA();
42 1 FMSCLA = HIGH;I_delaylA();
43 1 FMSDAA = HIGH;I_delayA();
44 1 FMSCLA = LOW;I_delayA();
45 1 }
46 /**************************************************************/
47 /*函数原型:void function I_init(void); *
48 * 功能: I2C总线初始化。在MAIN()函数中应首先调用本函数, *
49 * 然后再调用其它函数。 */
50 /********************************** ****************************/
51 void I_initA(void)
52 {
53 1 FMSCLA = LOW;I_delayA();
54 1 I_stopA();I_delayA();
C51 COMPILER V7.06 FM24C16A 01/22/2007 09:50:05 PAGE 2
55 1 }
56 /*********************************************************************************************************
-*************/
57 /*函数原型:bit void function I_clock(void);
58 * 功能: 提供I2C总线的时钟信号,并返回在时钟电平为高期间FMSDAA信号线上状态。本函数可用于数据发送,也可
-用于数据接收。*/
59 /*********************************************************************************************************
-************/
60 bit I_clockA(void)
61 {
62 1 bit sample;
63 1 FMSCLA = HIGH;I_delaylA();
64 1 sample = FMSDAA;I_delayA();
65 1 FMSCLA = LOW;I_delayA();
66 1 return (sample);
67 1 }
68 /*********************************************************************************************************
-****/
69 /*函数原型:bit void function I_send(unsigned char I_data);
70 * 功能: 向I2C总线发送8位数据,并请求一个应答信号ACK。如果收到ACK应答则返回1(TRUE),否则返回0(FALSE
-)。*
71 /*********************************************************************************************************
-****/
72 bit I_sendA(unsigned char I_data)
73 {
74 1 aba = I_data;
75 1 FMSDAA = abita7;;FMSCLA = HIGH;I_delaylA();FMSCLA = LOW;I_delayA();
76 1 FMSDAA = abita6;;FMSCLA = HIGH;I_delaylA();FMSCLA = LOW;I_delayA();
77 1 FMSDAA = abita5;;FMSCLA = HIGH;I_delaylA();FMSCLA = LOW;I_delayA();
78 1 FMSDAA = abita4;;FMSCLA = HIGH;I_delaylA();FMSCLA = LOW;I_delayA();
79 1 FMSDAA = abita3;;FMSCLA = HIGH;I_delaylA();FMSCLA = LOW;I_delayA();
80 1 FMSDAA = abita2;;FMSCLA = HIGH;I_delaylA();FMSCLA = LOW;I_delayA();
81 1 FMSDAA = abita1;;FMSCLA = HIGH;I_delaylA();FMSCLA = LOW;I_delayA();
82 1 FMSDAA = abita0;;FMSCLA = HIGH;I_delaylA();FMSCLA = LOW;I_delayA();
83 1 FMSDAA = HIGH;I_delayA();
84 1 return(~I_clockA());
85 1 }
86 /********************************************************************/
87 /*函数原型:unsigned char function I_receive(void); *
88 *功能: 从I2C总线接收8位数据,并将接收到8位数据作为一个字节返回,*
89 *不回送应答信号ACK。主函数在调用本函数之前应保证FMSDAA信号线个于浮置状 *
90 *态,即使8051的P1.7脚置1. */
91 /********************************************************************/
92 unsigned char I_receiveA(void)
93 {
94 1 FMSCLA = HIGH;I_delaylA();abita7 = FMSDAA;FMSCLA = LOW;I_delayA();
95 1 FMSCLA = HIGH;I_delaylA();abita6 = FMSDAA;FMSCLA = LOW;I_delayA();
96 1 FMSCLA = HIGH;I_delaylA();abita5 = FMSDAA;FMSCLA = LOW;I_delayA();
97 1 FMSCLA = HIGH;I_delaylA();abita4 = FMSDAA;FMSCLA = LOW;I_delayA();
98 1 FMSCLA = HIGH;I_delaylA();abita3 = FMSDAA;FMSCLA = LOW;I_delayA();
99 1 FMSCLA = HIGH;I_delaylA();abita2 = FMSDAA;FMSCLA = LOW;I_delayA();
100 1 FMSCLA = HIGH;I_delaylA();abita1 = FMSDAA;FMSCLA = LOW;I_delayA();
101 1 FMSCLA = HIGH;I_delaylA();abita0 = FMSDAA;FMSCLA = LOW;I_delayA();
102 1 return (aba);
103 1 }
104 /******************************************************************/
105 /******************************************************************/
106 /*函数原型:void function I_ack(void); *
107 功能: 向I2C总线发送一个应答案信号ACK,一般用于连续数据读取时.*/
108 /******************************************************************/
109 /*void function I_Ack(void)
110 {
C51 COMPILER V7.06 FM24C16A 01/22/2007 09:50:05 PAGE 3
111 FMSDAA = LOW;
112 I_clock();
113 FMSDAA = HIGH;
114 } */
115 /****************************************************************************
116 * 函数原型: bit function E_address(unsigned char Address);
117 * 功 能: 向f24C16写入器件地址和一个指定的字节地址。
118 *****************************************************************************/
119 void E_addressA( unsigned char Device_Address,unsigned char Address )
120 {
121 1 I_startA() ;
122 1 I_sendA( Device_Address&0xfe );
123 1 I_sendA( Address );
124 1 }
125 /*********************************************************************************************************
126 ** 函数名称: EepromReadByte
127 ** 功能描述: 从指定的地址读出一个字节数据
128 ** 输 入: address,bytenumber
129 ** 输 出: 所读数据
130 ** 全局变量: 无
131 ** 调用模块: SM_Receive
132 ** 注 意:此函数不可重入,使用前要先申请信号量
133 ** 作 者: 刘宝贵
134 ** 日 期: 2004年5月5日
135 **-------------------------------------------------------------------------------------------------------
136 ** 修改人:
137 ** 日 期:
138 **-------------------------------------------------------------------------------------------------------
139 *********************************************************************************************************/
140 uint8 EepromReadByteA (uint16 address)
141 {
142 1 unsigned char a;
143 1 unsigned char device_address,data_address;
144 1 data_address=(unsigned char)address;
145 1 device_address=(unsigned char)(address>>8);
146 1 device_address=device_address<<1;
147 1 device_address=device_address&0x0f;
148 1 device_address=device_address|0xA1;
149 1 I_initA();
150 1 E_addressA( device_address,data_address );
151 1 I_startA();
152 1 I_sendA(device_address);
153 1 a = I_receiveA();
154 1 I_stopA();
155 1 return(a);
156 1 }
157 /*********************************************************************************************************
158 ** 函数名称: EepromReadWord
159 ** 功能描述: 从指定的地址读出一个字节数据
160 ** 输 入: address,bytenumber
161 ** 输 出: 所读数据
162 ** 全局变量: 无
163 ** 调用模块: SM_Receive
164 ** 注 意:此函数不可重入,使用前要先申请信号量
165 ** 作 者: 刘宝贵
166 ** 日 期: 2004年5月5日
167 **-------------------------------------------------------------------------------------------------------
168 ** 修改人:
169 ** 日 期:
170 **-------------------------------------------------------------------------------------------------------
171 *********************************************************************************************************/
172 uint16 EepromReadWordA (uint16 address)
C51 COMPILER V7.06 FM24C16A 01/22/2007 09:50:05 PAGE 4
173 {
174 1 unsigned int a;
175 1 unsigned char b,c;
176 1 b = EepromReadByteA(address);
177 1 c = EepromReadByteA(address+1);
178 1 a=b;
179 1 a=a<<8;
180 1 a=a|c;
181 1 return(a);
182 1 }
183 /*********************************************************************************************************
184 ** 函数名称: EepromWriteByte
185 ** 功能描述: 在指定的地址写入指定的字节
186 ** 输 入: address,temp
187 ** 输 出: 无
188 ** 全局变量:
189 ** 调用模块: SM_Send
190 ** 注 意:此函数不可重入,使用前要先申请信号量
191 ** 作 者: 刘宝贵
192 ** 日 期: 2004年5月5日
193 **-------------------------------------------------------------------------------------------------------
194 ** 修改人:
195 ** 日 期:
196 **-------------------------------------------------------------------------------------------------------
197 *********************************************************************************************************/
198 void EepromWriteByteA(uint16 address ,uint8 temp)
199 {
200 1 uint8 device_address,data_address;
201 1 data_address=(uint8)address;
202 1 device_address=(uint8)(address>>8);
203 1 device_address=device_address<<1;
204 1 device_address=device_address&0xe;
205 1 device_address=device_address|0xA0;
206 1 I_initA();
207 1 E_addressA( device_address,data_address );
208 1 I_sendA(temp);
209 1 I_stopA();
210 1 }
211 /*********************************************************************************************************
212 ** 函数名称: EepromWriteWord
213 ** 功能描述: 在指定的地址写入指定的字节
214 ** 输 入: address,temp16
215 ** 输 出: 无
216 ** 全局变量:
217 ** 调用模块: SM_Send
218 ** 注 意:此函数不可重入,使用前要先申请信号量
219 ** 作 者: 刘宝贵
220 ** 日 期: 2004年5月5日
221 **-------------------------------------------------------------------------------------------------------
222 ** 修改人:
223 ** 日 期:
224 **-------------------------------------------------------------------------------------------------------
225 *********************************************************************************************************/
226 void EepromWriteWordA(uint16 address ,uint16 pata_data)
227 {
228 1 uint8 high_byte,low_byte;
229 1 high_byte =(uint8)( pata_data>>8);
230 1 EepromWriteByteA(address,high_byte);
231 1 low_byte =(uint8)( pata_data&0xff);
232 1 EepromWriteByteA( address+1, low_byte);
233 1 }
234
C51 COMPILER V7.06 FM24C16A 01/22/2007 09:50:05 PAGE 5
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 465 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 4
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -