📄 calendarclk.lst
字号:
C51 COMPILER V7.02b CALENDARCLK 12/10/2005 19:36:25 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE CALENDARCLK
OBJECT MODULE PLACED IN CalendarClk.OBJ
COMPILER INVOKED BY: E:\EDATOOLS\KEILC7.0\C51\BIN\C51.EXE CalendarClk.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*****************************************/
2 /* Copyright (c) 2005, 通信工程学院 */
3 /* All rights reserved. */
4 /* 作 者:戴 佳 */
5 /*****************************************/
6
7 #include "CalendarClk.h"
8
9 /* 从串行口获取数据函数,数据包括:year1,month1,dayofweek1,
10 dayofmonth1,hour1,min1。如果获取到正确数据则返回1,否则返回0 */
11 uchar getdata()
12 {
13 1 // 略去
14 1 }
*** WARNING C173 IN LINE 14 OF CALENDARCLK.C: missing return-expression
15
16 /* 设置日历和时钟函数 */
17 void settime()
18 {
19 1 REG_B = REG_B|0x80; // SET=1,芯片DS12C887处于设置状态
20 1
21 1 MIN = min1;
22 1 HOUR = hour1;
23 1 DAYOFWEEK = dayofweek1;
24 1 DAYOFMONTH = dayofmonth1;
25 1 MONTH = month1;
26 1 YEAR = year1;
27 1
28 1 REG_B = REG_B&0x7f; // SET=0,芯片DS12C887恢复正常数据更新状态
29 1 }
30
31
32 /* 获取日历时钟函数 */
33 void gettime()
34 {
35 1 while (REG_A&0x80==0x00) // 直到UIP=0时,才能读取日历时钟信息 {
36 1 {
37 2 min2 = MIN ;
38 2 hour2 = HOUR;
39 2 dayofweek2 = DAYOFWEEK;
40 2 dayofmonth2 = DAYOFMONTH;
41 2 month2 = MONTH;
42 2 year2 = YEAR;
43 2 }
44 1 }
45
46 /* 13位数码管显示年、月、日、星期、时、分 */
47 void display()
48 {
49 1 // 略去
50 1 }
51
52 /* 串口初始化函数 */
53 void init_serial()
54 {
C51 COMPILER V7.02b CALENDARCLK 12/10/2005 19:36:25 PAGE 2
55 1 TMOD = 0x20; // 定时器T1使用工作方式2
56 1 TH1 = 250;
57 1 TL1 = 250;
58 1 TR1 = 1; // 开始计时
59 1 PCON = 0x80; // SMOD = 1
60 1 SCON = 0x50; // 工作方式1,波特率9600kbit/s,允许接收
61 1 }
62
63
64 void main(void)
65 {
66 1 uchar setflag;
67 1 init_serial();
68 1
69 1 /* 设置DV2、DV1、DV0为010,打开芯片DS12C877内部晶振 */
70 1 REG_A = REG_A&0xaf; // DV2=DV0=0
71 1 REG_A = REG_A|0x20; // DV1=0
72 1
73 1 REG_B = REG_B&0x7b; // SET=0,时间数据正常更新;DM=0,二进制数据模式
74 1 REG_B = REG_B|0x02; // 寄存器B的24/12位置1,24小时时间模式
75 1
76 1 while (1)
77 1 {
78 2 setflag = getdata(); // 通过查询方式获取串口数据
79 2
80 2 /* 如果获取到正确数据,则设置时间 */
81 2 if (setflag==0x01)
82 2 settime();
83 2
84 2 /* 调用获取日历时钟函数 */
85 2 gettime();
86 2
87 2 /* 13位数码管显示日历、星期和时间信息 */
88 2 display();
89 2 }
90 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 106 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 12 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -