📄 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
240 1 SBUF= 0x84;
C51 COMPILER V7.20 VTERMINAL_UART 08/18/2006 12:30:30 PAGE 5
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;
302 1 check_uart();
C51 COMPILER V7.20 VTERMINAL_UART 08/18/2006 12:30:30 PAGE 6
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;
364 1 check_uart();
C51 COMPILER V7.20 VTERMINAL_UART 08/18/2006 12:30:30 PAGE 7
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; //充许接收时分秒数据
424 4 }
C51 COMPILER V7.20 VTERMINAL_UART 08/18/2006 12:30:30 PAGE 8
425 3 }
426 2 RI =0;
427 2 }
428 1 EA=1;
429 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1573 ----
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 + -