📄 pcf8563.lst
字号:
C51 COMPILER V6.12 PCF8563 12/23/2004 11:57:19 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE PCF8563
OBJECT MODULE PLACED IN C:\MY\HICJ6\PCF8563.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE C:\MY\HICJ6\PCF8563.C DB SB OE
stmt level source
1 #include "P89C60X2.h"
2 #include "hicj6.h"
3
4 BYTE idata rom_sed[9];
5
6 BYTE idata rom_rec[7];
7
8 BYTE idata j,k;
9
10 bit flag,flag1;
11
12 void delay(void) //延时子程序
13
14 {BYTE i;
15 1
16 1 for(i=0;i<6;i++);
17 1
18 1 }
19
20 void I_start(void) //发送I2C总线起始条件子程序
21
22 {sda=1;
23 1
24 1 ;
25 1
26 1 scl=1;
27 1
28 1 delay();
29 1
30 1 sda=0;
31 1
32 1 delay();
33 1
34 1 scl=0;
35 1
36 1 ;
37 1
38 1 }
39
40 void I_stop(void) //I2C总线停止条件子程序
41
42 {sda=0;
43 1
44 1 ;
45 1
46 1 scl=1;
47 1
48 1 delay();
49 1
50 1 sda=1;
51 1
52 1 delay();
53 1
54 1 }
55
C51 COMPILER V6.12 PCF8563 12/23/2004 11:57:19 PAGE 2
56 bit I_send(BYTE I_data) //字节数据传送子程序
57
58 { BYTE i;
59 1
60 1 for(i=0;i<8;i++)
61 1
62 1 {//sda-(bit)(I_data&0x80);
63 2
64 2 I_data=I_data<<1;
65 2
66 2 scl=1;
67 2
68 2 delay();
69 2
70 2 scl=0;
71 2
72 2 }
73 1
74 1 ;;
75 1
76 1 sda=1; ;; //ready for receiving ACK bit
77 1
78 1 scl=1; ;; //start receiving ack bit
79 1
80 1 flag=0;
81 1
82 1 if(sda==0)flag=0;
83 1
84 1 else flag=1; //return(~I_clock());
85 1
86 1 scl=0;
87 1
88 1 return(flag);
89 1
90 1 }
91
92 BYTE I_receive(void) //字节数据接收子程序
93
94 { data BYTE i;
95 1
96 1 BYTE I_data=0;
97 1
98 1 sda=1;
99 1
100 1 for(i=0;i<8;i++)
101 1
102 1 { I_data*=2;
103 2
104 2 ;
105 2
106 2 scl=0;
107 2
108 2 delay();
109 2
110 2 scl=1; ;;
111 2
112 2 if(sda==1)I_data++;
113 2
114 2 ;;
115 2
116 2 }
117 1
C51 COMPILER V6.12 PCF8563 12/23/2004 11:57:19 PAGE 3
118 1 scl=0; ;;;
119 1
120 1 sda=0;
121 1
122 1 if(flag1==0){;;scl=1;delay();scl=0;} //not last receic_BYTE ACK
123 1
124 1 else{sda=1; ;;scl=1;delay();scl=0;flag1=0;} //the last receive_BYTE ~ACK
125 1
126 1 return(I_data);
127 1
128 1 }
129 /*
130 main() //主程序
131
132 {data BYTE i;
133
134 rom_sed[0]=0x00; rom_sed[1]=0x00;
135
136 rom_sed[2]=0x00; rom_sed[3]=0x55;
137
138 rom_sed[4]=0x23; rom_sed[5]=0x31;
139
140 rom_sed[6]=0x06; rom_sed[7]=0x92;
141
142 rom_sed[8]=0x99;
143
144 for(i=0;i<255;i++)delay();
145
146 I_start();
147
148 if(~I_send(rom_sed[i]));
149
150 else;
151
152 }
153
154 I_stop();
155
156 }
157
158 else;
159
160 }
161
162 else;
163
164 start: I_start();
165
166 if(~I_send(0xa2)) //pcf_write address
167
168 {if(~I_send(0x02)) //pcf_status register address
169
170 {I_start();
171
172 if(~I_send(0xa3)) //write status register
173
174 {for(i=0;i<7;i++)
175
176 {if(i= =6)flag1=1;
177
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -