📄 keypad.lst
字号:
C51 COMPILER V8.16 KEYPAD 12/25/2008 19:46:19 PAGE 1
C51 COMPILER V8.16, COMPILATION OF MODULE KEYPAD
OBJECT MODULE PLACED IN .\bin\keypad.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE src\keypad.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND PRINT(.\b
-in\keypad.lst) OBJECT(.\bin\keypad.obj)
line level source
1 #include<reg52.h>
2 #include<rtx51tny.h>
3 #include"inc/define.h"
4 #include"inc/keypad.h"
5 #include"inc/ds1302.h"
6 #include"inc/8_8led.h"
7 #include"inc/font.h"
8
9
10 sbit key_up=P1^0;
11 sbit key_down=P1^1;
12 sbit key_enter=P1^2;
13 sbit key_esc=P1^3;
14
15 extern vu8 code * idata time_tab;
16 extern vu8 code * idata week_tab;
17 extern vu8 code * idata tempert;
18
19
20 extern vu8 idata for_showh[6];
21 extern vu8 idata for_showl[6];
22 extern struct Pad ph[6],pl[6];
23
24 extern u8 timerTime[7][2];
25
26 extern bit show_menu;
27 extern u8 * pmenu;
28
29 u8 idata m_level=0;
30 u8 idata levl1_p=0;
31 u8 idata levl2_p=0;
32
33 u8 valid=0; //防止不恰当进入才的操作,即仅有从Enter键进入才是合法的
34 u8 chge_time=0;
35 u8 idata chgeh[6];
36 u8 idata chgel[6];
37
38
39 void keyDown(void ) _task_ 2
40 {
41 1 u8 i;
42 1 u8 chge_num=0;
43 1 u8 idata newTime[7][2];
44 1 while(1)
45 1 {
46 2 os_wait(K_SIG,0,0);
47 2
48 2 if(!key_enter)
49 2 {
50 3 if(m_level==0)
51 3 {
52 4 m_level++;
53 4
54 4 valid=1;
C51 COMPILER V8.16 KEYPAD 12/25/2008 19:46:19 PAGE 2
55 4 show_menu=1;
56 4 }
57 3 else if(m_level==1)
58 3 {
59 4 m_level++;
60 4
61 4 if(levl1_p==0)
62 4 {
63 5 pmenu=m_font[0] + levl2_p*4*32;
64 5 }
65 4 else if(levl1_p==1) //设置时间
66 4 {
67 5 for(i=0;i<6;i++)
68 5 {
69 6 chgeh[i]=for_showh[i];
70 6 chgel[i]=for_showl[i];
71 6 }
72 5 if(ph[0].pn==1)
73 5 {
74 6 ph[0].pad[0] |=0x99;
75 6 ph[0].pad[1] |=0x99; //选中第一个字符
76 6 }
77 5 else if(ph[0].pn==2)
78 5 {
79 6 ph[0].pad[1] |=0x99;
80 6 ph[0].pad[2] |=0x99;
81 6 }
82 5
83 5 chge_time=1;
84 5 }
85 4 else if(levl1_p==2) //定时
86 4 {
87 5 for(i=0;i<6;i++)
88 5 {
89 6 chgeh[i]=for_showh[i];
90 6 chgel[i]=for_showl[i];
91 6 }
92 5 if(ph[0].pn==1)
93 5 {
94 6 ph[0].pad[0] |=0x99;
95 6 ph[0].pad[1] |=0x99; //选中第一个字符
96 6 }
97 5 else if(ph[0].pn==2)
98 5 {
99 6 ph[0].pad[1] |=0x99;
100 6 ph[0].pad[2] |=0x99;
101 6 }
102 5
103 5 chge_time=1;
104 5 }
105 4 }
106 3 else if(m_level==2)
107 3 {
108 4 // m_level++; //至今菜单最深为二
109 4
110 4 if(levl1_p==0)
111 4 {
112 5 if(levl2_p==0)
113 5 {
114 6 time_tab=time_tab_cgst[0];
115 6 week_tab=week_tab_cgst[0];
116 6 tempert=tempert_cgst[0];
C51 COMPILER V8.16 KEYPAD 12/25/2008 19:46:19 PAGE 3
117 6 }
118 5 else if(levl2_p==1)
119 5 {
120 6 time_tab=time_tab_jcst[0];
121 6 week_tab=week_tab_jcst[0];
122 6 tempert=tempert_jcst[0];
123 6 }
124 5 //退出菜单,显示时间
125 5 show_menu=0;
126 5 pmenu=menu[0] + levl1_p*(4*32);
127 5 m_level=0; //清除本次菜单操作的痕迹
128 5 os_clear_signal(4);
129 5 valid=0;
130 5 }
131 4 else if(levl1_p==1)
132 4 {
133 5 if(chge_num==11)
134 5 {
135 6 newTime[6][1]=chgeh[0]; //设置年
136 6 newTime[6][0]=chgeh[1];
137 6 newTime[4][1]=chgeh[2]; //设置月
138 6 newTime[4][0]=chgeh[3];
139 6 newTime[3][1]=chgeh[4]; //设置日
140 6 newTime[3][0]=chgeh[5];
141 6 newTime[2][1]=chgel[0]; //设置年
142 6 newTime[2][0]=chgel[1];
143 6 newTime[1][1]=chgel[2]; //设置分
144 6 newTime[1][0]=chgel[3];
145 6 newTime[0][1]=chgel[4]; //设置秒
146 6 newTime[0][0]=chgel[5];
147 6
148 6 pl[5].pad[0] &=0x66;
149 6 pl[5].pad[1] &=0x66;
150 6 setTime(newTime);
151 6 m_level--;
152 6 chge_num=0;
153 6 chge_time=0;
154 6 }
155 5 else
156 5 {
157 6 chge_num++;
158 6 if(chge_num<6)
159 6 {
160 7 if(ph[chge_num].pn==1)
161 7 {
162 8 ph[chge_num - 1].pad[1] &=0x66;
163 8 ph[chge_num - 1].pad[2] &=0x66;
164 8 ph[chge_num].pad[0] |=0x99;
165 8 ph[chge_num].pad[1] |=0x99;
166 8 }
167 7 else if(ph[chge_num].pn==2)
168 7 {
169 8 ph[chge_num - 1].pad[0] &=0x66;
170 8 ph[chge_num - 1].pad[1] &=0x66;
171 8 ph[chge_num].pad[1] |=0x99;
172 8 ph[chge_num].pad[2] |=0x99;
173 8 }
174 7 }
175 6 else
176 6 {
177 7 if(pl[chge_num -6].pn==1)
178 7 {
C51 COMPILER V8.16 KEYPAD 12/25/2008 19:46:19 PAGE 4
179 8 pl[chge_num -6-1].pad[1] &=0x66;
180 8 pl[chge_num -6-1].pad[2] &=0x66;
181 8 pl[chge_num-6].pad[0] |=0x99;
182 8 pl[chge_num-6].pad[1] |=0x99;
183 8 }
184 7 else if(pl[chge_num -6].pn==2)
185 7 {
186 8 pl[chge_num -6-1].pad[0] &=0x66;
187 8 pl[chge_num -6-1].pad[1] &=0x66;
188 8 pl[chge_num -6].pad[1] |=0x99;
189 8 pl[chge_num -6].pad[2] |=0x99;
190 8 }
191 7 }
192 6 }
193 5 }
194 4 else if(levl1_p == 2)
195 4 {
196 5 if(chge_num==11)
197 5 {
198 6 timerTime[6][1]=chgeh[0]; //设置年
199 6 timerTime[6][0]=chgeh[1];
200 6 timerTime[4][1]=chgeh[2]; //设置月
201 6 timerTime[4][0]=chgeh[3];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -