?? lcdp.lst
字號:
C51 COMPILER V6.11.4C, LCDP 04/01/103 02:34:46 PAGE 1
QCW(0x00002D1A)
WIN32 C51 COMPILER V6.11.4C, COMPILATION OF MODULE LCDP
OBJECT MODULE PLACED IN d:\solar_charge_controller\scca\lcdp.obj
COMPILER INVOKED BY: C51.EXE D:\SOLAR_CHARGE_CONTROLLER\SCCA\LCDP.C OBJECT(D:\SO
-LAR_CHARGE_CONTROLLER\SCCA\LCDP.OBJ) PIN(D:\FSI\INC) NOAM PR(D:\SOL
-AR_CHARGE_CONTROLLER\SCCA\LCDP.LST) CD SB OE(1) SM FP(NOFLOAT) PW(8
-0)
stmt level source
1 /*--------------------------------
2 lcd display 16x2 chinese
3 driver chip st7920
4 2002.12.28
5 ----------------------------*/
6 #include <stdlib.h>
7 #include <ctype.h>
8 #include <intrins.h>
9 #include <AT89X52.H>
10
11 #include "LCDP.H"
12
13 extern void delay(unsigned int i);
14 //---------------------------
15 //display string
16 static void isBusy(void);
17
18 void text(unsigned char sta,unsigned char *string)
19 {
20 1 if(sta)WC_LCD(sta);
21 1 while(*string)WD_LCD(*string++);
22 1 }
23
24 #pragma NOAREGS
25
26 //-------------------------------
27 //LCD display char,write data to LCD ram
28
29 #pragma DISABLE
30
31 void WD_LCD(unsigned char ch)
32 {
33 1 isBusy();
34 1 LCDRS=1;
35 1 LCDRW=0;
36 1 _nop_();
37 1 _nop_();
38 1 P0=ch;
39 1 _nop_();
40 1 _nop_();
41 1 ENABLE=1;
42 1 _nop_();
43 1 _nop_();
44 1 _nop_();
45 1 ENABLE=0;
46 1 _nop_();
47 1 _nop_();
48 1 }
49 //---------------------------------
50 //write lcd controll register
51
52 #pragma DISABLE
53
54 void WC_LCD (unsigned char command)
55 {
56 1 isBusy();
57 1 LCDRS=0;
58 1 _nop_();
59 1 LCDRW=0;
60 1 _nop_();
61 1 _nop_();
62 1 P0=command;
63 1 _nop_();
64 1 _nop_();
65 1 ENABLE=1;
66 1 _nop_();
67 1 _nop_();
68 1 _nop_();
69 1 ENABLE=0;
70 1 _nop_();
71 1 _nop_();
72 1 }
73 //----------------------------------------------
74 //LCD busy check ,check busy flag,read acc
75
76 static void isBusy(void)
77 {
78 1 unsigned char data i;
79 1 i=ACC;
80 1 P0=0x0ff;
81 1 _nop_();
82 1 LCDRS=0;
83 1 LCDRW=1;
84 1 _nop_();
85 1 _nop_();
86 1 ENABLE=1;
87 1 _nop_();
88 1 _nop_();
89 1 _nop_();
90 1 do{ ACC=P0; } while(BUSYFLAG);
91 1 _nop_();
92 1 _nop_();
93 1 ENABLE=0;
94 1 _nop_();
95 1 _nop_();
96 1 ACC=i;
97 1 }
98 //------------------------------------------------
99 //init lcd
100
101 #pragma DISABLE
102
103 void clear(void)
104 {
105 1 WC_LCD(0x18);//base command,8bit
106 1 isBusy();
107 1 LCDRS=0;
108 1 LCDRW=0;
109 1 _nop_();
110 1 _nop_();
111 1 P0=0x1;
112 1 _nop_();
113 1 ENABLE=1;
114 1 delay(4);
115 1 ENABLE=0;
116 1 _nop_();
117 1 _nop_();
118 1 }
119
120 #pragma AREGS
121
122
C51 COMPILER V6.11.4C, LCDP 04/01/103 02:34:46 PAGE 2
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _text (BEGIN)
; SOURCE LINE # 21
0000 8F00 R MOV sta,R7
0002 8B00 R MOV string,R3
0004 8A00 R MOV string+01H,R2
0006 8900 R MOV string+02H,R1
; SOURCE LINE # 20
0008 EF MOV A,R7
0009 6005 JZ ?WHILE1
000B AF00 R MOV R7,sta
000D 120000 R LCALL _WC_LCD
0010 ?WHILE1:
; SOURCE LINE # 21
0010 AB00 R MOV R3,string
0012 AA00 R MOV R2,string+01H
0014 A900 R MOV R1,string+02H
0016 120000 R LCALL IPGN1?C
0019 6013 JZ ?NXT3
001B 0500 R INC string+02H
001D E500 R MOV A,string+02H
001F 7004 JNZ ?LAB2
0021 0500 R INC string+01H
0023 E500 R MOV A,string+01H
0025 ?LAB2:
0025 120000 R LCALL IPGN1?C
0028 FF MOV R7,A
0029 120000 R LCALL _WD_LCD
002C 80E2 SJMP ?WHILE1
002E ?NXT3:
002E 22 RET
; FUNCTION _text (END)
; FUNCTION _WD_LCD (BEGIN)
; SOURCE LINE # 47
0000 D3 SETB C
0001 10AF01 JBC EA,?LAB6
0004 C3 CLR C
0005 ?LAB6:
0005 C0D0 PUSH PSW
0007 8F00 R MOV ch,R7
; SOURCE LINE # 33
0009 120000 R LCALL isBusy?LCDP?S
; SOURCE LINE # 34
000C D2B4 SETB T0
; SOURCE LINE # 35
000E C295 CLR P1_5
; SOURCE LINE # 36
0010 00 NOP
; SOURCE LINE # 37
0011 00 NOP
; SOURCE LINE # 38
0012 850080 R MOV P0,ch
; SOURCE LINE # 39
0015 00 NOP
; SOURCE LINE # 40
0016 00 NOP
; SOURCE LINE # 41
0017 D2B5 SETB T1
; SOURCE LINE # 42
0019 00 NOP
; SOURCE LINE # 43
001A 00 NOP
; SOURCE LINE # 44
001B 00 NOP
; SOURCE LINE # 45
001C C2B5 CLR T1
; SOURCE LINE # 46
001E 00 NOP
; SOURCE LINE # 47
001F 00 NOP
0020 D0D0 POP PSW
0022 92AF MOV EA,C
0024 22 RET
; FUNCTION _WD_LCD (END)
; FUNCTION _WC_LCD (BEGIN)
; SOURCE LINE # 71
0000 D3 SETB C
0001 10AF01 JBC EA,?LAB9
0004 C3 CLR C
0005 ?LAB9:
0005 C0D0 PUSH PSW
0007 8F00 R MOV command,R7
; SOURCE LINE # 56
0009 120000 R LCALL isBusy?LCDP?S
; SOURCE LINE # 57
000C C2B4 CLR T0
; SOURCE LINE # 58
000E 00 NOP
; SOURCE LINE # 59
000F C295 CLR P1_5
; SOURCE LINE # 60
0011 00 NOP
; SOURCE LINE # 61
0012 00 NOP
; SOURCE LINE # 62
0013 850080 R MOV P0,command
; SOURCE LINE # 63
0016 00 NOP
; SOURCE LINE # 64
0017 00 NOP
; SOURCE LINE # 65
0018 D2B5 SETB T1
; SOURCE LINE # 66
001A 00 NOP
; SOURCE LINE # 67
001B 00 NOP
; SOURCE LINE # 68
001C 00 NOP
; SOURCE LINE # 69
001D C2B5 CLR T1
; SOURCE LINE # 70
001F 00 NOP
; SOURCE LINE # 71
0020 00 NOP
0021 D0D0 POP PSW
0023 92AF MOV EA,C
0025 22 RET
; FUNCTION _WC_LCD (END)
; FUNCTION isBusy?LCDP?S (BEGIN)
; SOURCE LINE # 79
0000 85E000 R MOV i,ACC
; SOURCE LINE # 80
0003 7580FF MOV P0,#0FFH
; SOURCE LINE # 81
0006 00 NOP
; SOURCE LINE # 82
0007 C2B4 CLR T0
; SOURCE LINE # 83
0009 D295 SETB P1_5
; SOURCE LINE # 84
000B 00 NOP
; SOURCE LINE # 85
000C 00 NOP
; SOURCE LINE # 86
000D D2B5 SETB T1
; SOURCE LINE # 87
000F 00 NOP
; SOURCE LINE # 88
0010 00 NOP
; SOURCE LINE # 89
0011 00 NOP
0012 ?DO1:
; SOURCE LINE # 90
0012 8580E0 MOV ACC,P0
0015 20E7FA JB BUSYFLAG,?DO1
; SOURCE LINE # 91
0018 00 NOP
; SOURCE LINE # 92
0019 00 NOP
; SOURCE LINE # 93
001A C2B5 CLR T1
; SOURCE LINE # 94
001C 00 NOP
; SOURCE LINE # 95
001D 00 NOP
; SOURCE LINE # 96
001E 8500E0 R MOV ACC,i
0021 22 RET
; FUNCTION isBusy?LCDP?S (END)
; FUNCTION clear (BEGIN)
; SOURCE LINE # 117
0000 D3 SETB C
0001 10AF01 JBC EA,?LAB14
0004 C3 CLR C
0005 ?LAB14:
0005 C0D0 PUSH PSW
; SOURCE LINE # 105
0007 7F18 MOV R7,#018H
0009 120000 R LCALL _WC_LCD
; SOURCE LINE # 106
000C 120000 R LCALL isBusy?LCDP?S
; SOURCE LINE # 107
000F C2B4 CLR T0
; SOURCE LINE # 108
0011 C295 CLR P1_5
; SOURCE LINE # 109
0013 00 NOP
; SOURCE LINE # 110
0014 00 NOP
; SOURCE LINE # 111
0015 758001 MOV P0,#001H
; SOURCE LINE # 112
0018 00 NOP
; SOURCE LINE # 113
0019 D2B5 SETB T1
; SOURCE LINE # 114
001B E4 CLR A
001C FE MOV R6,A
001D 7F04 MOV R7,#004H
001F 120000 R LCALL _delay
; SOURCE LINE # 115
0022 C2B5 CLR T1
; SOURCE LINE # 116
0024 00 NOP
; SOURCE LINE # 117
0025 00 NOP
0026 D0D0 POP PSW
0028 92AF MOV EA,C
002A 22 RET
; FUNCTION clear (END)
C51 COMPILER V6.11.4C, LCDP 04/01/103 02:34:46 PAGE 3
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
text . . . . . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
sta?094. . . . . . . . . . . . . . . PARAM DATA BASE 0000H 1
string?095 . . . . . . . . . . . . . PARAM DATA PTR 0001H 3
sta?094. . . . . . . . . . . . . . . PARAM DATA BASE 0000H 1
string?095 . . . . . . . . . . . . . PARAM DATA PTR 0001H 3
WD_LCD . . . . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
ch?096 . . . . . . . . . . . . . . . PARAM DATA BASE 0000H 1
ch?096 . . . . . . . . . . . . . . . PARAM DATA BASE 0000H 1
WC_LCD . . . . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
command?097. . . . . . . . . . . . . PARAM DATA BASE 0000H 1
command?097. . . . . . . . . . . . . PARAM DATA BASE 0000H 1
isBusy . . . . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
i?099. . . . . . . . . . . . . . . . . PUBLIC DATA BASE 0000H 1
clear. . . . . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
delay. . . . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
C51 COMPILER V6.11.4C, LCDP 04/01/103 02:34:46 PAGE 4
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 199 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 1
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING, 0 ERROR
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -