📄 main_t.lst
字号:
C51 COMPILER V7.06 MAIN_T 08/18/2008 14:23:14 PAGE 1
C51 COMPILER V7.06, 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://P0=8'b11111110;
19 2 P0=0xFE;
20 2 break;
21 2 case 1://P0=8'b11111101;
22 2 P0=0xFD;
23 2 break;
24 2 case 2://P0=8'b11111011;
25 2 P0=0xFB;
26 2 break;
27 2 case 3://P0=8'b11110111;
28 2 P0=0xF7;
29 2 break;
30 2 case 4://P0=8'b11101111;
31 2 P0=0xEF;
32 2 break;
33 2 case 5://P0=8'b11101111;
34 2 P0=0xDF;
35 2 break;
36 2
37 2 default:
38 2 P0=0xff;
39 2 break;
40 2 }
41 1 c=P2&0x3f;//取P2.5-P2.0的列值
42 1 P0=0xff;
43 1 return c;
44 1 }
45 void scan(void)
46 /*
47 函数功能:扫描键状态,将被按键的位置号存入缓冲区中;
48 连续扫描5行,如果列扫描线输出全为1,表明当前行没有按键按下,继续扫描下一行,否则将记下当前的列输出值,然后
-延时一段时间(该值可以设定),
49 再次扫描该行,如果列输出值跟第一次的不一样,则将其判为抖动,不予处理,如果相同则表明当前按键被按下,进行下
-一步处理。
50 从列输出线的最低位P2.0开始判断列输出线的该位是否为0,如果为1则表明其对应按键未被按下,不予处理,如果为0则
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -