📄 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 + -