📄 wl005.lst
字号:
C51 COMPILER V8.02 WL005 08/01/2007 16:48:19 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE WL005
OBJECT MODULE PLACED IN wl005.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE wl005.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************************
2 * 标题: ME300系列单片机开发系统演示程序 - 按键扫描程序 *
3 * 硬件: ME300A+,ME300B *
4 * 文件: wl005.C *
5 * 日期: 2004-1-5 *
6 * 版本: 1.0 *
7 * 作者: 伟纳电子 - Freeman *
8 * 邮箱: freeman@willar.com *
9 * 网站: http://www.willar.com *
10 ********************************************************************************
11 * 描述: *
12 * 按键扫描程序 *
13 * 上电时, 点亮P00口LED *
14 * 按下K1时, LED向右移一位 *
15 * 按下K2时, LED向左移一位 *
16 ********************************************************************************
17 * 跳线设置: *
18 * ME300A+ JP1 全部短接,JP2短接2-3端 *
19 * ME300B JP1 短接, JP2短接2-3端 *
20 * *
21 ********************************************************************************
22 * 【版权】 Copyright(C)伟纳电子 www.willar.com All Rights Reserved *
23 * 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息! *
24 *******************************************************************************/
25
26 #include <reg51.h>
27 #include <intrins.h>
28
29 unsigned char scan_key();
30 void proc_key(unsigned char key_v);
31 void delayms(unsigned char ms);
32
33 sbit K1 = P1^4;
34 sbit K2 = P1^5;
35
36 main()
37 {
38 1
39 1 unsigned char key_s,key_v;
40 1 key_v = 0x03;
41 1 P0 = 0xfe;
42 1 while(1)
43 1 {
44 2 key_s = scan_key();
45 2 if(key_s != key_v)
46 2 {
47 3 delayms(10);
48 3 key_s = scan_key();
49 3 if(key_s != key_v)
50 3 {
51 4 key_v = key_s;
52 4 proc_key(key_v);
53 4 }
54 3 }
55 2 }
C51 COMPILER V8.02 WL005 08/01/2007 16:48:19 PAGE 2
56 1 }
57
58 unsigned char scan_key()
59 {
60 1 unsigned char key_s;
61 1 key_s = 0x00;
62 1 key_s |= K2;
63 1 key_s <<= 1;
64 1 key_s |= K1;
65 1 return key_s;
66 1 }
67
68 void proc_key(unsigned char key_v)
69 {
70 1 if((key_v & 0x01) == 0)
71 1 {
72 2 P0 = _cror_(P0,1);
73 2 }
74 1 else if((key_v & 0x02) == 0)
75 1 {
76 2 P0 = _crol_(P0, 1);
77 2 }
78 1 }
79
80 void delayms(unsigned char ms)
81 // 延时子程序
82 {
83 1 unsigned char i;
84 1 while(ms--)
85 1 {
86 2 for(i = 0; i < 120; i++);
87 2 }
88 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 111 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
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 + -