📄 mmi.lst
字号:
C51 COMPILER V8.08 MMI 10/02/2007 07:17:23 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MMI
OBJECT MODULE PLACED IN MMI.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MMI.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /*--------------------------------------------------------------------*-
2
3 MMI.C (V1.00)
4
5
6 -*---------------------------------------------------------------------*/
7
8 /*
9 * Copyright (c) 2006,wsl
10 * All rights reserved
11 *
12 * 文件名称: MMI.C
13 * 文件标识:
14 * 摘 要: 人机接口
15 *
16 * 当前版本: V1.0 * 取代版本:
17 * 作 者: wsl * 修 改:
18 * 版本信息: 2006-09-14 * 修改信息:
19 */
20 //***********************************************************************
21
22 #include"main.H"
23 #include"Port.H"
24 #include"MMI.h"
25 #include"SCH51.H"
26 #include"Uart.h"
27
28
29
30
31 /*实时时间*/
32 time_str now={17,56,50};
33
34 alarm_str Ring[MAX_RING_NUMBER];
35 /*打铃标记D0 ~ D7*/
36 unsigned char RingIDRegister = 0;
37 /*备份打铃标记,24小时后在时钟函数中恢复*/
38 unsigned char BackupRingID = 0;
39
40
41 /*-----------------------------------------------------------------------*-
42 * 函数名称: FLASH_LED()
43 * 参 数: XX
44 * 返 回: XX
45 * 函数功能: 闪烁灯,作为系统指示
46 *
47 * 说 明:
48 *
49 * 当前版本: V1.0 * 取代版本:
50 * 作 者: wsl * 修 改:
51 * 版本信息: 2006-09-14 * 修改信息:
52 -*-----------------------------------------------------------------------*/
53 void FLASH_LED(void)
54 {
55 1 D1 = ~D1;
C51 COMPILER V8.08 MMI 10/02/2007 07:17:23 PAGE 2
56 1 }
57
58 /*-----------------------------------------------------------------------*-
59 * 函数名称: OpenBuzzer()
60 * 参 数: XX
61 * 返 回: XX
62 * 函数功能: 打开蜂鸣器
63 *
64 * 说 明:
65 *
66 * 当前版本: V1.0 * 取代版本:
67 * 作 者: wsl * 修 改:
68 * 版本信息: 2006-09-14 * 修改信息:
69 -*-----------------------------------------------------------------------*/
70 void OpenBuzzer(void)
71 {
72 1 BUZZER = 0;
73 1 D2 = 0;
74 1 }
75 /*-----------------------------------------------------------------------*-
76 * 函数名称: CloseBuzzer()
77 * 参 数: XX
78 * 返 回: XX
79 * 函数功能: 关闭蜂鸣器
80 *
81 * 说 明:
82 *
83 * 当前版本: V1.0 * 取代版本:
84 * 作 者: wsl * 修 改:
85 * 版本信息: 2006-09-14 * 修改信息:
86 -*-----------------------------------------------------------------------*/
87 void CloseBuzzer(void)
88 {
89 1 BUZZER = 1;
90 1 D2 = 1;
91 1 }
92
93 /*-----------------------------------------------------------------------*-
94 * 函数名称: RTC_Soft_clock()
95 * 参 数: XX
96 * 返 回: XX
97 * 函数功能: 走时时钟
98 *
99 * 说 明:
100 *
101 * 当前版本: V1.0 * 取代版本:
102 * 作 者: wsl * 修 改:
103 * 版本信息: 2006-09-14 * 修改信息:
104 -*-----------------------------------------------------------------------*/
105 void RTC_Soft_clock(void)
106 {
107 1 now.sec++;
108 1 if (now.sec > 59)
109 1 {
110 2 now.sec = 0; /*一秒钟*/
111 2 now.min++;
112 2 if (now.min > 59)
113 2 {
114 3 now.min = 0; /*一分钟*/
115 3 now.hour++;
116 3
117 3 if (now.hour > 23)
C51 COMPILER V8.08 MMI 10/02/2007 07:17:23 PAGE 3
118 3 {
119 4 now.hour = 0; /*一小时*/
120 4 RingIDRegister = BackupRingID; /*恢复打铃点*/
121 4 }
122 3 }
123 2 }
124 1 }
125 /*-----------------------------------------------------------------------*-
126 * 函数名称: SetRing()
127 * 参 数: 时,分和第几个打铃点
128 * 返 回: 打铃点位数
129 * 函数功能: 设置打铃点(最大8个)
130 *
131 * 说 明: : 2005.6.2 by wangsw
132 *
133 * 当前版本: V1.0 * 取代版本:
134 * 作 者: wsl * 修 改:
135 * 版本信息: 2006-09-14 * 修改信息:
136 -*-----------------------------------------------------------------------*/
137 #if 0
unsigned char SetRing(const unsigned char hour, const unsigned char min)
{
unsigned char i;
for (i=0; i<MAX_RING_NUMBER; i++)
{
if(!GETBIT(RingIDRegister, i))
{
SETBIT(RingIDRegister, i); /*设置打铃标记*/
SETBIT(BackupRingID, i); /*备份打铃标记*/
Ring[i].hour = hour;
Ring[i].min = min;
return (i+1); /*主要是C语言变量从0开始*/
}
}
// 否则返回错误
}
#endif
155 unsigned char SetRing(const unsigned char hour, const unsigned char min, const unsigned char AlarmCnt)
156 {
157 1 if (AlarmCnt < MAX_RING_NUMBER)
158 1 {
159 2 SETBIT(RingIDRegister, AlarmCnt); /*设置打铃标记*/
160 2 SETBIT(BackupRingID, AlarmCnt); /*备份打铃标记*/
161 2 Ring[AlarmCnt].hour = hour;
162 2 Ring[AlarmCnt].min = min;
163 2 return (AlarmCnt); /*主要是C语言变量从0开始*/
164 2 }
165 1 }
166 /*-----------------------------------------------------------------------*-
167 * 函数名称: RingStop()
168 * 参 数: 打铃点
169 * 返 回: XX
170 * 函数功能: 删除打铃点(最大<8),但并不删除备份打铃标记
171 *
172 * 说 明: : 2005.6.2 by wangsw
173 *
174 * 当前版本: V1.0 * 取代版本:
175 * 作 者: wsl * 修 改:
176 * 版本信息: 2006-09-14 * 修改信息:
177 -*-----------------------------------------------------------------------*/
178 void RingStop(const unsigned char val)
179 {
C51 COMPILER V8.08 MMI 10/02/2007 07:17:23 PAGE 4
180 1 if(val < MAX_RING_NUMBER)
181 1 {
182 2 RESETBIT(RingIDRegister, val);
183 2 }
184 1 else
185 1 {
186 2 // ERRprintf("RingStop\n");
187 2 }
188 1 }
189 /*-----------------------------------------------------------------------*-
190 * 函数名称: RingGetID()
191 * 参 数: XX
192 * 返 回: return ID
193 * 函数功能: GetID(获取打铃点个数)
194 *
195 * 说 明: : 2005.6.2 by wangsw
196 *
197 * 当前版本: V1.0 * 取代版本:
198 * 作 者: wsl * 修 改:
199 * 版本信息: 2006-09-14 * 修改信息:
200 -*-----------------------------------------------------------------------*/
201 unsigned char RingGetID(void)
202 {
203 1 unsigned char i;
204 1 for(i = 0; i < MAX_RING_NUMBER; i++)
205 1 {
206 2 if(!GETBIT(RingIDRegister, i))
207 2 {
208 3 return(i);
209 3 }
210 2 }
211 1
212 1 return(0);
213 1 }
214 /*-----------------------------------------------------------------------*-
215 * 函数名称: Ring_server()
216 * 参 数: XX
217 * 返 回: XX
218 * 函数功能: 打铃服务程序
219 *
220 * 说 明: : 2005.6.2 by wangsw
221 *
222 * 当前版本: V1.0 * 取代版本:
223 * 作 者: wsl * 修 改:
224 * 版本信息: 2006-09-14 * 修改信息:
225 -*-----------------------------------------------------------------------*/
226 void Ring_server(void)
227 {
228 1 unsigned char i = 0;
229 1 unsigned char hour, min;
230 1 unsigned char RingIDRegisterMap;
231 1 RingIDRegisterMap = RingIDRegister;
232 1
233 1 while(RingIDRegisterMap)
234 1 {
235 2 if((RingIDRegisterMap & 0x01) == 1)
236 2 {
237 3 hour = now.hour/10;
238 3 hour = (hour<<4) | (now.hour%10);
239 3 min = now.min/10;
240 3 min = (min<<4) | (now.min%10);
241 3 /*实时时间与设置的打铃点时间相同*/
C51 COMPILER V8.08 MMI 10/02/2007 07:17:23 PAGE 5
242 3 if( (Ring[i].hour == hour) && (Ring[i].min == min) )
243 3 {
244 4 OpenBuzzer(); /*响铃*/
245 4 SCH_Add_Task(CloseBuzzer, 12000, 0); /*一分钟后关闭*/
246 4 /*铃声响过后,在此删除此打铃点,24小时后从新恢复*/
247 4 RingStop(i);
248 4 }
249 3 }
250 2 RingIDRegisterMap = RingIDRegisterMap >> 1;
251 2 i++;
252 2 }
253 1 }
254
255
256
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 246 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 21 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -