📄 nand.lst
字号:
C51 COMPILER V7.10 NAND 04/14/2009 23:28:42 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE NAND
OBJECT MODULE PLACED IN .\nand.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\SourceFile\nand.c BROWSE DEBUG OBJECTEXTEND PRINT(.\nand.lst) OBJECT(.\n
-and.obj)
line level source
1 #include "common.h"
2
3
4 static U8 idata nf_state = 0;
5 static U16 idata nf_block = 0;
6 static U8 idata nf_page = 0;
7 U16 idata nf_blockpage = 0;
8 static idata U32 nf_Counter = 0;
9
10
11
12 static void NandWaitBusy(void)
13 {
14 1 while(!RNB);
15 1 }
16
17
18 void nand_save_bitmap_init(void)
19 {
20 1 nf_state = 0;
21 1 nf_block = 0;
22 1 nf_page = 0;
23 1 nf_blockpage = 0;
24 1 nf_Counter = 0;
25 1
26 1 return;
27 1 }
28
29
30 U16 nand_read_id(void)
31 {
32 1 U8 makercode;
33 1 U8 devicecode;
34 1
35 1 NAND_CMD(0x90);
36 1 NAND_ADDR(0x00);
37 1
38 1 makercode = NAND_DATA_READ();
39 1 devicecode = NAND_DATA_READ();
40 1
41 1 return (((U16)makercode) << 8) | devicecode;
42 1 }
43
44 U8 nand_read_state(void)
45 {
46 1 return NAND_CMD(0x70), NAND_DATA_READ() & 0x01;
47 1 }
48
49 bool nand_erase_block(U16 block)
50 {
51 1 block = block << 6;
52 1
53 1 NAND_CMD(0x60);
54 1 //NAND_ADDR(0);
C51 COMPILER V7.10 NAND 04/14/2009 23:28:42 PAGE 2
55 1 //NAND_ADDR(0);
56 1 NAND_ADDR(block & 0xff);
57 1 NAND_ADDR((block >> 8) & 0xff);
58 1
59 1 NAND_CMD(0xD0);
60 1 //while(1);
61 1 NandWaitBusy();
62 1 if (nand_read_state() == 0)
63 1 {
64 2 return 1;
65 2 }
66 1 else
67 1 {
68 2 return 0;
69 2 }
70 1 }
71
72 //**************************************************
73 //一张图片为77440B,用38页空间来存储,0~36页写满,第37页只用前1664字节
74 //一个Block有64页,只用前38页,后26页空白,可存1024张图片
75 //**************************************************
76 void nand_save_bitmap(U8 rdat)
77 {
78 1 //U8 x,y;
79 1
80 1
81 1 switch(nf_state)
82 1 {
83 2 case 0://存储page的第一个数据
84 2 nf_blockpage = (nf_block << 6) + nf_page;
85 2
86 2 NAND_CMD(0x80);
87 2
88 2 NAND_ADDR(0);
89 2 NAND_ADDR(0);
90 2 NAND_ADDR(nf_blockpage & 0xff);
91 2 NAND_ADDR((nf_blockpage >> 8) & 0xff);
92 2
93 2 NAND_DATA_WRITE(rdat);
94 2 nf_Counter++;
95 2 nf_state=1;
96 2 break;
97 2
98 2 case 1://存储数据到page
99 2 NAND_DATA_WRITE(rdat);
100 2 nf_Counter++;
101 2 if(nf_Counter == 2048)
102 2 {
103 3 nf_Counter = 0;
104 3 nf_page++;
105 3 nf_state = 0;
106 3
107 3 NAND_CMD(0x10);
108 3 NandWaitBusy();
109 3
110 3 }
111 2
112 2 break;
113 2
114 2 default:
115 2 break;
116 2
C51 COMPILER V7.10 NAND 04/14/2009 23:28:42 PAGE 3
117 2 }
118 1 }
119
120 void nand_disp_bitmap(U16 block)
121 {
122 1 U16 blockpage = 0;
123 1 U8 page = 0;
124 1 U8 i = 0;
125 1 U8 HData, LData;
126 1
127 1 lcd_set_write_area(0, 0, 239, 319);
128 1
129 1 for(page = 0; page < 75; page++)
130 1 {
131 2 blockpage = (block << 6) + page;
132 2
133 2 NAND_CMD(0);
134 2
135 2 NAND_ADDR(0);
136 2 NAND_ADDR(0);
137 2 NAND_ADDR(blockpage & 0xff);
138 2 NAND_ADDR((blockpage >> 8) & 0xff);
139 2
140 2 NAND_CMD(0x30);
141 2
142 2 NandWaitBusy();
143 2
144 2
145 2 for(i = 0; i < 64; i++)
146 2 {
147 3 HData = NAND_DATA_READ();
148 3 LData = NAND_DATA_READ();
149 3 WMLCDDATA(HData , LData);
150 3 HData = NAND_DATA_READ();
151 3 LData = NAND_DATA_READ();
152 3 WMLCDDATA(HData , LData);
153 3 HData = NAND_DATA_READ();
154 3 LData = NAND_DATA_READ();
155 3 WMLCDDATA(HData , LData);
156 3 HData = NAND_DATA_READ();
157 3 LData = NAND_DATA_READ();
158 3 WMLCDDATA(HData , LData);
159 3 HData = NAND_DATA_READ();
160 3 LData = NAND_DATA_READ();
161 3 WMLCDDATA(HData , LData);
162 3 HData = NAND_DATA_READ();
163 3 LData = NAND_DATA_READ();
164 3 WMLCDDATA(HData , LData);
165 3 HData = NAND_DATA_READ();
166 3 LData = NAND_DATA_READ();
167 3 WMLCDDATA(HData , LData);
168 3 HData = NAND_DATA_READ();
169 3 LData = NAND_DATA_READ();
170 3 WMLCDDATA(HData , LData);
171 3 HData = NAND_DATA_READ();
172 3 LData = NAND_DATA_READ();
173 3 WMLCDDATA(HData , LData);
174 3 HData = NAND_DATA_READ();
175 3 LData = NAND_DATA_READ();
176 3 WMLCDDATA(HData , LData);
177 3 HData = NAND_DATA_READ();
178 3 LData = NAND_DATA_READ();
C51 COMPILER V7.10 NAND 04/14/2009 23:28:42 PAGE 4
179 3 WMLCDDATA(HData , LData);
180 3 HData = NAND_DATA_READ();
181 3 LData = NAND_DATA_READ();
182 3 WMLCDDATA(HData , LData);
183 3 HData = NAND_DATA_READ();
184 3 LData = NAND_DATA_READ();
185 3 WMLCDDATA(HData , LData);
186 3 HData = NAND_DATA_READ();
187 3 LData = NAND_DATA_READ();
188 3 WMLCDDATA(HData , LData);
189 3 HData = NAND_DATA_READ();
190 3 LData = NAND_DATA_READ();
191 3 WMLCDDATA(HData , LData);
192 3 HData = NAND_DATA_READ();
193 3 LData = NAND_DATA_READ();
194 3 WMLCDDATA(HData , LData);
195 3 }
196 2 }
197 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 664 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
IDATA SIZE = 10 ----
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 + -