📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 03/09/2008 16:42:09 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Program Files\keil7.06\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1
2 #include <AT89X52.H>
3
4 #define uchar unsigned char
5 #define uint unsigned int
6 #define lcd_clr 0x01
7 #define you_on 0x0f
8
9 //全局变量定义
10 sbit rs = P2^0;
11 sbit rw = P2^1;
12 sbit e = P2^2;
13 sbit psb = P2^3;
14 sbit rst = P2^5;
15 //sbit lcd_deng = P2^3;
16
17
18 //函数申明
19 void lcd_ini(void);
20 void lcd_wrc(uchar com);
21 void lcd_wrd(uchar dat);
22 void lcd_checkbusy();
23 delay(uchar n);
24 ldelay(uint n);
25 void lcd_on();
26 void lcd_off();
27 uchar lcd_read_ac();
28 void lcd_dis_num(uint dat);
29 void lcd_dis_ch(uchar h,uchar l);
30 void lcd_add(uchar h,uchar l);
31
32
33
34
35 void main()
36 {
37 1 uchar i;
38 1 // lcd_off();
39 1 // lcd_on();
40 1 lcd_ini();
41 1
42 1 // lcd_wrd(0xb5);
43 1 // lcd_wrd(0xf1);
44 1 while(1)
45 1 {
46 2 lcd_add(2,2);
47 2 lcd_dis_ch(0xb4,0xa1);
48 2 }
49 1
50 1 // for(i=0;i<10;i++)
51 1 // {
52 1 // lcd_wrd(0x30+i);
53 1 // }
54 1
55 1 lcd_dis_ch(0xb4,0xa1);
C51 COMPILER V7.06 MAIN 03/09/2008 16:42:09 PAGE 2
56 1 // lcd_wrc(0x01);
57 1 // lcd_wrc(0x0f);
58 1
59 1 lcd_dis_ch(0xb4,0xa1);
60 1 i=lcd_read_ac();
61 1 i=lcd_read_ac();
62 1 lcd_dis_num(i);
63 1 lcd_wrc(you_on);
64 1 lcd_wrc(0x10);
65 1 lcd_wrd(0x05);
66 1
67 1 while(1);
68 1 }
69
70
71 void lcd_ini()
72 {
73 1
74 1 delay(100);
75 1 psb = 1;
76 1 delay(100);
77 1 rst = 1;
78 1 delay(100);
79 1 // lcd_wrc(0x34);
80 1 lcd_wrc(0x30);
81 1 delay(10);
82 1 lcd_wrc(0x30);
83 1 delay(10);
84 1 lcd_wrc(0x01);
85 1 delay(10);
86 1 lcd_wrc(0x06);
87 1 delay(10);
88 1 lcd_wrc(0x0c);
89 1 delay(100);
90 1 }
91 void lcd_wrc(uchar com)
92 {
93 1 lcd_checkbusy();
94 1 rs = 0;
95 1 rw = 0;
96 1 e = 1;
97 1 P0 = com;
98 1 P0 = com;
99 1 delay(10);
100 1 e = 0;
101 1 }
102
103 void lcd_wrd(uchar dat)
104 {
105 1 lcd_checkbusy();
106 1 rs = 1;
107 1 rw = 0;
108 1 e = 1;
109 1 P0 = dat;
110 1 P0 = dat;
111 1 delay(10);
112 1 e = 0;
113 1 }
114 void lcd_checkbusy()
115 {
116 1 uchar busy;
117 1 P0 = 0XFF;
C51 COMPILER V7.06 MAIN 03/09/2008 16:42:09 PAGE 3
118 1 busy = P0;
119 1 if(busy>0x7f)
120 1 {
121 2 rs = 0;
122 2 rw = 1;
123 2 e = 1;
124 2 busy = P0;
125 2 e = 0;
126 2 delay(10);
127 2 }
128 1 }
129 uchar lcd_rdd();
130 delay(uchar n)
131 {
132 1 while(n--);
133 1 }
134 ldelay(uint n)
135 {
136 1 uint a;
137 1 for(a=0;a<10000;a++)
138 1 {
139 2 while(n--);
140 2 }
141 1 }
142 /*
143 void lcd_on()
144 {
145 lcd_deng = 0;
146 }
147 void lcd_off()
148 {
149 lcd_deng = 1;
150 }
151 */
152 uchar lcd_read_ac()
153 {
154 1 uchar dat;
155 1 // P0 = 0X00;
156 1 rs = 0;
157 1 rw = 1;
158 1 e = 1;
159 1 dat = P0;
160 1 dat = P0;
161 1 e = 0;
162 1 return(dat&0x7f);
163 1 }
164 void lcd_dis_num(uint dat)
165 {
166 1 uint a=0;
167 1 dat =dat%10000;
168 1 a =dat/1000;
169 1 lcd_wrd(0x30+a);
170 1 dat =dat%1000;
171 1 a =dat/100;
172 1 lcd_wrd(0x30+a);
173 1 dat =dat%100;
174 1 a=dat/10;
175 1 lcd_wrd(0x30+a);
176 1 dat =dat%10;
177 1 lcd_wrd(0x30+dat);
178 1 }
179 void lcd_dis_ch(uchar h,uchar l)
C51 COMPILER V7.06 MAIN 03/09/2008 16:42:09 PAGE 4
180 {
181 1 lcd_wrd(h);
182 1 lcd_wrd(l);
183 1 }
184
185 void lcd_add(uchar h,uchar l) //定位地址
186 {
187 1 l--;
188 1 switch(h)
189 1 {
190 2 case 1:
191 2 {
192 3 lcd_wrc(0x80+l);
193 3 break;
194 3 }
195 2 case 2:
196 2 {
197 3 lcd_wrc(0x90+l);
198 3 break;
199 3 }
200 2 case 3:
201 2 {
202 3 lcd_wrc(0x88+l);
203 3 break;
204 3 }
205 2 case 4:
206 2 {
207 3 lcd_wrc(0x98+l);
208 3 break;
209 3 }
210 2 }
211 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 376 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 7
IDATA SIZE = ---- ----
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 + -