📄 93lc46b.lst
字号:
C51 COMPILER V7.20 93LC46B 11/06/2006 20:13:29 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE 93LC46B
OBJECT MODULE PLACED IN .\obj\93LC46B.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE 93LC46B.C BROWSE DEBUG OBJECTEXTEND PRINT(.\obj\93LC46B.lst)
-OBJECT(.\obj\93LC46B.obj)
line level source
1 #include "indash.h"
2
3 void EEPROM_Init()
4 {
5 1 EEPROM_CS = 0;
6 1 EEPROM_CLK= 0;
7 1 EEPROM_DI = 0;
8 1 EEPROM_DO = 0;
9 1 if ((EEPROM_Receive_25_Bit(OP_READ, EE_CHECK_SUM_ADDR) != CHECK_SUM_VALUE) & (EEPROM_Receive_25_Bit(OP_
-READ, EE_CHECK_SUM_ADDR1) != CHECK_SUM_VALUE))
10 1 {
11 2 EEPROM_Transmit_9_Bit(OP_EWEN, 0x30);
12 2 EEPROM_Transmit_9_Bit(OP_ERAL, 0x20); /* clear all */
13 2 EEPROM_Transmit_25_Bit(OP_WRITE, EE_CHECK_SUM_ADDR, CHECK_SUM_VALUE);
14 2 Initial_Value();
15 2 EEPROM_Transmit_25_Bit(OP_WRITE, EE_CHECK_SUM_ADDR1, CHECK_SUM_VALUE);
16 2 }
17 1 EEPROM_Transmit_9_Bit(OP_EWEN, 0x30);
18 1 Recall_Initial_Value();
19 1 }
20
21
22 void EEPROM_Clock()
23 {
24 1 /* COMMON clk */
25 1 EEPROM_CLK = 0;
26 1 EEPROM_CLK = 0;
27 1 EEPROM_CLK = 1;
28 1 EEPROM_CLK = 1;
29 1 EEPROM_CLK = 1;
30 1 EEPROM_CLK = 1;
31 1 EEPROM_CLK = 1;
32 1 EEPROM_CLK = 1;
33 1 EEPROM_CLK = 1;
34 1 EEPROM_CLK = 1;
35 1 EEPROM_CLK = 1;
36 1 EEPROM_CLK = 1;
37 1 EEPROM_CLK = 1;
38 1 EEPROM_CLK = 1;
39 1 EEPROM_CLK = 1;
40 1 EEPROM_CLK = 1;
41 1 EEPROM_CLK = 1;
42 1 EEPROM_CLK = 1;
43 1 EEPROM_CLK = 0;
44 1 EEPROM_CLK = 0;
45 1
46 1 }
47
48 void EEPROM_Transmit_Byte(unsigned char value)reentrant
49 {
50 1 static char cnt = 0;
51 1
52 1 cnt++;
53 1 if (cnt < 8)
C51 COMPILER V7.20 93LC46B 11/06/2006 20:13:29 PAGE 2
54 1 EEPROM_Transmit_Byte(value / 2);
55 1 else
56 1 cnt = 0;
57 1
58 1 EEPROM_DI = value % 2;
59 1 EEPROM_Clock();
60 1 }
61
62 void EEPROM_Transmit_Addr_Byte(unsigned char value)reentrant
63 {
64 1 static char cnt = 0;
65 1
66 1 cnt++;
67 1 if (cnt < 6)
68 1 EEPROM_Transmit_Addr_Byte(value / 2);
69 1 else
70 1 cnt = 0;
71 1
72 1 EEPROM_DI = value % 2;
73 1 EEPROM_Clock();
74 1 }
75
76 void EEPROM_Transmit_25_Bit(char opcode, unsigned char addr, unsigned int value)
77 {
78 1 EA = Disable;
79 1 /***** transmit first time *****/
80 1 EEPROM_CS = 1; //P1.4
81 1
82 1 /* start 1 bit */
83 1 EEPROM_DI = 1;//P1.2
84 1 EEPROM_Clock();
85 1
86 1 /* opcode 2 bit */
87 1 EEPROM_DI = opcode / 2;
88 1 EEPROM_Clock();
89 1 EEPROM_DI = opcode % 2;
90 1 EEPROM_Clock();
91 1
92 1 /* address 6 bit */
93 1 EEPROM_Transmit_Addr_Byte(addr );
94 1
95 1 /* data 16 bit */
96 1 EEPROM_Transmit_Byte(value / 256);
97 1 EEPROM_Transmit_Byte(value % 256);
98 1
99 1 EEPROM_CS = 0;
100 1 EEPROM_Clock();
101 1 EEPROM_DI = 0;
102 1
103 1 /* wait EEPROM finish */
104 1 if (opcode != OP_WRAL)
105 1 Delay(500); /* delay 6ms */
106 1 else
107 1 Delay(1000); /* delay 15ms */
108 1 EA = Enable;
109 1 /***** CHECK TRANSMIT VALUE **/
110 1 Delay(4000);
111 1 EEPROM_Receive_25_Bit( OP_READ, addr);
112 1 }
113
114 unsigned int EEPROM_Receive_25_Bit(char opcode,unsigned char addr)
115 {
C51 COMPILER V7.20 93LC46B 11/06/2006 20:13:29 PAGE 3
116 1 char i;
117 1 // char buf[5];
118 1 unsigned int value = 0;
119 1 unsigned int value1= 0;
120 1 unsigned int value2= 0;
121 1 unsigned int xor_value = 0;
122 1 /**** receive the first time ******/
123 1
124 1 EEPROM_CS = 1;
125 1
126 1 /* start 1 bit */
127 1 EEPROM_DI = 1;
128 1 EEPROM_Clock();
129 1
130 1 /* opcode 2 bit*/
131 1 EEPROM_DI = opcode / 2;
132 1 EEPROM_Clock();
133 1 EEPROM_DI = opcode % 2;
134 1 EEPROM_Clock();
135 1
136 1 /* address 6 bit */
137 1 EEPROM_Transmit_Addr_Byte(addr);
138 1
139 1 /* data 16 bit */
140 1 EEPROM_DI = 1; /* impotant */
141 1 for (i = 0; i < 16; i++)
142 1 {
143 2 EEPROM_Clock();
144 2 if (EEPROM_DO)
145 2 value |= 0x01 << (15 - i);
146 2 }
147 1
148 1 EEPROM_CS = 0;
149 1 EEPROM_Clock();
150 1 EEPROM_DI = 0;
151 1 /*
152 1 Printxy_Normal( 1,5,"value" , FONT_GREEN);
153 1 Printxy_Normal( 8,5 , Ntoa((signed long) value, Fill(buf, 5, ' '), LEFT, ' '), FONT_GREEN);
154 1 */
155 1
156 1
157 1 return(value);
158 1 }
159
160 void EEPROM_Transmit_9_Bit(char opcode, unsigned char addr)
161 {
162 1 EEPROM_CS = 1;
163 1
164 1 /* start 1 bit */
165 1 EEPROM_DI = 1;
166 1 EEPROM_Clock();
167 1
168 1 /* opcode 2 bit*/
169 1 EEPROM_DI = opcode / 2;
170 1 EEPROM_Clock();
171 1 EEPROM_DI = opcode % 2;
172 1 EEPROM_Clock();
173 1
174 1 /* address 6 bit */
175 1 EEPROM_Transmit_Addr_Byte(addr);
176 1
177 1 EEPROM_CS = 0;
C51 COMPILER V7.20 93LC46B 11/06/2006 20:13:29 PAGE 4
178 1 EEPROM_Clock();
179 1 EEPROM_DI = 0;
180 1
181 1 /* wait EEPROM finish */
182 1 Delay(500); /* delay 6ms */
183 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 454 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 12
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 + -