📄 key.lst
字号:
C51 COMPILER V7.09 KEY 12/21/2007 09:06:41 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "16x2_main.h"
2 #include "16x2_lcd.h"
3
4
5
6 bit Menu_State=0; //为1时进入设定状态
7 unsigned char Position;
8 const unsigned char C_Position[14]={5,6,7,8,10,11,13,14,5,6,8,9,11,12};
9
10
11 void Key_Initial()
12 {
13 1 EA=1;
14 1 EX1=1;
15 1 }
16
17
18 void Key_Menu_server()
19 {
20 1 Menu_State=!Menu_State; //当用时钟计时是记得关中断
21 1 Position=0;
22 1
23 1 if(Menu_State)
24 1 {
25 2 Lcd_CodeWrite(0x0f); //显示开,光标开,闪 //进入
26 2
27 2 }
28 1
29 1 else
30 1 {
31 2 Lcd_CodeWrite(0x0c); //显示开,光标关,闪 //退出
32 2
33 2 }
34 1
35 1 }
36 void Key_Set_server()
37 {
38 1 //移动光标,更新输入
39 1 if(Menu_State)
40 1 {
41 2 Position++;
42 2 if(Position==14)Position=0;
43 2 if(Position>=8)
44 2 {
45 3 while(Lcd_StateRead());
46 3 Lcd_CodeWrite(0xc0|C_Position[Position]); //输入地址
47 3 }
48 2 else
49 2 {
50 3 while(Lcd_StateRead());
51 3 Lcd_DataWrite(0x80|C_Position[Position]);
52 3 }
53 2 }
54 1
55 1 Lcd_FramDisplay();
C51 COMPILER V7.09 KEY 12/21/2007 09:06:41 PAGE 2
56 1 }
57
58
59 void Key_Up_server()
60 {
61 1 if(Menu_State)
62 1 {
63 2 switch (Position)
64 2 {
65 3 case 0:
66 3 case 1:
67 3 case 2:
68 3 case 3:
69 3 case 5:
70 3 case 7:
71 3 case 9:
72 3 case 11:
73 3 case 13: datatime[Position]=(++datatime[Position])%10;break;
74 3 case 4: datatime[Position]=(++datatime[Position])%2;break;
75 3 case 6: datatime[Position]=(++datatime[Position])%4;break;
76 3 case 8: datatime[Position]=(++datatime[Position])%3;break;
77 3 case 10:
78 3 case 12: datatime[Position]=(++datatime[Position])%7;break;
79 3 }
80 2
81 2 }
82 1
83 1 Lcd_FramDisplay();
84 1
85 1 }
86 void Key_Down_server()
87 {
88 1 if(Menu_State)
89 1 {
90 2 switch (Position)
91 2 {
92 3 case 0:
93 3 case 1:
94 3 case 2:
95 3 case 3:
96 3 case 5:
97 3 case 7:
98 3 case 9:
99 3 case 11:
100 3 case 13: datatime[Position]--;if(datatime[Position]==255)datatime[Position]=9;break;
101 3 case 4: datatime[Position]--;if(datatime[Position]==255)datatime[Position]=1;break;
102 3 case 6: datatime[Position]--;if(datatime[Position]==255)datatime[Position]=3;break;
103 3 case 8: datatime[Position]--;if(datatime[Position]==255)datatime[Position]=2;break;
104 3 case 10:
105 3 case 12: datatime[Position]--;if(datatime[Position]==255)datatime[Position]=6;break;
106 3 }
107 2
108 2 }
109 1 Lcd_FramDisplay();
110 1 }
111
112
113
114 void Key_int() interrupt 2
115 {
116 1 unsigned char key;
117 1 EA=0;
C51 COMPILER V7.09 KEY 12/21/2007 09:06:41 PAGE 3
118 1 EX1=0;
119 1
120 1 key=KEY_VALUE;
121 1 Delay(500);
122 1 if(key!=KEY_VALUE) goto keyend;
123 1 Delay(500);
124 1 switch(key)
125 1 {
126 2 case 0xe: Key_Menu_server(); //menu 1110
127 2 break;
128 2 case 0xd: Key_Set_server(); //set 1101
129 2 break;
130 2 case 0xb: Key_Up_server(); //up 1011
131 2 break;
132 2 case 0x7: Key_Down_server(); //down 0111
133 2 break;
134 2 default: ;
135 2 }
136 1 keyend: Delay(10);
137 1 EA=1;
138 1 EX1=1;
139 1 }
140
141
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 513 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 15 1
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -