?? vterminal_uart.lst
字號:
220 1 SBUF= 0x84;
221 1 check_uart();
222 1 while(rc_timer_en != 6){}
223 1 rc_timer_en = 0;
224 1 }
225 //=====================================================
226 //畫圓子程序。
227 DIS_Ellipse(unsigned short x0,unsigned short y0,unsigned short xr,unsigned short yr)
228 {
229 1 command_head2(0x44,0x45,x0,y0);
230 1
231 1 SBUF= xr/100;
232 1 check_uart();
233 1 SBUF= xr%100;
234 1 check_uart();
235 1 SBUF= yr/100;
236 1 check_uart();
237 1 SBUF= yr%100;
238 1 check_uart();
239 1
C51 COMPILER V7.20 VTERMINAL_UART 08/15/2006 14:47:13 PAGE 5
240 1 SBUF= 0x84;
241 1 check_uart();
242 1 }
243 //======================================================
244 //畫直線子程序。
245 DIS_Line(unsigned short x0,unsigned short y0,unsigned short x1,unsigned short y1,unsigned short with)
246 {
247 1
248 1 command_head2(0x44,0x4c,x0,y0);
249 1
250 1 SBUF= x1/100;
251 1 check_uart();
252 1 SBUF= x1%100;
253 1 check_uart();
254 1 SBUF= y1/100;
255 1 check_uart();
256 1 SBUF= y1%100;
257 1 check_uart();
258 1
259 1 SBUF= with/100;
260 1 check_uart();
261 1 SBUF= with%100;
262 1 check_uart();
263 1
264 1 SBUF= 0x84;
265 1 check_uart();
266 1 }
267 //=======================================================
268 //顯示字符串子程序。
269 DIS_String(unsigned short x0,unsigned short y0,char *fmt)
270 {
271 1 command_head2(0x44,0x57,x0,y0);
272 1
273 1 while(*fmt) //為0時(字符串結束)退出
274 1 {
275 2 SBUF= *fmt;
276 2 check_uart();
277 2 fmt++;
278 2 }
279 1 SBUF= 0x84;
280 1 check_uart();
281 1 }
282 //========================================================
283 //開(關)顯示時間子程序
284 void Dis_time(unsigned short x0,unsigned short y0,unsigned char i)
285 {
286 1 command_head2(0x44,0x54,x0,y0);
287 1
288 1 SBUF= i; //顯示方式,若是0則關時間顯示
289 1 check_uart();
290 1 SBUF= 0x84;
291 1 check_uart();
292 1 }
293 //======================================================
294 //設置時間子程序;
295 //年,月,日,時 ,分,秒,星期。
296 void Set_time(uchar year,uchar month,uchar day,uchar hour,uchar minute,uchar second,uchar date)
297 {
298 1 command_head(0x53,0x54);
299 1 SBUF= year;
300 1 check_uart();
301 1 SBUF= month;
C51 COMPILER V7.20 VTERMINAL_UART 08/15/2006 14:47:13 PAGE 6
302 1 check_uart();
303 1 SBUF= day;
304 1 check_uart();
305 1 SBUF= hour;
306 1 check_uart();
307 1 SBUF= minute;
308 1 check_uart();
309 1 SBUF= second;
310 1 check_uart();
311 1 SBUF= date;
312 1 check_uart();
313 1
314 1 SBUF= 0x84;
315 1 check_uart();
316 1 }
317 //=======================================================
318 //顯示變量子程序
319 DIS_Value(unsigned short x0,unsigned short y0,unsigned short Va,unsigned char i)
320 {
321 1 command_head2(0x44,0x56,x0,y0);
322 1 SBUF= Va/100;
323 1 check_uart();
324 1 SBUF= Va%100;
325 1 check_uart();
326 1
327 1 SBUF= i; //顯示的域寬
328 1 check_uart();
329 1 SBUF= 0x84;
330 1 check_uart();
331 1 }
332 //========================================================
333 //顯示位圖子程序
334 DIS_BMP(unsigned short x0,unsigned short y0,uchar N1)
335 {
336 1 command_head2(0x44,0x53,x0,y0);
337 1
338 1 SBUF= N1; //位圖在Flash中的編號
339 1 check_uart();
340 1 SBUF= 0x84;
341 1 check_uart();
342 1 }
343 //=======================================================
344 //自動顯示位圖子程序
345 AUTO_BMP(unsigned short x0,unsigned short y0,uchar N1,uchar N2,uchar T)
346 {
347 1 command_head2(0x5a,0x44,x0,y0);
348 1 SBUF= N1; //開始的位圖編號
349 1 check_uart();
350 1 SBUF= N2; //結束的位圖編號
351 1 check_uart();
352 1 SBUF= T; //位圖顯示的切換間隔時間
353 1 check_uart();
354 1 SBUF= 0x84;
355 1 check_uart();
356 1 }
357 //=====================================================
358 //保存當前窗口至后臺子程序
359 void push_windows(unsigned char mun_dc)
360 {command_head(0x43,0x44);
361 1 SBUF=mun_dc; //后臺編號
362 1 check_uart();
363 1 SBUF= 0x84;
C51 COMPILER V7.20 VTERMINAL_UART 08/15/2006 14:47:13 PAGE 7
364 1 check_uart();
365 1 }
366 //================================================
367 //恢復之前保存在后臺的窗口
368 void pop_windows(unsigned char mun_dc)
369 {command_head(0x45,0x44);
370 1 SBUF=mun_dc; //后臺編號
371 1 check_uart();
372 1 SBUF= 0x84;
373 1 check_uart();
374 1 }
375 //======================================================
376 /*從智能顯示終端模塊讀數據到單片機的數據格式是
377 0 1 2 3 4
378 觸摸屏數據格式: 0xF2 CHX_H CHX_L CHY_H CHY_L 其中0xF2是按下按鈕,CHX_H,CHX_L分別是X軸的高位字節和低
-位字節。
379 觸摸屏數據格式: 0xF3 CHX_H CHX_L CHY_H CHY_L 其中0xF3是放開按鈕,CHX_H,CHX_L分別是X軸的高位字節和低
-位字節。
380 年月日數據格式: 0xF8 年 月 日 星期
381 時分秒數據格式: 0xF9 時 分 秒
382 上電就緒 : 0xF0
383 */
384 /*uart 中斷程序*/
385 void uart_int( ) interrupt 4 using 1
386 {
387 1 unsigned char temp1;
388 1
389 1 EA=0;
390 1 if(RI==1)
391 1 {
392 2 temp1 = SBUF;
393 2 if(temp1 < 0xf0) //小于F0的數據為參數,大于F0的數據為前導字節。
394 2 {
395 3 if(touch_en ==1) //觸摸屏接收充許,開始接收觸摸屏數據。
396 3 {
397 4 switch(rx_count)
398 4 {
399 5 case 0 : CHX_DAT = temp1*100;rx_count=1; break;
400 5 case 1 : CHX_DAT = CHX_DAT + temp1; rx_count=2; break;
401 5 case 2 : CHY_DAT = temp1*100;rx_count=3; break;
402 5 case 3 : CHY_DAT = CHY_DAT + temp1; rx_count=0;touch_en=5; break;
403 5 }
404 4 }
405 3 if(rc_timer_en ==1) //年月日接收充許,開始接收年月日數據。
406 3 {
407 4 Date[rx_count++] = temp1;
408 4 if(rx_count ==5){rc_timer_en = 5;}
409 4 }
410 3 if(rc_timer_en ==2) //時分秒接收充許,開始接收時分秒數據。
411 3 {
412 4 Date[rx_count++] = temp1;
413 4 if(rx_count ==8){rc_timer_en = 6;}
414 4 }
415 3 }
416 2 else
417 2 {
418 3 switch(temp1)
419 3 {
420 4 case 0xf2 : touch_en = 1;rx_count =0; break; //充許接收觸摸屏數據
421 4 case 0xf3 : touch_en = 2;rx_count =0; break; //充許接收觸摸屏數據
422 4 case 0xf8 : rc_timer_en = 1; rx_count =1; break; //充許接收年月日數據
423 4 case 0xf9 : rc_timer_en = 2; rx_count =5; break; //充許接收時分秒數據
C51 COMPILER V7.20 VTERMINAL_UART 08/15/2006 14:47:13 PAGE 8
424 4 }
425 3 }
426 2 RI =0;
427 2 }
428 1 EA=1;
429 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1596 ----
CONSTANT SIZE = 92 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 17 72
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 + -