📄 key_scan.lst
字号:
C51 COMPILER V7.08 KEY_SCAN 04/18/2008 23:24:27 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE KEY_SCAN
OBJECT MODULE PLACED IN key_scan.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE key_scan.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include<ds1307.h>
3
4 #define KEY_IDEL 0x00
5 #define KEY_DELAY 0x01
6 #define WAIT_KEY_OPEN 0x02
7 #define DISP_TIME 0x03
8 #define SET_TIME 0x04
9 #define SET_ALARM_TIME 0x05
10 #define DISP_ALARM_TIME 0x06
11
12 #define KEY_STATE 0xff
13 #define KEY_DELAY_TIME 10
14
15 sbit BEEP=P1^2;
16
17 unsigned char time_base;
18 unsigned char led_buf[6];
19 unsigned char disflag[6]={0x20,0x10,0x08,0x04,0x02,0x01};
20 unsigned char KeyDelaytime;
21 unsigned char key;
22 unsigned char Key_v;
23 unsigned char Key45_v;
24 unsigned char Keystate;
25 unsigned char n,flag;
26 unsigned char Sec, Min, Hrs;
27 unsigned char Machine_State;
28 unsigned char led_control;
29 unsigned char alarm_disp_contol;
30 unsigned char alarm_conter;
31 unsigned char alarm_time[9][2];
32
33 void key_pro(unsigned char Key_v)
34 {
35 1 unsigned char min_low,min_high,hrs_low,hrs_high,i;
36 1 // unsigned char min_lowtemp,min_hightemp,hrs_lowtemp,hrs_hightemp;
37 1 switch(Key_v&0xff)
38 1 {
39 2 case 0xfe ://功能键
40 2 switch(Machine_State)
41 2 {
42 3 case DISP_TIME:
43 3 led_control=1;
44 3 Machine_State=SET_TIME;
45 3 for(i=0;i<6;i++)
46 3 {
47 4 led_buf[i]=zimo[0];
48 4 }
49 3 led_buf[4]=zimo[1];
50 3 break;
51 3 case SET_TIME:
52 3 led_control=1;
53 3 Machine_State=SET_ALARM_TIME;
54 3 for(i=0;i<6;i++)
55 3 {
C51 COMPILER V7.08 KEY_SCAN 04/18/2008 23:24:27 PAGE 2
56 4 led_buf[i]=zimo[0];
57 4 }
58 3 led_buf[4]=zimo[2];
59 3 break;
60 3 case SET_ALARM_TIME:
61 3 Machine_State=DISP_ALARM_TIME;
62 3 for(i=0;i<6;i++)
63 3 {
64 4 led_buf[i]=zimo[0];
65 4 }
66 3 led_buf[4]=zimo[3];
67 3 break;
68 3 case DISP_ALARM_TIME:
69 3 Machine_State=DISP_TIME;
70 3 break;
71 3 }
72 2 break;
73 2 case 0xfd ://确认键
74 2 switch(Machine_State)
75 2 {
76 3 case DISP_TIME:
77 3 BEEP=0;
78 3 case SET_TIME:
79 3 switch(led_control)
80 3 {
81 4 case 2:
82 4 min_low=Key45_v;
83 4 break;
84 4 case 3:
85 4 min_high=Key45_v;
86 4 break;
87 4 case 4:
88 4 hrs_low=Key45_v;
89 4 break;
90 4 case 5:
91 4 hrs_high=Key45_v;
92 4 break;
93 4 }
94 3 Key45_v=0;
95 3 led_control++;
96 3 if(led_control==6)
97 3 {
98 4 Sec=0x00;
99 4 Min=(min_high<<4)|min_low;
100 4 Hrs=(hrs_high<<4)|hrs_low;
101 4 Init_Rtc(Sec,Min,Hrs);
102 4 Machine_State=DISP_TIME;
103 4 led_control=0;
104 4 }
105 3 break;
106 3 case SET_ALARM_TIME:
107 3 switch(led_control)
108 3 {
109 4 case 2:
110 4 min_low=Key45_v;
111 4 break;
112 4 case 3:
113 4 min_high=Key45_v;
114 4 break;
115 4 case 4:
116 4 hrs_low=Key45_v;
117 4 break;
C51 COMPILER V7.08 KEY_SCAN 04/18/2008 23:24:27 PAGE 3
118 4 case 5:
119 4 hrs_high=Key45_v;
120 4 break;
121 4 }
122 3 Key45_v=0;
123 3 led_control++;
124 3 if(led_control==6)
125 3 {
126 4 alarm_time[alarm_conter][0]=(min_high<<4)|min_low;
127 4 alarm_time[alarm_conter][1]=(hrs_high<<4)|hrs_low;
128 4 alarm_conter++;
129 4 led_control=0;
130 4 if(alarm_conter==9)
131 4 {
132 5 alarm_conter=0;
133 5 }
134 4 Machine_State=DISP_TIME;
135 4 }
136 3 break;
137 3 case DISP_ALARM_TIME:
138 3 alarm_disp_contol++;
139 3 if(alarm_disp_contol==alarm_conter)
140 3 {
141 4 Machine_State=DISP_TIME;
142 4 alarm_disp_contol=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -