📄 k1-k4-test.lst
字号:
C51 COMPILER V8.02 K1_K4_TEST 12/14/2006 16:44:36 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE K1_K4_TEST
OBJECT MODULE PLACED IN K1-K4-TEST.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE K1-K4-TEST.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************
2 * *
3 * ME500单片机开发系统演示程序 - 按键扫描程序 *
4 * *
5 * 作者: 伟纳电子 - Freeman *
6 * 邮箱: freeman@willar.com *
7 * 作者: gguoqing (Email: gguoqing@willar.com) *
8 * 日期: 2004-1-5 *
9 * *
10 * 改编: gguoqing *
11 * 版本: V1.0 (2006/11/20) *
12 * 作者: gguoqing (Email: gguoqing@willar.com) *
13 * 时间: 2006/10/15 *
14 * *
15 *【版权】Copyright(C)伟纳电子 www.willar.com All Rights Reserved *
16 *【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
17 * *
18 ********************************************************************
19 * *
20 * 描述: *
21 * 按键扫描程序 *
22 * 上电时, 点亮P00口和P20口的LED *
23 * 按下K1时, P0口LED向右移一位 *
24 * 按下K2时, P0口LED向左移一位 *
25 * 按下K1时, P2口LED向右移一位 *
26 * 按下K2时, P2口LED向左移一位 *
27 * *
28 *******************************************************************/
29
30 #include <reg51.h>
31 #include <intrins.h>
32
33 #define uchar unsigned char
34 #define uint unsigned int
35
36 sbit K1 = P1^4;
37 sbit K2 = P1^5;
38 sbit K3 = P1^6;
39 sbit K4 = P1^7;
40
41 void delayms(uchar ms);
42 uchar scan_key();
43 void proc_key(uchar key_v);
44
45 /*********************************************************
46
47 延时子程序
48
49 *********************************************************/
50 void delayms(unsigned char ms)
51 {
52 1 unsigned char i;
53 1 while(ms--)
54 1 {
55 2 for(i = 0; i < 120; i++);
C51 COMPILER V8.02 K1_K4_TEST 12/14/2006 16:44:36 PAGE 2
56 2 }
57 1 }
58
59 /********************************************************
60
61 扫描健盘函数
62
63 ********************************************************/
64 uchar scan_key()
65 {
66 1 uchar key_s;
67 1 key_s = 0x00;
68 1 key_s |= K4;
69 1 key_s <<= 1;
70 1 key_s |= K3;
71 1 key_s <<= 1;
72 1 key_s |= K2;
73 1 key_s <<= 1;
74 1 key_s |= K1;
75 1 return key_s;
76 1 }
77
78 /********************************************************
79
80 健功能函数
81
82 ********************************************************/
83 void proc_key(uchar key_s)
84 {
85 1 if((key_s & 0x01) == 0)
86 1 {
87 2 P0 = _cror_(P0, 1);
88 2 }
89 1 else if((key_s & 0x02) == 0)
90 1 {
91 2 P0 = _crol_(P0, 1);
92 2 }
93 1 else if((key_s & 0x04) == 0)
94 1 {
95 2 P2 = _cror_(P2, 1);
96 2 }
97 1 else if((key_s & 0x08) == 0)
98 1 {
99 2 P2 = _crol_(P2, 1);
100 2 }
101 1 }
102
103 /*********************************************************
104
105 主函数
106
107 *********************************************************/
108 main()
109 {
110 1 uchar key_s,key_v;
111 1 key_v = 0x0f;
112 1 P0 = 0xfe;
113 1 P2 = 0xfe;
114 1 while(1)
115 1 {
116 2 key_s = scan_key();
117 2 if(key_s != key_v)
C51 COMPILER V8.02 K1_K4_TEST 12/14/2006 16:44:36 PAGE 3
118 2 {
119 3 delayms(10); //延时去抖动
120 3 key_s = scan_key(); //再次判健是否按下
121 3 if(key_s != key_v)
122 3 {
123 4 key_v = key_s;
124 4 proc_key(key_s);
125 4 }
126 3 }
127 2 }
128 1 }
129
130 /********************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 162 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -