gy1206e6.lst
来自「STN ST7920 TEST CODE AND SPEC.」· LST 代码 · 共 340 行
LST
340 行
C51 COMPILER V6.23a GY1206E6 05/28/2003 11:41:43 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE GY1206E6
OBJECT MODULE PLACED IN GY1206e6.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE GY1206e6.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 // ST7920 128*64 2003.3.25
2 #include <reg52.h>
3 #include <delay.c>
4 #include <intrins.h>
5
6 #define true 1
7 #define false 0
8
9 sbit CS=P3^1;
10 sbit SID=P1^7;
11 sbit SCLK=P1^6;
12 sbit RES=P3^7;
13
14 void SendMode( Uchar );
15 void SendCom( Uchar );
16 void SendData( Uchar );
17 void Initial(void);
18 void Disp( Uchar, Uchar );
19 void DispChar( Uchar, Uchar );
20 //void DispBmp(Uchar *);
21 void DispRow( Uchar, Uchar );
22
23 Uchar c1=0xb0;
24 Uchar c2=0xa0;
25
26 Uchar Com_mode = 0xf8;
27 Uchar Data_mode = 0xfa;
28 bit Command_mode = true;
29 //extern char code w[];
30
31 void main(void)
32 {
33 1 SCLK = 0;
34 1 Initial();
35 1
36 1 while(1)
37 1 {
38 2
39 2 SendCom(0x01); //DDRAM clear
40 2 delay(20);
41 2 DispRow(0x0ff,0);
42 2 DispRow(0x00,0x0ff);
43 2 Disp(0xaa,0xaa);
44 2 Disp(0x55,0x55);
45 2 DispRow(0xaa,0x55);
46 2 DispRow(0x55,0xaa);
47 2 Disp(0x00,0x00);
48 2
49 2 DispChar(c1,c2);
50 2
51 2 DispChar(0xc0,0xbc);
52 2 DispChar(0xb7,0xe6);
53 2 DispChar(0xc3,0xf7);
54 2
55 2 }
C51 COMPILER V6.23a GY1206E6 05/28/2003 11:41:43 PAGE 2
56 1
57 1 }
58 /*
59 void DispBmp(Uchar *p)
60 {
61 Uchar HorAdd=0x80;
62 Uchar VerAdd=0x80;
63 SendCom(0x04); // I/D =0
64 for(;VerAdd<0x80+32;VerAdd++)
65 {
66 SendCom(0x34); // RE=1;
67 SendCom(0x36); // Graphics=1;
68
69 SendCom(VerAdd);
70 SendCom(0x80);
71 SendCom(0x32); // RE=0;
72
73 for(HorAdd = 0; HorAdd <0x0f; HorAdd++) {SendCom(*p++);SendCom(*p++);}//{SendCom(Updat);SendCom(Dnda
-t);}
74 }
75
76 delay(10000);
77 SendCom(0x30); // RE=0;
78
79 }
80 */
81 void Disp(Uchar dot1,Uchar dot2)
82 {
83 1 Uchar HorAdd=0x80;
84 1 Uchar VerAdd=0x80;
85 1
86 1 for(;VerAdd<0x80+32;VerAdd++)
87 1 {
88 2 SendCom(0x34); // RE=1;
89 2 SendCom(0x36); // Graphics=1;
90 2
91 2 SendCom(VerAdd);
92 2 SendCom(0x80);
93 2 SendCom(0x32); // RE=0;
94 2
95 2 for(HorAdd = 0; HorAdd <0x0f; HorAdd++)
96 2 {
97 3 SendData(dot1); SendData(dot1);
98 3 SendData(dot2); SendData(dot2);
99 3 }
100 2 }
101 1
102 1 delay(5000);
103 1
104 1 SendCom(0x30); // RE=0;
105 1 }
106 void DispRow(Uchar dot1,Uchar dot2)
107 {
108 1 Uchar HorAdd=0x80;
109 1 Uchar VerAdd=0x80;
110 1 Uchar Temp=0;
111 1 bit flag=1;
112 1
113 1 for(;VerAdd<0x80+32;VerAdd++)
114 1 {
115 2 SendCom(0x34); // RE=1;
116 2 SendCom(0x36); // Graphics=1;
C51 COMPILER V6.23a GY1206E6 05/28/2003 11:41:43 PAGE 3
117 2
118 2 SendCom(VerAdd);
119 2 SendCom(0x80);
120 2 SendCom(0x32); // RE=0;
121 2
122 2 if (flag==1)
123 2 {
124 3 Temp = dot1;
125 3 flag=0;
126 3 }
127 2 else
128 2 {
129 3 Temp = dot2;
130 3 flag=1;
131 3 }
132 2 for(HorAdd = 0; HorAdd <0x0f; HorAdd++)
133 2 {
134 3
135 3 SendData(Temp);SendData(Temp);
136 3 SendData(Temp);SendData(Temp);
137 3
138 3 }
139 2 }
140 1
141 1 delay(5000);
142 1 SendCom(0x30); // RE=0;
143 1 }
144 void DispChar(Uchar Updat,Uchar Dndat)
145 {
146 1 Uchar cnt=0;
147 1 SendCom(0x04); // I/D =0
148 1 // SendCom(0x02);
149 1 SendCom(0x9f); // SET DDRAM 00 TO AC
150 1 for(c1++,cnt=0;c1<0xf7,cnt<32;cnt++) {SendData(c1);SendData(c2++);}//{SendCom(Updat);SendCom(Dndat);}
151 1 delay(5000);
152 1 }
*** WARNING C280 IN LINE 144 OF GY1206E6.C: 'Updat': unreferenced local variable
*** WARNING C280 IN LINE 144 OF GY1206E6.C: 'Dndat': unreferenced local variable
153
154 void Initial()
155 {
156 1 delay(500);
157 1 RES =0;
158 1 delay(100);
159 1 RES =1;
160 1 delay(100);
161 1
162 1 SendCom(0x30); //Function set 00 1 DL : x RE G 0
163 1
164 1 SendCom(0x0c); // 0000 : 1 D C B ;display on
165 1
166 1 SendCom(0x34); // RE=1 Function set
167 1
168 1 SendCom(0x0c); // sleep mode off
169 1 SendCom(0x02); // enable CGRAM
170 1
171 1 SendCom(0x30); // RE =0;Function set
172 1
173 1 delay(150);
174 1
175 1 }
176
C51 COMPILER V6.23a GY1206E6 05/28/2003 11:41:43 PAGE 4
177
178 void SendCom(Uchar dat)
179 {
180 1 Uchar cnt = 4;
181 1
182 1 if( !Command_mode )
183 1 {
184 2 SendMode(Com_mode);
185 2 Command_mode = true;
186 2 }
187 1 SendMode(Com_mode);
188 1 while(cnt--) // Higher 4 bit data
189 1 {
190 2 SID = (bit)( 0x80 & dat );
191 2 _nop_();
192 2 SCLK = 1;
193 2 _nop_();
194 2 SCLK = 0;
195 2 dat<<=1;
196 2 }
197 1 cnt = 4;
198 1 while(cnt--) // fill with 0
199 1 {
200 2 SID = 0;
201 2 _nop_();
202 2 SCLK = 1;
203 2 _nop_();
204 2 SCLK = 0;
205 2 _nop_();
206 2 }
207 1 delay(0);
208 1 cnt = 4;
209 1 while(cnt--) // Lower 4 bit data
210 1 {
211 2 SID = (bit)( 0x80 & dat );
212 2 _nop_();
213 2 SCLK = 1;
214 2 _nop_();
215 2 SCLK = 0;
216 2 dat<<=1;
217 2 }
218 1 cnt = 4;
219 1 while(cnt--) // fill with 0
220 1 {
221 2 SID = 0;
222 2 _nop_();
223 2 SCLK = 1;
224 2 _nop_();
225 2 SCLK = 0;
226 2 _nop_();
227 2 }
228 1 delay(0);
229 1 }
230
231
232 void SendData(Uchar dat)
233 {
234 1 Uchar cnt = 4;
235 1
236 1 if( Command_mode )
237 1 {
238 2 SendMode(Data_mode);
C51 COMPILER V6.23a GY1206E6 05/28/2003 11:41:43 PAGE 5
239 2 Command_mode = false;
240 2 }
241 1 SendMode(Data_mode);
242 1 while(cnt--) // Higher 4 bit data
243 1 {
244 2 SID = (bit)( 0x80 & dat );
245 2 _nop_();
246 2 SCLK = 1;
247 2 _nop_();
248 2 SCLK = 0;
249 2 dat<<=1;
250 2 }
251 1 cnt = 4;
252 1 while(cnt--) // fill with 0
253 1 {
254 2 SID = 0;
255 2 _nop_();
256 2 SCLK = 1;
257 2 _nop_();
258 2 SCLK = 0;
259 2 _nop_();
260 2 }
261 1 delay(0);
262 1 cnt = 4;
263 1 while(cnt--) // Lower 4 bit data
264 1 {
265 2 SID = (bit)( 0x80 & dat );
266 2 _nop_();
267 2 SCLK = 1;
268 2 _nop_();
269 2 SCLK = 0;
270 2 dat<<=1;
271 2 }
272 1 cnt = 4;
273 1 while(cnt--) // fill with 0
274 1 {
275 2 SID = 0;
276 2 _nop_();
277 2 SCLK = 1;
278 2 _nop_();
279 2 SCLK = 0;
280 2 _nop_();
281 2 }
282 1 delay(0);
283 1 }
284
285
286 void SendMode(Uchar com)
287 {
288 1 Uchar cnt = 8;
289 1 CS = 0;
290 1 _nop_();
291 1 CS = 1;
292 1 delay(0);
293 1 while(cnt--) // Higher 4 bit data
294 1 {
295 2 SID = (bit)( 0x80 & com );
296 2 _nop_();
297 2 SCLK = 1;
298 2 _nop_();
299 2 SCLK = 0;
300 2 com<<=1;
C51 COMPILER V6.23a GY1206E6 05/28/2003 11:41:43 PAGE 6
301 2 }
302 1 delay(0);
303 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 734 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 16
IDATA SIZE = ---- ----
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?