📄 main_t.lst
字号:
C51 COMPILER V7.02a MAIN_T 04/23/2005 11:28:04 PAGE 1
C51 COMPILER V7.02a, COMPILATION OF MODULE MAIN_T
OBJECT MODULE PLACED IN main_t.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE main_t.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <head.c>
2 bit scan_on,last_f;
3 unsigned char data last_key;
4 extern unsigned char data delay_count,send_delay;
5 unsigned char bdata clu;
6 sbit clu0=clu^0;
7
8
9 unsigned char scankb(unsigned char row)
10 /*
11 键盘扫描函数,P2.7-P2.3为5条行扫描线,P2.2-P2.0为3条列输出线。每次扫描一行,该行的扫描线为0,其余为1,
12 返回列输出线的值
13 */
14 {
15 1 unsigned char data c;
16 1 switch(row)
17 1 {
18 2 case 0://P2=8'b01111111;
19 2 P2=0x7f;
20 2 break;
21 2 case 1://P2=8'b10111111;
22 2 P2=0xbf;
23 2 break;
24 2 case 2://P2=8'b11011111;
25 2 P2=0xdf;
26 2 break;
27 2 case 3://P2=8'b11101111;
28 2 P2=0xef;
29 2 break;
30 2 case 4://P2=8'b11110111;
31 2 P2=0xf7;
32 2 break;
33 2 default:
34 2 P2=0xff;
35 2 break;
36 2 }
37 1 c=0x07&P2;//取P2.2-P2.0的值
38 1 P2=0xff;
39 1 return c;
40 1 }
41 void scan(void)
42 /*
43 函数功能:扫描键状态,将被按键的位置号存入缓冲区中;
44 连续扫描5行,如果列扫描线输出全为1,表明当前行没有按键按下,继续扫描下一行,否则将记下当前的列输出值,然后
-延时一段时间(该值可以设定),
45 再次扫描该行,如果列输出值跟第一次的不一样,则将其判为抖动,不予处理,如果相同则表明当前按键被按下,进行下
-一步处理。
46 从列输出线的最低位P2.0开始判断列输出线的该位是否为0,如果为1则表明其对应按键未被按下,不予处理,如果为0则
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -