📄 keyboard.lst
字号:
C51 COMPILER V7.00 KEYBOARD 12/02/2008 21:28:29 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE KEYBOARD
OBJECT MODULE PLACED IN keyboard.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE keyboard.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "ATMEL89X51.H"
2 #define LED_SET P2_6 //使能LED灯端口
3 #define KEY_data P1 //设定P1口为按键输出端口
4 #define LED_data P0 //设定P0口为数据输入端口
5 #define ON 0 //设0为开
6 #define OFF 1 //设1为关
7 unsigned char key_velual;
8 unsigned char key_flag=0;
9
10 void delay(unsigned char temp)//延时函数
11 {
12 1 unsigned char i;
13 1 for(i=0;i<temp;i++);
14 1 }
15
16 void Read_key_code(void)
17 {
18 1 KEY_data |= 0x0f; //把所有的按键端口置1,等待按键按下
19 1 if(key_flag==0)
20 1 {
21 2 if((KEY_data & 0x0f) != 0x0f) //防抖动
22 2 {
23 3 KEY_data |= 0x0f;
24 3 delay(10);
25 3 if((KEY_data&0x0f) != 0x0f) //判断是否有键按下
26 3 {
27 4 key_velual = KEY_data & 0x0f;//读键值
28 4 key_flag=1; //按键标志位置1
29 4 }
30 3 }
31 2 }
32 1 else if(key_flag!=0)
33 1 {
34 2 key_velual=0; //键值清零
35 2 if((KEY_data & 0x0f) == 0x0f)
36 2 key_flag=0; //清按键标志位
37 2 }
38 1 }
39
40 void Key_set(unsigned char sw) //按键判断程序
41 {
42 1 switch(sw)
43 1 {
44 2 case 0x07: LED_data = 0x08; break; //S5被按下,对应的D18亮
45 2 case 0x0b: LED_data = 0x04; break; //S4被按下,对应的D17亮
46 2 case 0x0d: LED_data = 0x02; break; //S3被按下,对应的D16亮
47 2 case 0x0e: LED_data = 0x01; break; //S2被按下,对应的D15亮
48 2 default: break;
49 2 }
50 1 }
51
52 void time_interrupt_init(void) //定时器初始化,50mS
53 {
54 1 TMOD = 0x01;
55 1 TH0 = -(50000/256);
C51 COMPILER V7.00 KEYBOARD 12/02/2008 21:28:29 PAGE 2
56 1 TL0 = -(50000%256);
57 1 ET0 = 1;
58 1 TR0 = 1;
59 1 EA = 1;
60 1 }
61
62 void time0(void) interrupt 1 //设定定时器按键扫描,50mS
63 {
64 1 TH0 = -(50000/256);
65 1 TL0 = -(50000%256);
66 1 Read_key_code(); //读键值
67 1 Key_set(key_velual); //判断键值
68 1 }
69
70 main()
71 {
72 1 LED_SET = ON; //选通LED灯端口
73 1 LED_data = 0;
74 1 time_interrupt_init();
75 1 while(1)
76 1 {
77 2 Key_set(key_velual);
78 2 }
79 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 168 ----
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 + -