📄 bb.lst
字号:
179 1
C51 COMPILER V8.02 BB 04/17/2008 19:49:59 PAGE 4
180 1 DataLow;
181 1 ClkDown;
182 1 LEDown;
183 1
184 1 KB=1;
185 1
186 1 LED1=1;
187 1 LED2=1;
188 1
189 1 }
190
191
192 /***********************************/
193 /* 间接访问方式的驱动函数 */
194 /***********************************/
195 /* 直接驱动函数由4个子程序组成:
196 1.读BF和AC值函数WaitForEnable
197 2.写指令代码函数LcdWriteCommand
198 3.写显示数据函数LcdWriteData
199 4.读显示数据函数LcdReadData
200 */
201
202 /*---------读BF和AC值函数---------*/
203 /*
204 =======================================================
205 正常读写操作之前必须检测LCD控制器状态: CS=1 RS=0 RW=1
206 DB7: 0 LCD控制器空闲; 1 LCD控制器忙
207 ========================================================
208 */
209 void WaitForEnable( void )
210 {
211 1 DataPort = 0xff;
212 1 RS =0;RW = 1;
213 1 Elcm = 1;
214 1 /* 判BF=0? */
215 1 _nop_();
216 1 while( DataPort & Busy );
217 1 Elcm = 0;
218 1 //ACC=P1; while(ACC_7==1); com=cradd;
219 1 }
220
221
222 /*
223 =======================================================
224 写控制字符子程序: E=1 RS=0 RW=0
225 =======================================================
226 */
227 /*-----------写指令函数-----------*/
228 void LcdWriteCommand( void )
229 {
230 1 WaitForEnable(); // 检测忙信号?
231 1 RS = 0;RW = 0;
232 1 DataPort = com;
233 1 // 送控制字子程序
234 1 _nop_();
235 1 Elcm = 1;
236 1 _nop_();
237 1 _nop_();
238 1 Elcm = 0; // 操作允许脉冲信号
239 1 }
240
241
C51 COMPILER V8.02 BB 04/17/2008 19:49:59 PAGE 5
242 /*
243 =======================================================
244 当前位置写字符子程序: E =1 RS=1 RW=0
245 =======================================================
246 */
247 /*-----------写数据函数-----------*/
248 //void LcdWriteData( char dataW ) {
249 void LcdWriteData( void )
250 {
251 1 WaitForEnable();
252 1 // 检测忙信号
253 1 RS = 1;RW = 0;
254 1 DataPort = dat;
255 1 _nop_();
256 1 Elcm = 1;
257 1 _nop_();
258 1 _nop_();
259 1 Elcm = 0; // 操作允许脉冲信号
260 1
261 1 }
262
263
264 /*
265 =======================================================
266 initialization of LCD
267 =======================================================
268 */
269 void initLCD(void)
270 {
271 1
272 1
273 1 unsigned char i,j;
274 1
275 1 for(j=0;j<3;j++)
276 1 {
277 2 RS=0;
278 2 RW=0;
279 2 DataPort=Work_M;
280 2 Elcm=1;
281 2 _nop_();
282 2 Elcm=0;
283 2 for(i=0;i<180;i++);
284 2 Elcm=1;
285 2 _nop_();
286 2 Elcm=0;
287 2 }
288 1
289 1 com=Work_M;
290 1 LcdWriteCommand();
291 1
292 1 com=Screen_Off;
293 1 LcdWriteCommand();
294 1
295 1 com=Cls;
296 1 LcdWriteCommand();
297 1
298 1 com=Input_M;
299 1 LcdWriteCommand();
300 1
301 1 com=Disp_M;
302 1 LcdWriteCommand();
303 1 }
C51 COMPILER V8.02 BB 04/17/2008 19:49:59 PAGE 6
304
305
306 /*
307 =======================================================
308 disp the string
309 =======================================================
310 */
311 void Dispall(void)
312 {
313 1 uchar i;
314 1 com = Ddram_Al1;
315 1 LcdWriteCommand();
316 1
317 1 for (i=0;i<16;i++)
318 1 {
319 2 dat=dispc[0][i];
320 2 LcdWriteData(); // 写字符
321 2 }
322 1
323 1 com = Ddram_Al2;
324 1 LcdWriteCommand();
325 1
326 1 for (i=0;i<16;i++)
327 1 {
328 2 dat=dispc[1][i];
329 2 LcdWriteData();
330 2 }
331 1 }
332
333 //////
334 void Dispall1(void)
335 {
336 1 uchar i;
337 1 com = Ddram_Al1;
338 1 LcdWriteCommand();
339 1
340 1 for (i=0;i<16;i++)
341 1 {
342 2 dat=low[0][i];
343 2 LcdWriteData(); // 写字符
344 2 }
345 1
346 1 com = Ddram_Al2;
347 1 LcdWriteCommand();
348 1
349 1 for (i=0;i<16;i++)
350 1 {
351 2 dat=low[1][i];
352 2 LcdWriteData();
353 2 }
354 1 }
355 //==============================================================================================
356 /****************************************************************
357 ;说明CPU配置WDTE=1WDSE=0
358 ;***************************************************************/
359 void init_wdt()
360 {
361 1 ACC = WDCON; //读取WDT控制寄存器
362 1 ACC = ACC|0xc5; //置位ACC.2准备启动WDT PRE2PRE1PRE0=110_D765 WDCLK_D0当该位为1时选择看门狗振荡器作为时钟
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -