?? wl013.lst
字號:
C51 COMPILER V7.06 WL013 05/08/2007 21:25:57 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE WL013
OBJECT MODULE PLACED IN wl013.OBJ
COMPILER INVOKED BY: D:\keil\C51\BIN\C51.EXE wl013.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*******************************************************************************
2 * 標題: 偉納電子ME300B單片機開發系統演示程序 - PC與ME300串行通迅程序 *
3 * 文件: wl013.c *
4 * 日期: 2004-1-5 *
5 * 版本: 1.0 *
6 * 作者: 偉納電子 - Freeman *
7 * 郵箱: freeman@willar.com *
8 * 網站: http://www.willar.com *
9 ********************************************************************************
10 * 描述: *
11 * 單片機接收主機的數據,然后將數據傳送到P0口, 并傳回給主機; *
12 * 當按下K1時, 單片機發送字串"welcome! www.willar.com\n\r" 給主機 *
13 * *
14 * 注意:演示此程序需要配合串口調試軟件,且串口調試軟件與ME300軟件不能同時打開。*
15 * 串口調試軟件在光盤“工具軟件”目錄下有。 *
16 * *
17 * 實驗方法:先用ME300軟件將程序寫入單片機,關閉ME300軟件,將ME300的串口切換 *
18 * 開關切換到仿真位置(這樣設置后計算機的串口才能與試驗芯片串口通信)*
19 * 最后運行串口調試軟件即可實驗。 *
20 * *
21 ********************************************************************************
22 ********************************************************************************
23 * 【版權】 Copyright(C)偉納電子 www.willar.com All Rights Reserved *
24 * 【聲明】 此程序僅用于學習與參考,引用請注明版權和作者信息! *
25 *******************************************************************************/
26
27 #include <reg51.h>
28 #include <intrins.h>
29
30 unsigned char key_s, key_v, tmp;
31
32 char code str[] = "welcome! www.willar.com \n\r";
33
34
35 void send_str();
36 bit scan_key();
37 void proc_key();
38 void delayms(unsigned char ms);
39 void send_char(unsigned char txd);
40
41 sbit K1 = P1^4;
42
43 main()
44 {
45 1 TMOD = 0x20; // 定時器1工作于8位自動重載模式, 用于產生波特率
46 1 TH1 = 0xFD; // 波特率9600
47 1 TL1 = 0xFD;
48 1
49 1 SCON = 0x50; // 設定串行口工作方式
50 1 PCON &= 0xef; // 波特率不倍增
51 1
52 1 TR1 = 1; // 啟動定時器1
53 1 IE = 0x00; // 禁止任何中斷
54 1
55 1 while(1)
C51 COMPILER V7.06 WL013 05/08/2007 21:25:57 PAGE 2
56 1 {
57 2 if(scan_key()) // 掃描按鍵
58 2 {
59 3 delayms(10); // 延時去抖動
60 3 if(scan_key()) // 再次掃描
61 3 {
62 4 key_v = key_s; // 保存鍵值
63 4 proc_key(); // 鍵處理
64 4 }
65 3 }
66 2 if(RI) // 是否有數據到來
67 2 {
68 3 RI = 0;
69 3 tmp = SBUF; // 暫存接收到的數據
70 3 delayms(10);
71 3 P0 = tmp; // 數據傳送到P0口
72 3
73 3 send_char(tmp); // 回傳接收到的數據
74 3 }
75 2 }
76 1 }
77
78 bit scan_key()
79 // 掃描按鍵
80 {
81 1 key_s = 0x00;
82 1 key_s |= K1;
83 1 return(key_s ^ key_v);
84 1 }
85
86 void proc_key()
87 // 鍵處理
88 {
89 1 if((key_v & 0x01) == 0)
90 1 { // K1按下
91 2 send_str(); // 傳送字串"welcome!...
92 2 }
93 1 }
94
95 void send_char(unsigned char txd)
96 // 傳送一個字符
97 {
98 1 SBUF = txd;
99 1 while(!TI); // 等特數據傳送
100 1 TI = 0; // 清除數據傳送標志
101 1 }
102
103 void send_str()
104 // 傳送字串
105 {
106 1 unsigned char i = 0;
107 1 while(str[i] != '\0')
108 1 {
109 2 SBUF = str[i];
110 2 while(!TI); // 等特數據傳送
111 2 TI = 0; // 清除數據傳送標志
112 2 i++; // 下一個字符
113 2 }
114 1 }
115
116 void delayms(unsigned char ms)
117 // 延時子程序
C51 COMPILER V7.06 WL013 05/08/2007 21:25:57 PAGE 3
118 {
119 1 unsigned char i;
120 1 while(ms--)
121 1 {
122 2 for(i = 0; i < 120; i++);
123 2 }
124 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 134 ----
CONSTANT SIZE = 27 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
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 + -