📄 12c887.lst
字号:
C51 COMPILER V7.20 12C887 11/15/2005 18:46:53 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE 12C887
OBJECT MODULE PLACED IN 12C887.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil Uvision V7.20\C51\BIN\C51.EXE 12C887.C BROWSE DEBUG OBJECTEXTEND SYMBOLS
line level source
1 //*************************************************************************************************
2 // Module Name : 12C887.C
3 // CreateDate : 2005-01-09
4 // ModifData : 2005-05-05
5 // Description :
6 // Author : 李远正
7 // Version : V1.0
8 //*************************************************************************************************
9
10 #include <absacc.h>
11 #include "12C887.H"
12
13 //-------------------------------------------------------------------------------------------------
14 //-------------------------------------------------------------------------------------------------
15 // 设置系统时间
16 void Setup12C887( unsigned char *p )
17 {
18 1 unsigned char i;
19 1
20 1 for ( i=0; i<20; i++ ) { temp = RTC_REGA; if ( (temp&0x80) == 0 ) break; } // Wait for ...
21 1
22 1 RTC_REGA = 0x70;
23 1 RTC_REGB = 0xa2;
24 1 RTC_SEC = *p++;
25 1 RTC_SEC_ALM = 0xff;
26 1 RTC_MIN = *p++;
27 1 RTC_MIN_ALM = 0xff;
28 1 RTC_HOU = *p++;
29 1 RTC_HOU_ALM = 0xff;
30 1 RTC_DAY_WEK = *p++;
31 1 RTC_DAY_MON = *p++;
32 1 RTC_MON = *p++;
33 1 RTC_YEAR = *p++;
34 1 RTC_REGB = 0x26;
35 1 RTC_REGA = 0x20;
36 1 }
37
38 //-------------------------------------------------------------------------------------------------
39 // 读取系统时间
40 void Read12C887( unsigned char *p )
41 {
42 1 unsigned char i;
43 1
44 1 for ( i=0; i<20; i++ ) { temp = RTC_REGA; if ( (temp&0x80) == 0 ) break; } // Wait for ...
45 1
46 1 *p++ = RTC_SEC;
47 1 *p++ = RTC_MIN;
48 1 *p++ = RTC_HOU;
49 1 *p++ = RTC_DAY_WEK;
50 1 *p++ = RTC_DAY_MON;
51 1 *p++ = RTC_MON;
52 1 *p++ = RTC_YEAR;
53 1 }
54
55 //-------------------------------------------------------------------------------------------------
C51 COMPILER V7.20 12C887 11/15/2005 18:46:53 PAGE 2
56 // 启动时钟
57 void Start12C887( void )
58 {
59 1 RTC_REGA = 0x70; // 开启晶体振荡器
60 1 RTC_REGB = 0xa2; // 禁止芯片更新,允许闹钟中断,二进制输出,设置为24小时制
61 1 RTC_SEC_ALM = 0xff; // 清闹钟
62 1 RTC_MIN_ALM = 0xff;
63 1 RTC_HOU_ALM = 0xff;
64 1 RTC_REGB = 0x26; // 允许更新
65 1 RTC_REGA = 0x20; // 晶体振荡器开启并保持时钟运行
66 1 }
67
68 //=================================================================================================
69 // 将一个字节写入12c887的RAM
70 void Write12C887RAM( unsigned int address,unsigned char datum )
71 {
72 1 unsigned char xdata *p;
73 1 unsigned char i;
74 1
75 1 for ( i=0; i<20; i++ ) { temp = RTC_REGA; if ( (temp&0x80) == 0 ) break; } // Wait for ...
76 1
77 1 p = (unsigned char xdata *)address;
78 1 *p = datum;
79 1 }
80
81 //-------------------------------------------------------------------------------------------------
82 // 从RAM中读出一个字节
83 unsigned char Read12C887RAM( unsigned int address )
84 {
85 1 unsigned char xdata *p;
86 1 unsigned char i;
87 1
88 1 for ( i=0; i<20; i++ ) { temp = RTC_REGA; if ( (temp&0x80) == 0 ) break; } // Wait for ...
89 1
90 1 p = (unsigned char xdata *)address;
91 1 temp = *p;
92 1
93 1 return ( temp );
94 1 }
95
96 //=================================================================================================
97 // Select one of the 13 taps on the 15–stage divider
98 // or disable the divider output.
99 // Generate an output square wave (SQW)
100 void SetSQW( unsigned char frequency )
101 {
102 1 temp = RTC_REGA;
103 1 temp &= 0xF0;
104 1 temp |= frequency;
105 1 RTC_REGA = temp;
106 1 }
C51 COMPILER V7.20 12C887 11/15/2005 18:46:53 PAGE 3
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
_SetSQW. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
frequency. . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
_Read12C887RAM . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
address. . . . . . . . . . . . . . . * REG * DATA U_INT 0006H 2
p. . . . . . . . . . . . . . . . . . * REG * DATA PTR 0082H 2
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
_Write12C887RAM. . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
address. . . . . . . . . . . . . . . * REG * DATA U_INT 0006H 2
datum. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
p. . . . . . . . . . . . . . . . . . * REG * DATA PTR 0082H 2
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0004H 1
_Read12C887. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
p. . . . . . . . . . . . . . . . . . AUTO DATA PTR 0000H 3
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
temp . . . . . . . . . . . . . . . . . EXTERN DATA U_CHAR ----- 1
_Setup12C887 . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
p. . . . . . . . . . . . . . . . . . AUTO DATA PTR 0000H 3
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
Start12C887. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 472 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 6
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 + -