📄 key.lst
字号:
C51 COMPILER V7.06 KEY 05/21/2009 11:42:53 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //============================
2 //绕线机程序
3 //键盘扫描
4 //蜂鸣器子程序
5 //============================
6
7 #ifndef __key_c_
8 #define __key_c_
9 #include "included.h"
10 //===========================
11 uchar ks1(void)
12 {
13 1 uchar temp;
14 1
15 1 P1 &=0X00;
16 1 P3 |=0X07;
17 1 _nop_();
18 1 _nop_();
19 1 temp = P3;
20 1 if((~temp) & 0x07) //note ~ and !
21 1 return 1;
22 1 else
23 1 return 0;
24 1 }
25 //=====================
26 ////1表示有键按下,0表示没有键按下
27 //=====================
28 uchar ks0(void)
29 {
30 1 uchar temp;
31 1
32 1 P1 &=0X00;
33 1 P3 |=0X07;
34 1 _nop_();
35 1 _nop_();
36 1 temp = P3;
37 1 if((~temp) & 0x07) //note ~ and !
38 1 return 1;
39 1 else
40 1 return 0;
41 1 }
42 //====================================
43 //没键按下等待,有键按下,返回按键值
44 //====================================
45 uchar key(void)
46 {
47 1 uchar scan_code=0xfe;
48 1 uchar key_val=00;
49 1 uchar time_0 =0x00;
50 1
51 1 jxkey:
52 1 do{ //检测按键是否被按下
53 2 while(ks0()==0);
54 2 delay_1ms(20);//消抖动
55 2 }while(ks0()==0);
C51 COMPILER V7.06 KEY 05/21/2009 11:42:53 PAGE 2
56 1
57 1 scan_code=0xfe;
58 1
59 1 for(time_0=0;time_0<8;time_0++)
60 1 {
61 2 P1 = scan_code;
62 2 P3 |= 0X07;
63 2 _nop_();
64 2 _nop_();
65 2 _nop_();
66 2
67 2 if( P3_0 == 0)
68 2 {
69 3 key_val=time_0; //0-7key
70 3 break;
71 3 }
72 2 if( P3_1 == 0)
73 2 {
74 3 key_val=time_0+0x08; //8-15key
75 3 break;
76 3 }
77 2 if( P3_2 == 0)
78 2 { //16 key=stop key
79 3 key_val=0x10;
80 3 break;
81 3 }
82 2 scan_code = scan_code<<1;
83 2 }
84 1
85 1 if(key_val>0x10)
86 1 goto jxkey;
87 1 else
88 1 do{
89 2 while(ks0()==1);
90 2 delay_1ms(20);//消抖动
91 2 //等待按键弹起
92 2 }while(ks0()==1);
93 1
94 1 return (key_val);
95 1 }
96 //========================
97 uchar key_123(void)
98 {
99 1 uchar scan_code=0xfe;
100 1 uchar key_val=00;
101 1 uchar time_0 =0x00;
102 1
103 1 scan_code=0xfe;
104 1
105 1 for(time_0=0;time_0<8;time_0++)
106 1 {
107 2 P1 = scan_code;
108 2 P3 |= 0X07;
109 2 _nop_();
110 2 _nop_();
111 2 _nop_();
112 2
113 2 if( P3_0 == 0)
114 2 {
115 3 key_val=time_0; //0-7key
116 3 break;
117 3 }
C51 COMPILER V7.06 KEY 05/21/2009 11:42:53 PAGE 3
118 2 if( P3_1 == 0)
119 2 {
120 3 key_val=time_0+0x08; //8-15key
121 3 break;
122 3 }
123 2 if( P3_2 == 0)
124 2 { //16 key=stop key
125 3 key_val=0x10;
126 3 break;
127 3 }
128 2 scan_code = scan_code<<1;
129 2 }
130 1
131 1 return (key_val);
132 1 }
133
134 //========================
135 void delay_1ms(uint t)
136 {
137 1 uint i,j;
138 1 for(j=0;j<t;j++)
139 1 for(i=0;i<300;i++)
140 1 ;
141 1 }
142 //=============================
143 void speak(void)
144 {
145 1 P3_5 = 0;
146 1 delay_1ms(150);
147 1 P3_5 = 1;
148 1 }
149 //================================
150 #endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 250 ----
CONSTANT SIZE = ---- ----
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 + -