?? pcf8563lib.lst
字號:
C51 COMPILER V7.50 PCF8563LIB 03/19/2009 16:09:25 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE PCF8563LIB
OBJECT MODULE PLACED IN PCF8563lib.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE PCF8563lib.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "PCF8563lib.h"
*** WARNING C318 IN LINE 6 OF PCF8563lib.h: can't open file 'IIClib.h'
2
3 void PCF8563_Delay(uint n)
4 {
5 1 uint i;
6 1 for(i=0;i<n;i++);
7 1 }
8
9 void PCF8563_SetCS(struct c_s cs) /*設置控制/狀態子函數*/
10 {
11 1 IICWrite(0xa2,0,(uchar*)&cs,sizeof(struct c_s)); /*指針轉換*/
*** WARNING C206 IN LINE 11 OF PCF8563LIB.C: 'IICWrite': missing function-prototype
*** ERROR C267 IN LINE 11 OF PCF8563LIB.C: 'IICWrite': requires ANSI-style prototype
12 1 PCF8563_Delay(100);
13 1 }
14
15 void PCF8563_ReadCS(struct c_s* cs) /*讀控制/狀態字*/
16 {
17 1 IICRead(0xa2,0,(uchar*)cs,sizeof(struct c_s));
18 1 }
19
20 void PCF8563_ReadTime(struct time* tm) /*讀時間函數*/
21 {
22 1 IICRead(0xa2,2,(uchar*)tm,sizeof(struct time));
23 1 tm->seconds &= 0x7f; /*屏蔽無關位*/
24 1 tm->minutes &= 0x7f;
25 1 tm->hours &= 0x3f;
26 1 tm->days &= 0x3f;
27 1 tm->weekdays &= 0x07;
28 1 tm->mon_cen &= 0x1f;
29 1 }
30
31 bit PCF8563_SetTime(struct time tm) /*設定時間函數*/
32 {
33 1 tm.seconds = (tm.seconds%10) | ((tm.seconds/10)<<4); /*HEX到BCD*/
34 1 tm.minutes = (tm.minutes%10) | ((tm.minutes/10)<<4);
35 1 tm.hours = (tm.hours%10) | ((tm.hours/10)<<4);
36 1 tm.days = (tm.days%10) | ((tm.days/10)<<4);
37 1 tm.weekdays = tm.weekdays;
38 1 tm.mon_cen = (tm.mon_cen%10) | ((tm.mon_cen/10)<<4);
39 1 tm.years = (tm.years%10) | ((tm.years/10)<<4);
40 1
41 1 IICWrite(0xa2,2,(uchar*)&tm,sizeof(struct time));
42 1 PCF8563_Delay(100);
43 1 return 0;
44 1
45 1 }
46
47 void PCF8563_ReadAlarm(struct alarm* alm) /*讀鬧鐘函數*/
48 {
49 1 IICRead(0xa2,9,&alm->minute,1);
50 1 IICRead(0xa2,10,&alm->hour,1);
51 1 IICRead(0xa2,11,&alm->day,1);
52 1 IICRead(0xa2,12,&alm->weekday,1);
C51 COMPILER V7.50 PCF8563LIB 03/19/2009 16:09:25 PAGE 2
53 1
54 1 alm->minute &= 0x7f; /*屏蔽無關位*/
55 1 alm->hour &= 0x3f;
56 1 alm->day &= 0x3f;
57 1 alm->weekday &= 0x07;
58 1
59 1 }
60
61 bit PCF8563_SetAlarm(struct alarm alm,bit min,bit hou,bit day,bit wee)
62 /*設定鬧鐘函數*/
63 {
64 1 if(min){ /*如果需要使能分鐘報警*/
65 2 alm.minute = (alm.minute%10) | ((alm.minute/10)<<4);
66 2 alm.minute = alm.minute & 0x7f;
67 2 }else{
68 2 alm.minute = alm.minute | 0x80;
69 2 }
70 1 if(hou){ /*如果需要使能小時報警*/
71 2 alm.hour = (alm.hour % 10) | ((alm.hour/10)<<4);
72 2 alm.hour = alm.hour & 0x7f;
73 2 }else{
74 2 alm.hour = alm.hour | 0x80;
75 2 }
76 1 if(day){ /*如果需要使能天報警*/
77 2 alm.day = (alm.day % 10) | ((alm.day/10)<<4);
78 2 alm.day = alm.day & 0x7f;
79 2 }else{
80 2 alm.day = alm.day | 0x80;
81 2 }
82 1 if(wee){ /*如果需要使能星期報警*/
83 2 alm.weekday = (alm.weekday % 10) | ((alm.weekday/10)<<4);
84 2 alm.weekday = alm.weekday & 0x7f;
85 2 }else{
86 2 alm.weekday = alm.weekday | 0x80;
87 2 }
88 1 IICWrite(0xa2,9,(uchar*)&alm,sizeof(struct alarm)); /*指針轉換*/
89 1 PCF8563_Delay(100);
90 1 return 0;
91 1 }
92
93 void PCF8563_StartTimer(char freq) /*啟動定時器*/
94 {
95 1 uchar cmd;
96 1 switch(freq)
97 1 {
98 2 case 0:cmd = 0x80;break;
99 2 case 1:cmd = 0x81;break;
100 2 case 2:cmd = 0x82;break;
101 2 case 3:cmd = 0x83;break;
102 2 default:cmd = 0x82;break;
103 2 }
104 1
105 1 IICWrite(0xa2,14,&cmd,1);
106 1 }
107 void PCF8563_StopTimer(void) /*啟動定時器*/
108 {
109 1 uchar cmd;
110 1 IICRead(0xa2,14,&cmd,1);
111 1 cmd & = 0x7f;
112 1 IICWrite(0xa2,14,&cmd,1);
113 1 }
114 void PCF8563_SetTimerCount(uchar count) /*設置定時器初值*/
C51 COMPILER V7.50 PCF8563LIB 03/19/2009 16:09:25 PAGE 3
115 {
116 1 IICWrite(0xa2,15,&count,1);
117 1 }
C51 COMPILATION COMPLETE. 2 WARNING(S), 1 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -