?? eeprom.lst
字號:
C51 COMPILER V7.02a EEPROM 01/23/2006 10:15:25 PAGE 1
C51 COMPILER V7.02a, COMPILATION OF MODULE EEPROM
OBJECT MODULE PLACED IN eeprom.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE eeprom.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*= eeprom.c ===================================================================
2 *
3 * Copyright (C) 2004 Nordic Semiconductor
4 *
5 * This file is distributed in the hope that it will be useful, but WITHOUT
6 * WARRANTY OF ANY KIND.
7 *
8 * Author(s): Ole Saether
9 *
10 * COMPILER:
11 *
12 * This program has been tested with Keil C51 V7.09
13 *
14 * $Revision: 3 $
15 *
16 *==============================================================================
17 */
18 //#include "nrfexx.h"
19 //#include "util.h"
20 #include "eeprom.h"
21
22 #define EE_WRSR 0x01
23 #define EE_WRITE 0x02
24 #define EE_READ 0x03
25 #define EE_WRDI 0x04
26 #define EE_RDSR 0x05
27 #define EE_WREN 0x06
28
29 void EEInit(void)
30 {
31 1
32 1 P0_DIR &= ~0x01; // EECSN is output
33 1 SPICLK = 2; // CLK/32 SPI clock
34 1 EECSN = 1;
35 1 SPI_CTRL = 0x01; // Connect internal SPI to P1
36 1 }
37
38 unsigned char EEStatus(void)
39 {
40 1 unsigned char b;
41 1
42 1 EECSN = 0;
43 1 SpiReadWrite(EE_RDSR);
44 1 b = SpiReadWrite(0);
45 1 EECSN = 1;
46 1 return b;
47 1 }
48 /***************************************************************************************
49 Function: EERead
50 Description: 從eeprom中讀出一個數據
51 Calls: SpiReadWrite();
52 Called By:
53 void EERxbyte(unsigned int addr_str,unsigned char *a)
54 Input:
55 addr: 要讀出數據的地址
C51 COMPILER V7.02a EEPROM 01/23/2006 10:15:25 PAGE 2
56 Output:
57 Return:
58 b:讀出的數據
59 Others:
60 ***************************************************************************************/
61 unsigned char EERead(unsigned int addr)
62 {
63 1 unsigned char b;
64 1
65 1 while ((EEStatus() & 0x01) != 0x00) // Wait if busy
66 1 ;
67 1 EECSN = 0;
68 1 SpiReadWrite(EE_READ);
69 1 SpiReadWrite(addr >> 8);
70 1 SpiReadWrite(addr & 0xff);
71 1 b = SpiReadWrite(0);
72 1 EECSN = 1;
73 1 return b;
74 1 }
75 /***************************************************************************************
76 Function: EEWrite
77 Description: 寫一個數據到eeprom中,
78 Calls: SpiReadWrite();
79 Called By:
80 vvoid EEWxbyte(unsigned int addr_str,unsigned char *a)
81 Input:
82 addr: 要寫入的地址 b,要寫入的數據
83 Output:
84 Return:
85 Others:
86 ***************************************************************************************/
87 void EEWrite(unsigned int addr, unsigned char b)
88 {
89 1 while((EEStatus() & 0x01) != 0x00) // Wait if busy
90 1 ;
91 1 EECSN = 0;
92 1 SpiReadWrite(EE_WREN);
93 1 EECSN = 1;
94 1 EECSN = 0;
95 1 SpiReadWrite(EE_WRITE);
96 1 SpiReadWrite(addr >> 8);
97 1 SpiReadWrite(addr & 0x00ff);
98 1 SpiReadWrite(b);
99 1 EECSN = 1;
100 1 }
101
102 /***************************************************************************************
103 Function: EEWxbyte
104 Description: 連續的寫四個數到eeprom中
105 Calls: EEWrite(unsigned int addr, unsigned char b)
106 Called By:
107 void main(void)
108 Input:
109 addr: 寫數據的開始地址 a:寫入數據的開始地址 I:寫入數據的個數
110 Output: a[0]-a[I-1];
111 Return:
112 Others:
113 ***************************************************************************************
114 void EEWxbyte(unsigned int addr_str,unsigned char *a,unsigned char I)
115 {
116 unsigned char i;
117 unsigned char *snr;
C51 COMPILER V7.02a EEPROM 01/23/2006 10:15:25 PAGE 3
118 memcpy(snr,a,I);
119 for(i=0;i++;i<I)
120 {
121 EEWrite(addr_str, snr[i]);
122 //EEWrite(addr_str, 0x23);
123 addr_str++;
124 }
125 memcpy(a,snr,I);
126 }
127
128 ***************************************************************************************
129 Function: EERxbyte
130 Description: 連續的寫四個數到eeprom中
131 Calls: EERrite(unsigned int addr, unsigned char b)
132 Called By:
133 void main(void)
134 Input:
135 addr: 讀數據的開始地址 a:讀數據的開始地址 I:寫入數據的個數
136 Output: a[0]-a[i];
137 Return:
138 Others:
139 ***************************************************************************************
140 void EERxbyte(unsigned int addr_str,unsigned char *a,unsigned char I)
141 {
142 unsigned char i;
143 unsigned char *snr;
144 memcpy(snr,a,I);
145 for(i=0;i++;i<I)
146 {
147 snr[i] = EERead(addr_str);
148 addr_str++;
149 }
150 memcpy(a,snr,I) ;
151 }
152 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 116 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
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 + -