📄 lcm16864zk.lst
字号:
C51 COMPILER V7.06 LCM16864ZK 11/15/2006 18:43:11 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LCM16864ZK
OBJECT MODULE PLACED IN D:\KEIL\备分\LCM16864ZK.OBJ
COMPILER INVOKED BY: C:\COMP51\C51.EXE D:\KEIL\备分\LCM16864ZK.C DB SB OE
stmt level source
*** WARNING C500 IN LINE 1 OF D:\KEIL\备分\LCM16864ZK.C: MISSING DEVICE (SECURITY KEY NOT FOUND)
1 #include <absacc.h>
2 #include <reg51.h>
3 #include "main.h"
4
5 #define WARNBYTE XBYTE[0x5FFF] //射频报警地址
6 //#define XBYTE((char * )0x10000L)
7
8
9
10 void main(void)
11 {
12 1 SP=0x30;
13 1 IE=0X95;
14 1 IT1=0;
15 1 // Delay_s(1);
16 1 Delay_ms(2);
17 1 SystemInitial(); //系统初始化
18 1 while(1)
19 1 {
20 2 //WritCommand(0x0e);
21 2 Delay_ms(10); //显示初始画面
22 2 ShowTime();
23 2 if(LKEY==0)
24 2 {
25 3 Delay_ms(10);
26 3 if(LKEY==0)
27 3 {
28 4 while(1){if(LKEY==1)break;}
29 4 ShScreen1();
30 4 DisplayInitial();
31 4
32 4 }
33 3 }
34 2
35 2 if(flag)
36 2 {
37 3 flag=0;
38 3 WarnDeal();
39 3 Delay_s(3);
40 3 DisplayInitial();
41 3 }
42 2
43 2 if(flag1)
44 2 {
45 3 flag1=0;
46 3 if(status==0x0f)
47 3 {
48 4 WarnTaleSet();
49 4 }
50 3 }
51 2
52 2 }
53 1 }
54
C51 COMPILER V7.06 LCM16864ZK 11/15/2006 18:43:11 PAGE 2
55 void SystemInitial(void) // 系统初始化程序
56 {
57 1 uchar i;
58 1 P3=0XFF; //P1,P3口的第二的功能先输出1
59 1 for(i=0;i<=3;i++)
60 1 CodeNum[i]=0;
61 1 pdx=0x0100; //防抢设置向量地址
62 1 *pdx=0x00; // 向量数目
63 1 pdx=0x0200; //防盗设置向量首地址
64 1 *pdx=0x00;
65 1 pdx=0x0300; //放火设置向量首地址
66 1 *pdx=0x00;
67 1 pdx=0x0400; //报警发生存储向量首地址
68 1 *pdx=0x00;
69 1
70 1 CalendarInitial(calen);
71 1 BurstR1302(calen);
72 1 ShowInitial(); //显示模块初始化
73 1 DisplayInitial(); //显示初始画面
74 1 }
75
76 void ShowInitial(void) //显示初始化
77 {
78 1 P2=0X1F;
79 1 Delay_ms(22); //delay > 40ms
80 1 //i=00110000B;
81 1 WritCommand(0x30); //function set
82 1 Delay_us(6); //delay > 100us
83 1
84 1 WritCommand(0x30); //function set
85 1 Delay_us(3); //delay > 37us
86 1
87 1 WritCommand(0x0c); //display set D=1 C=1 B=0
88 1 Delay_us(6); //>100us
89 1
90 1
91 1 WritCommand(0x01); //display clear
92 1 Delay_ms(7); //>10ms
93 1
94 1 //i=00000110B
95 1 WritCommand(0x06); //enter nod set
96 1 P2=0X0F;
97 1
98 1 }
99
100 /////////////////////////////////////////////////////
101
102 void Delay_us(uchar i) //delay 8 * i us
103 {
104 1 uchar j;
105 1 for(j=0;j<i;j++);
106 1 }
107
108 void Delay_ms(uchar i) // delay i * 1000 us=i ms
109 {
110 1 uchar sum=125,j,k;
111 1 for(j=0;j<i;j++)
112 1 for(k=0;k<sum;k++);
113 1 }
114
115 void Delay_s(uchar i)
116 {
C51 COMPILER V7.06 LCM16864ZK 11/15/2006 18:43:11 PAGE 3
117 1 uint sum=125000,k;
118 1 uchar j;
119 1 for(j=0;j<i;j++)
120 1 for(k=0;k<sum;k++);
121 1
122 1 }
123
124 ///////////////////////////////////////////////////////
125
126 void WritCommand(uchar i) //写命令
127 {
128 1 P2=0X1F;
129 1 Waitfree();
130 1 S_RS=0;
131 1 S_RW=0;
132 1 E=1; //E=1
133 1 P0 = i;
134 1 _WR=0;
135 1 E=0; //E=0
136 1 _WR=1;
137 1 P2=0X0F;
138 1 }
139 //////////////////////////////////////////////////////////
140
141 ///////////////////////////////////////////////////////
142
143 void WritData(uchar i) //写数据
144 {
145 1 P2=0X1F;
146 1 Waitfree();
147 1 S_RS=1;
148 1 S_RW=0;
149 1 E=1; //E=1
150 1 P0=i;
151 1 _WR=0;
152 1 E=0;
153 1 _WR=1;
154 1 P2=0X0F;
155 1 }
156
157 //////////////////////////////////////////////////////////
158
159 void DisplayInitial(void)
160 {
161 1 WritCommand(0x01); //显示初始画面
162 1 WritCommand(0x91);
163 1 WritData(0xBC);WritData(0xAF);WritData(0xB3);WritData(0xc9); //集成警务系统
164 1 WritData(0xbe);WritData(0xaf);WritData(0xce);WritData(0xf1);
165 1 WritData(0xcf);WritData(0xb5);WritData(0xcd);WritData(0xb3);
166 1 WritCommand(0x98);
167 1 WritData(0xc3);WritData(0xdc);WritData(0xc2);WritData(0xeb); //密码门
168 1 WritData(0xc3);WritData(0xc5);
169 1 WritCommand(0x89);
170 1 WritData(0xcf);WritData(0xe6);WritData(0xcc);WritData(0xb6); //湘潭大学研制
171 1 WritData(0xb4);WritData(0xf3);WritData(0xd1);WritData(0xa7);
172 1 WritData(0xd1);WritData(0xd0);WritData(0xd6);WritData(0xc6);
173 1 }
174
175 /////////////////////////////////////////////////////////////
176
177 void Waitfree(void)
178 {
C51 COMPILER V7.06 LCM16864ZK 11/15/2006 18:43:11 PAGE 4
179 1 P0=0XFF;
180 1 S_RS=0;
181 1 S_RW=1;
182 1 _RD=0;
183 1 ACC=P0;
184 1 while(ACC7==1)
185 1 {
186 2 _RD=0;
187 2 P2=0X1F;
188 2 E=1;
189 2 ACC=P0;
190 2 E=0;
191 2 }
192 1 _RD=1;
193 1 S_RS=0;
194 1 S_RW=0;
195 1 }
196
197 /////////////////////////////////////////////////////////////////
198 ///////////////////////////////////////////////////////日历程序
199
200 void CalendarInitial(pcalen)//日历初始化程序
201 uchar pcalen[8];
202 {
203 1 uchar i;
204 1 BurstW1302(pcalen); //读日历,并送到pcalen[]中
205 1 i=Read1302(0x80);
206 1 i=i&0x7f; //ch=0
207 1 Writ1302(0x80,i); //起震,
208 1 }
209
210
211 void BurstR1302(pcalen) // 从1302读多字节,并存入日历数组中
212 uchar pcalen[8];
213 {
214 1 uchar i;
215 1 T_RST=0;
216 1 T_CLK=0;
217 1 T_RST=1;
218 1 RTInputByte(0xbf); //oxbf 时钟多字节读命令
219 1 for(i=0; i<8; i++)
220 1 {
221 2 *pcalen=RTOutputByte(); //读1BYTE的数据
222 2 pcalen++ ;
223 2 }
224 1 T_CLK=1;
225 1 T_RST=0;
226 1 }
227
228 ////////////////////////////////////////////////////////
229
230 void RTInputByte(udata) //to1302写入一字节的数据
231 uchar udata;
232 {
233 1 uchar i;
234 1 ACC=udata;
235 1 for(i=8;i>0;i--)
236 1 {
237 2 T_IO=ACC0;
238 2 T_CLK=1;
239 2 T_CLK=0;
240 2 ACC=ACC>>1;
C51 COMPILER V7.06 LCM16864ZK 11/15/2006 18:43:11 PAGE 5
241 2 }
242 1 }
243
244 /////////////////////////////////////////////////////
245 uchar RTOutputByte(void) //从1302读一字节的数据
246 {
247 1 uchar i;
248 1 for(i=8;i>0;i--)
249 1 {
250 2 ACC=ACC>>1;
251 2 ACC7=T_IO;
252 2 T_CLK=1;
253 2 T_CLK=0;
254 2
255 2 }
256 1 return(ACC);
257 1 }
258
259 //////////////////////////////////////////////////////
260
261 void Writ1302(uchar uAddr,uchar udata) //写1字节的数据入指定地址
262 {
263 1
264 1 T_RST=0;
265 1 T_CLK=0;
266 1 T_RST=1;
267 1 RTInputByte(uAddr); //先输入地址
268 1 RTInputByte(udata); //写数据
269 1 T_CLK=1;
270 1 T_RST=0;
271 1 }
272
273 //////////////////////////////////////////////////////
274
275 uchar Read1302(uchar uAddr) //从指定地址读出1字节数据
276 {
277 1 uchar udata;
278 1 T_RST=0;
279 1 T_CLK=0;
280 1 T_RST=1;
281 1 RTInputByte(uAddr); //写入地址
282 1 udata=RTOutputByte(); //读出数据
283 1 T_CLK=1;
284 1 T_RST=0;
285 1 return(udata);
286 1 }
287
288 /////////////////////////////////////////////////////
289
290 void BurstW1302(pcalen) //写入多字节的数据
291 uchar pcalen[8];
292 {
293 1 uchar i;
294 1 Writ1302(0x8e,0x00); //WP=0,写操作
295 1 T_RST=0;
296 1 T_CLK=0;
297 1 T_RST=1;
298 1 RTInputByte(0xbe); //0xbe ;时钟多字节写命令
299 1 for(i=8;i>0;i--)
300 1 {
301 2 RTInputByte(*pcalen);
302 2 pcalen++;
C51 COMPILER V7.06 LCM16864ZK 11/15/2006 18:43:11 PAGE 6
303 2 }
304 1 T_CLK=1;
305 1 T_RST=0;
306 1 }
307
308 ////////////////////////////////////////////////////
309
310 void ShowTime(void)
311 {
312 1 uchar i;
313 1 BurstR1302(calen);
314 1 i=0x80;
315 1 WritCommand(i);
316 1 i=calen[6];
317 1 ShowTimes(i);
318 1 i=0x2f;
319 1 WritData(i);
320 1 i=calen[4];
321 1 ShowTimes(i);
322 1 i=0x2f;
323 1 WritData(i);
324 1 i=calen[3];
325 1 ShowTimes(i);
326 1 i=0x2f;
327 1 WritData(i);
328 1 i=calen[2];
329 1 ShowTimes(i);
330 1 i=0x3a;
331 1 WritData(i);
332 1 i=calen[1];
333 1 ShowTimes(i);
334 1 i=calen[0];
335 1 ShowTimes(i);
336 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -