📄 time.lst
字号:
C51 COMPILER V7.50 TIME 06/02/2008 20:59:15 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TIME
OBJECT MODULE PLACED IN Time.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Time.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /******************************************************************
2 本程序只供学习使用,未经作者许可,不得用于其它任何用途
3
4 欢迎访问我的USB专区:http://group.ednchina.com/93/
5 欢迎访问我的blog: http://www.ednchina.com/blog/computer00
6 http://computer00.21ic.org
7
8 time.c file
9
10 作者:Computer-lov
11 建立日期: 2008
12 修改日期: 2008
13 版本:V1.0
14 版权所有,盗版必究。
15 Copyright(C) Computer-lov 2008-2018
16 All rights reserved
17 *******************************************************************/
18
19 #include "key.h"
20 #include "uart.h"
21 #include "lcd1602.h"
22 #include "ds1302.h"
23 #include "main.h"
24 #include "240x.h"
25
26 uint8 AlarmTime[4]={0,0,0,0}; //闹钟时间
27 uint8 AlarmTemperature=50; //报警温度
28
29 /********************************************************************
30 函数功能:将日期转换为需要显示的字符串。
31 入口参数:无。
32 返 回:无。
33 备 注:无。
34 ********************************************************************/
35 void DateToString(void)
36 {
37 1 DispBuffer[0]='2';
38 1 DispBuffer[1]='0';
39 1 DispBuffer[2]='0'+(Time[6]>>4); //年
40 1 DispBuffer[3]='0'+(Time[6]&0x0F);
41 1 DispBuffer[4]='-';
42 1 DispBuffer[5]='0'+(Time[4]>>4); //月
43 1 DispBuffer[6]='0'+(Time[4]&0x0F);
44 1 DispBuffer[7]='-';
45 1 DispBuffer[8]='0'+(Time[3]>>4); //日期
46 1 DispBuffer[9]='0'+(Time[3]&0x0F);
47 1 DispBuffer[10]=' ';
48 1 DispBuffer[11]=' ';
49 1 DispBuffer[12]='0'+(Time[5]&0x0F); //星期
50 1 DispBuffer[13]=0;
51 1 }
52 ////////////////////////End of function//////////////////////////////
53
54 /********************************************************************
55 函数功能:将时间转换为需要显示的字符串。
C51 COMPILER V7.50 TIME 06/02/2008 20:59:15 PAGE 2
56 入口参数:无。
57 返 回:无。
58 备 注:无。
59 ********************************************************************/
60 void TimeToString(void)
61 {
62 1 DispBuffer[0]='0'+(Time[2]>>4);
63 1 DispBuffer[1]='0'+(Time[2]&0x0F); //小时
64 1 DispBuffer[2]=':';
65 1 DispBuffer[3]='0'+(Time[1]>>4); //分
66 1 DispBuffer[4]='0'+(Time[1]&0x0F);
67 1 DispBuffer[5]=':';
68 1 DispBuffer[6]='0'+(Time[0]>>4); //秒
69 1 DispBuffer[7]='0'+(Time[0]&0x0F);
70 1 DispBuffer[8]=0;
71 1 }
72 ////////////////////////End of function//////////////////////////////
73
74 /********************************************************************
75 函数功能:显示时间函数。
76 入口参数:无。
77 返 回:无。
78 备 注:无。
79 ********************************************************************/
80 void DispTime(void)
81 {
82 1 GetTime(Time);
83 1 Prints("Date: ");
84 1 DateToString();
85 1 Prints(DispBuffer);
86 1 #ifdef LCD //如果有LCD,则同时显示到LCD上
87 1 if(DispStatus==DISP_TIME)
88 1 {
89 2 LcdCls();
90 2 LcdSetPosition(0x02);
91 2 LcdPrints(DispBuffer);
92 2 }
93 1 #endif
94 1
95 1 Prints("\r\nTime: ");
96 1 TimeToString();
97 1 Prints(DispBuffer);
98 1 Prints("\r\n");
99 1 #ifdef LCD //如果有LCD,则同时显示到LCD上
100 1 if(DispStatus==DISP_TIME)
101 1 {
102 2 LcdSetPosition(0x44);
103 2 LcdPrints(DispBuffer);
104 2 }
105 1 #endif
106 1 }
107 ////////////////////////End of function//////////////////////////////
108
109 /********************************************************************
110 函数功能:设置时间函数。
111 入口参数:无。
112 返 回:无。
113 备 注:无。
114 ********************************************************************/
115 void DispSetTime(void)
116 {
117 1 uint8 SetDigit=1;
C51 COMPILER V7.50 TIME 06/02/2008 20:59:15 PAGE 3
118 1 uint8 on=0;
119 1 uint8 TimeModified=0;
120 1 uint8 t;
121 1 uint8 NeedRefresh;
122 1 uint16 OldTick;
123 1
124 1 Prints("Waiting for input: ");
125 1 while(1)
126 1 {
127 2 if(KeyDown) //有按键按下
128 2 {
129 3 if(KeyDown&(KEY1|KEY2|KEY3|KEY8))return; //按下这些键放弃设置时间,返回
130 3 if(KeyDown&KEY4)
131 3 {
132 4 if(TimeModified) //如果对时间做了修改
133 4 {
134 5 BeepOn(); //蜂鸣器响,提示正在保存设置
135 5 SetTime(Time); //保存设置的时间
136 5 BeepOff();
137 5 }
138 4 DispStatus=DISP_TIME; //切换回时间显示状态
139 4 KeyDown&=~KEY4;
140 4 return;
141 4 }
142 3 if(KeyDown&KEY5) //切换调整位
143 3 {
144 4 SetDigit++; //切换到下一位
145 4 if(SetDigit>=14)SetDigit=1; //到最后一位,返回
146 4 KeyDown&=~KEY5;
147 4 NeedRefresh=1; //需要刷新显示
148 4 }
149 3 if(KeyDown&KEY6) //减1调整
150 3 {
151 4 TimeModified=1; //修改了时钟
152 4 NeedRefresh=1; //需要刷新显示
153 4 switch(SetDigit) //调整不同的位
154 4 {
155 5 case 1: //年高位
156 5 t=Time[6]>>4;
157 5 if(t>0)t--;
158 5 else t=9;
159 5 Time[6]&=0x0F;
160 5 Time[6]|=t<<4;
161 5 break;
162 5
163 5 case 2: //年低位
164 5 t=Time[6]&0x0F;
165 5 if(t>0)t--;
166 5 else t=9;
167 5 Time[6]&=0xF0;
168 5 Time[6]|=t;
169 5 break;
170 5
171 5 case 3: //月高位
172 5 t=(Time[4]>>4)&0x01;
173 5 if(t!=0)t=0;
174 5 else
175 5 {
176 6 t=1;
177 6 Time[4]&=0xF0;
178 6 }
179 5 Time[4]&=0x0F;
C51 COMPILER V7.50 TIME 06/02/2008 20:59:15 PAGE 4
180 5 Time[4]|=t<<4;
181 5 break;
182 5
183 5 case 4: //月低位
184 5 t=Time[4]&0x0F;
185 5 if((Time[4]>>4)==0)
186 5 {
187 6 if(t>0)t--;
188 6 else t=9;
189 6 }
190 5 else
191 5 {
192 6 if(t>0)t--;
193 6 else t=2;
194 6 }
195 5 Time[4]&=0xF0;
196 5 Time[4]|=t;
197 5 break;
198 5
199 5 case 5: //天高位
200 5 t=(Time[3]>>4)&0x03;
201 5 if((Time[4]&0x1F)==2)
202 5 {
203 6 if(t>0)t--;
204 6 else t=2;
205 6 }
206 5 else
207 5 {
208 6 if(t>0)t--;
209 6 else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -