📄 wl013.lst
字号:
C51 COMPILER V7.08 WL013 02/12/2004 12:11:09 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE WL013
OBJECT MODULE PLACED IN wl013.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE wl013.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************************
2 * *
3 * File : wl013.c *
4 * Date : 2004-1-5 *
5 * Version : 1.0 *
6 * *
7 * Author : Freeman freeman@willar.com *
8 * Company : Willar www.willar.com *
9 * *
10 ********************************************************************************
11 * Descriptoon: *
12 * PC - MCU 串行通迅程序 *
13 * 单片机接改主机的数据,然后将数据传送到P0口, 并传回给主机; *
14 * 当按下AN1时, 单片机发送字串"welcome! www.willar.com \n\r"给 *
15 * 给主机. *
16 * *
17 * *
18 *******************************************************************************/
19 #include <reg51.h>
20 #include <intrins.h>
21
22 unsigned char key_s, key_v, tmp;
23
24 char code str[] = "welcome! www.willar.com \n\r";
25
26
27 void send_str();
28 bit scan_key();
29 void proc_key();
30 void delayms(unsigned char ms);
31 void send_char(unsigned char txd);
32
33 sbit AN1 = P3^2;
34
35 main()
36 {
37 1 TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
38 1 TH1 = 0xFD; // 波特率9600
39 1 TL1 = 0xFD;
40 1
41 1 SCON = 0x50; // 设定串行口工作方式
42 1 PCON &= 0xef; // 波特率不倍增
43 1
44 1 TR1 = 1; // 启动定时器1
45 1 IE = 0x0; // 禁止任何中断
46 1
47 1 while(1)
48 1 {
49 2 if(scan_key()) // 扫描按键
50 2 {
51 3 delayms(10); // 延时去抖动
52 3 if(scan_key()) // 再次扫描
53 3 {
54 4 key_v = key_s; // 保存键值
55 4 proc_key(); // 键处理
C51 COMPILER V7.08 WL013 02/12/2004 12:11:09 PAGE 2
56 4 }
57 3 }
58 2 if(RI) // 是否有数据到来
59 2 {
60 3 RI = 0;
61 3 tmp = SBUF; // 暂存接收到的数据
62 3 P0 = tmp; // 数据传送到P0口
63 3 send_char(tmp); // 回传接收到的数据
64 3 }
65 2 }
66 1 }
67
68 bit scan_key()
69 // 扫描按键
70 {
71 1 key_s = 0x00;
72 1 key_s |= AN1;
73 1 return(key_s ^ key_v);
74 1 }
75
76 void proc_key()
77 // 键处理
78 {
79 1 if((key_v & 0x01) == 0)
80 1 { // AN1按下
81 2 send_str(); // 传送字串"welcome!...
82 2 }
83 1 }
84
85 void send_char(unsigned char txd)
86 // 传送一个字符
87 {
88 1 SBUF = txd;
89 1 while(!TI); // 等特数据传送
90 1 TI = 0; // 清除数据传送标志
91 1 }
92
93 void send_str()
94 // 传送字串
95 {
96 1 unsigned char i = 0;
97 1 while(str[i] != '\0')
98 1 {
99 2 SBUF = str[i];
100 2 while(!TI); // 等特数据传送
101 2 TI = 0; // 清除数据传送标志
102 2 i++; // 下一个字符
103 2 }
104 1 }
105
106 void delayms(unsigned char ms)
107 // 延时子程序
108 {
109 1 unsigned char i;
110 1 while(ms--)
111 1 {
112 2 for(i = 0; i < 120; i++);
113 2 }
114 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V7.08 WL013 02/12/2004 12:11:09 PAGE 3
CODE SIZE = 129 ----
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 + -