📄 ks0108.lst
字号:
C51 COMPILER V7.50 KS0108 11/23/2005 17:17:07 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE KS0108
OBJECT MODULE PLACED IN Ks0108.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Ks0108.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <regx52.h>
2 #include <intrins.h>
3
4 sbit RS = P2^6; /*"H" is send or read the data;"L" is the instruction*/
5 sbit RW = P3^6;
6 sbit E = P2^5; /*Operation enable*/
7 sbit CS1 = P2^4;
8 sbit CS2 = P2^3;
9 sbit CS3 = P2^2;
10
11
12 #define DATA P0
13 #define uchar unsigned char
14 #define uint unsigned int
15
16 /*----------------------------------------------------------------------------
17 Delay some time
18 ------------------------------------------------------------------------------*/
19 void delay10ms(unsigned char x)
20 {
21 1 unsigned char i,j,k;
22 1 for(i=0;i<x;i++)
23 1 for(j=0;j<15;j++)
24 1 for(k=0;k<120;k++);
25 1 }
26 /*----------------------------------------------------------------------------
27 Send the instruction to the First KS0108 window
28 ------------------------------------------------------------------------------
29 --*/
30 void OutFI(uchar i)
31 {
32 1 unsigned char data_sta;
33 1 EA=0;
34 1 do{
35 2 E=0;RW=1;RS=0;CS1=0;_nop_();
36 2 E=1;_nop_();_nop_();_nop_();
37 2 data_sta=DATA;
38 2 _nop_();_nop_();
39 2 E=0;RW=0;CS1=1;
40 2 }while(data_sta&0x80);
41 1
42 1 E=0;RW=0;RS=0;CS1=0;_nop_();
43 1 DATA=i;
44 1 E=1;_nop_();_nop_();_nop_();
45 1 E=0;RW=1;CS1=1;
46 1 EA=1;
47 1 }
48
49 /*----------------------------------------------------------------------------
50 Send the instruction to the Second KS0108 window.
51 ------------------------------------------------------------------------------
52 --*/
53 void OutSI(uchar i)
54 {
55 1 unsigned char data_sta;
C51 COMPILER V7.50 KS0108 11/23/2005 17:17:07 PAGE 2
56 1 EA=0;
57 1 do{
58 2 E=0;RW=1;RS=0;CS2=0;_nop_();
59 2 E=1;_nop_();_nop_();_nop_();
60 2 data_sta=DATA;
61 2 _nop_();_nop_();
62 2
63 2 E=0;RW=0;CS2=1;
64 2 }while(data_sta&0x80);
65 1
66 1 E=0;RW=0;RS=0;CS2=0;_nop_();
67 1 DATA=i;
68 1 E=1;_nop_();_nop_();_nop_();
69 1 E=0;RW=1;CS2=1;
70 1 EA=1;
71 1 }
72 /*----------------------------------------------------------------------------
73 Send the instruction to the Third KS0108 window
74 ------------------------------------------------------------------------------
75 --*/
76 void OutTI(uchar i)
77 {
78 1 unsigned char data_sta;
79 1 EA=0;
80 1 do{
81 2 E=0;RW=1;RS=0;CS3=0;_nop_();
82 2 E=1;_nop_();_nop_();_nop_();
83 2 data_sta=DATA;
84 2 _nop_();_nop_();
85 2 E=0;RW=0;CS3=1;
86 2 }while(data_sta&0x80);
87 1
88 1 E=0;RW=0;RS=0;CS3=0;_nop_();
89 1 DATA=i;
90 1 E=1;_nop_();_nop_();_nop_();
91 1 E=0;RW=1;CS3=1;
92 1 EA=1;
93 1 }
94
95 /*----------------------------------------------------------------------------
96 Send the data to the First ks0108 Window
97 ------------------------------------------------------------------------------
98 --*/
99 void OutFD(uchar i)
100 {
101 1 unsigned char data_sta;
102 1 EA=0;
103 1 do{
104 2 E=0;RW=1;RS=0;CS1=0;_nop_();
105 2 E=1;_nop_();_nop_();_nop_();
106 2 data_sta=DATA;
107 2 _nop_();_nop_();
108 2 E=0;RW=0;CS1=1;
109 2 }while(data_sta&0x80);
110 1
111 1 E=0;RW=0;RS=1;CS1=0;_nop_();
112 1 DATA=i;
113 1 E=1;_nop_();_nop_();_nop_();
114 1 E=0;RW=1;CS1=1;
115 1 EA=1;
116 1 }
117 /*----------------------------------------------------------------------------
C51 COMPILER V7.50 KS0108 11/23/2005 17:17:07 PAGE 3
118 Send the data to the Second ks0108 Window
119 ------------------------------------------------------------------------------
120 --*/
121 void OutSD(uchar i)
122 {
123 1 unsigned char data_sta;
124 1 EA=0;
125 1 do{
126 2 E=0;RW=1;RS=0;CS2=0;_nop_();
127 2 E=1;_nop_();_nop_();_nop_();
128 2 data_sta=DATA;
129 2 _nop_();_nop_();
130 2 E=0;RW=0;CS2=1;
131 2 }while(data_sta&0x80);
132 1
133 1 E=0;RW=0;RS=1;CS2=0;_nop_();
134 1 DATA=i;
135 1 E=1;_nop_();_nop_();_nop_();
136 1 E=0;RW=1;CS2=1;
137 1 EA=1;
138 1 }
139 /*----------------------------------------------------------------------------
140 Send the data to the Third ks0108 Window
141 ------------------------------------------------------------------------------
142 --*/
143 void OutTD(uchar i)
144 {
145 1 unsigned char data_sta;
146 1 EA=0;
147 1 do{
148 2 E=0;RW=1;RS=0;CS3=0;_nop_();
149 2 E=1;_nop_();_nop_();_nop_();
150 2 data_sta=DATA;
151 2 _nop_();_nop_();
152 2 E=0;RW=0;CS3=1;
153 2 }while(data_sta&0x80);
154 1
155 1 E=0;RW=0;RS=1;CS3=0;_nop_();
156 1 DATA=i;
157 1 E=1;_nop_();_nop_();_nop_();
158 1 E=0;RW=1;CS3=1;
159 1 EA=1;
160 1 }
161 /*------------------------------------------------------------------------------
162 Initialize the LCD,The system reset,invoke First time
163 --------------------------------------------------------------------------------
164 -*/
165 void InitLCD()
166 {
167 1 OutFI(0x40); /*Set the Y address 0 */
168 1 OutSI(0x40);
169 1 OutTI(0x40);
170 1 OutFI(0xb8); /*Set the Page 0 */
171 1 OutSI(0xb8);
172 1 OutTI(0xb8);
173 1 OutFI(0xc0); /*Set the display start line 0 */
174 1 OutSI(0xc0);
175 1 OutTI(0xc0);
176 1 OutFI(0x3f); /*Display ON */
177 1 OutSI(0x3f);
178 1 OutTI(0x3f);
179 1 }
C51 COMPILER V7.50 KS0108 11/23/2005 17:17:07 PAGE 4
180 /*------------------------------------------------------------------------------
181 Clear the three ks0108's display ram.
182 Clrscr screen
183 --------------------------------------------------------------------------------
184 -*/
185 void Clrscreen()
186 {
187 1 unsigned char i,j;
188 1
189 1 for(i=0;i<8;i++)
190 1 {
191 2 OutFI(0xb8|i);
192 2 for(j=0;j<64;j++)
193 2 {
194 3 OutFI(j|0x40);
195 3 OutFD(0);
196 3 }
197 2 }
198 1 for(i=0;i<8;i++)
199 1 {
200 2 OutSI(0xb8|i);
201 2 for(j=0;j<64;j++)
202 2 {
203 3 OutSI(j|0x40);
204 3 OutSD(0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -