📄 key.lst
字号:
C51 COMPILER V7.06 KEY 11/09/2004 16:39:44 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE key.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //****************************************************************
2 //FILE: key.c
3 //功能: 按键识别和按键处理
4 //****************************************************************
5 #include <REG931.H>
6 #include"main.h"
7 #include"pcf8576d.h"
8 #include"time.h"
9 #include"ctime.h"
10 #include"spi.h"
11 //****************************************************************
12 uchar KeyNum; //按键ID
13 bit KeyFlag; //按键有效标志
14 uchar ModifyP; //修改状态指示()0-2
15 uchar Mode; //系统模式
16 //****************************************************************
17 void KeyPressed() interrupt 7 //按键中断服务函数
18 {
19 1 uint delay; //延时变量
20 1 KeyFlag =1; //置位按键有效标志
21 1 for(delay=10000;delay>0;delay--); //延时去抖动
22 1 if(!MODEKEY) //如果是模式按键
23 1 {
24 2 KeyNum=1; //按键ID设为1
25 2 if(Mode<8)
26 2 Mode++; //模式<8模式加1
27 2 else
28 2 Mode=1; //否则模式设置为1
29 2 while(!MODEKEY); //等待按键释放
30 2 }
31 1 else if(!MODIFY) //如果是MODIFY按键
32 1 {
33 2 KeyNum=2; //把按键盘ID设为2
34 2 while(!MODIFY); //等待按键释放
35 2 }
36 1 else if(!ADD) //如果是ADD按键
37 1 {
38 2 KeyNum=3; //把按键ID设为3
39 2 while(!ADD); //等待按键释放
40 2 }
41 1 else if(!DEC) //如果是ADDH按键
42 1 {
43 2 KeyNum=4; //把按键ID设为4
44 2 while(!DEC); //等待按键释放
45 2 }
46 1 else if(!ENTER) //如果是确认按键
47 1 {
48 2 KeyNum=5; //将按键ID设为5
49 2 while(!ENTER); //等待按键释放
50 2 }
51 1 else KeyFlag=0; //无效按键,清楚按键标志
52 1 for(delay=10000;delay>0;delay--); //延时去抖动
53 1 KBCON=0x00; //清楚按键中断标志
54 1 }
55 //****************************************************************
C51 COMPILER V7.06 KEY 11/09/2004 16:39:44 PAGE 2
56 void ModeKeyP() //模式键服务程序
57 {
58 1 SendDatTo595(0xff<<Mode); //指示当前模式
59 1 if(Mode==2) //如果是星期模式
60 1 GetWeek(); //需要进行公历到星期的换算
61 1 if(Mode==5) //如果是农历模式
62 1 ConvertDate(); //需要将进行农历换算
63 1 PCF8576Mode(1); //显示当前模式内容
64 1 ModifyP=0; //清零修改状态
65 1 }
66 //****************************************************************
67 void AddorDecKeyP() //加或减按键服务程序
68 {
69 1 bit modifytype;
70 1 if(ModifyP!=0) //如果当前修改状态有效
71 1 { //则进行数据调整
72 2 if(KeyNum==3) //如果是ADD按键
73 2 modifytype=1; //置修改类型为1(加)
74 2 else //否则置为0(减)
75 2 modifytype=0;
76 2 if(Mode==1) //如果是时间模式
77 2 {
78 3 if(ModifyP==1) //修改状态为1(状态只有0,1,2)
79 3 ModifyHour(modifytype); //则对小时进行修改
80 3 else //为2则对分钟进行修改
81 3 ModifyMinute(modifytype);
82 3 }
83 2 else if(Mode==3) //如果是日期模式
84 2 {
85 3 if(ModifyP==1) //修改状态为1
86 3 ModifyMonth(modifytype);//则对月进行修改
87 3 else
88 3 ModifyDay(modifytype); //否则对日进行修改
89 3 }
90 2 else if(Mode==4) //如果是年模式
91 2 {
92 3 ModifyYear(modifytype); //则对年进行修改
93 3 }
94 2 else if(Mode==7) //如果是闹钟模式
95 2 {
96 3 if(ModifyP==1) //状态为1,则对闹钟小时修改
97 3 ModifyAlarmHour(modifytype);
98 3 else //否则对闹钟分钟进行修改
99 3 ModifyAlarmMinute(modifytype);
100 3 }
101 2 }
102 1
103 1 }
104 //****************************************************************
105 void ModifyKeyP() //修改按键服务函数
106 {
107 1 if(Mode==1||Mode==3||Mode==4||Mode==7)//判断是否是可修改模式
108 1 {
109 2 if(Mode==4) //如果是年模式,状态设置为2
110 2 ModifyP=2; //只允许修改低位(0-99)
111 2 else //如果是其它可修改模式
112 2 {
113 3 if(ModifyP<2) //使状态在1和2之间切换
114 3 ModifyP++; //置为2
115 3 else
116 3 ModifyP--; //置为1
117 3 }
C51 COMPILER V7.06 KEY 11/09/2004 16:39:44 PAGE 3
118 2 }
119 1 }
120 //****************************************************************
121 void KeyProcess() //按键处理函数
122 {
123 1 if(KeyNum==1) //如果是模式按键
124 1 ModeKeyP(); //调用模式键服务程序
125 1 else if(KeyNum==2) //如果是修改按键
126 1 ModifyKeyP(); //调用修改按键服务
127 1 else if(KeyNum==3||KeyNum==4) //如果是加减键
128 1 AddorDecKeyP(); //调用加减服务
129 1 else if(KeyNum==5) //如果是确认键
130 1 ModifyP=0; //清楚修改状态
131 1 }
132 //*****************************END********************************
133
134
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 348 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -