📄 txt.lst
字号:
C51 COMPILER V7.07 TXT 11/02/2007 15:52:50 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE TXT
OBJECT MODULE PLACED IN txt.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE txt.c ROM(SMALL) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /************************************************/
2
3 /************************************************/
4 #include <REG52.H>
5 #include <stdio.h>
6
7 #ifdef MONITOR51 /* Debugging with Monitor-51 needs */
char code reserve [3] _at_ 0x23; /* space for serial interrupt if */
#endif /* Stop Exection with Serial Intr. */
10 /* is enabled */
11 const char Ledbuf[18]=/*digit convert table*//* 共阴*/
12 { 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,
13 /* 0 1 2 3 4 5 6 7 8 9 */
14 0x77, 0x7C, 0x39, 0x500E, 0x79, 0x71, 0x00, 0x40 };
15 /* a b c d e f - */
16
17
18 sbit P10=P1^0;
19 sbit P11=P1^1;
20 sbit P12=P1^2;
21 sbit P13=P1^3;
22 sbit P14=P1^4;
23 sbit P15=P1^5;
24 sbit sda=P1^6;
25 sbit cclk=P1^7;
26 sbit P33=P3^3;
27 sbit P32=P3^2;
28 sbit din=P3^0;
29 sbit aclk=P3^1;
30 unsigned int kl=0,kh=0;
31
32 unsigned char ATdata;
33
34 unsigned int retdate;
35
36
37 void Delay(unsigned int DelayTime)
38 {
39 1 if (DelayTime == 0)return;
40 1 while(DelayTime != 0)
41 1 {DelayTime--; }
42 1 }
43
44 void display(ledtim)
45 char ledtim[4];
46 { if(ledtim[3]==0x3F)
47 1 { P0=ledtim[0];
48 2 P2=0x01;
49 2 Delay(500);
50 2 P0=ledtim[1];
51 2 P2=0x02;
52 2 Delay(500);
53 2 P0=ledtim[2];
54 2 P2=0x04;
55 2 Delay(500);
C51 COMPILER V7.07 TXT 11/02/2007 15:52:50 PAGE 2
56 2 P0=0x00;
57 2 P2=0x08;
58 2 Delay(500);
59 2 }
60 1 else{P0=ledtim[0];
61 2 P2=0x01;
62 2 Delay(500);
63 2 P0=ledtim[1];
64 2 P2=0x02;
65 2 Delay(500);
66 2 P0=ledtim[2];
67 2 P2=0x04;
68 2 Delay(500);
69 2 P0=ledtim[3];
70 2 P2=0x08;
71 2 Delay(500);}
72 1 }
73
74 void computer(unsigned int dt)
75 { char cledtim[4];
76 1 int dth,dtm,dtl;
77 1 dth=dt%10000;
78 1 cledtim[3]=Ledbuf[dth/1000];
79 1 dtm=dth%1000;
80 1 cledtim[2]=Ledbuf[dtm/100];
81 1 cledtim[2]|=0x80;
82 1 dtl=dtm%100;
83 1 cledtim[1]=Ledbuf[dtl/10];
84 1 cledtim[0]=Ledbuf[dtl%10];
85 1 display(cledtim);
86 1 }
87
88 static void ATStart(void)
89 {
90 1 sda=1;
91 1 cclk=0;
92 1 cclk=1;
93 1 sda=0;
94 1 cclk=0;
95 1 }
96
97 static void ATStop(void)
98 {
99 1 sda=0;
100 1 cclk=1;
101 1 sda=1;
102 1 }
103
104 void ATsWrite(unsigned char ch)
105 {
106 1 unsigned char i;
107 1 unsigned char temp;
108 1 ATdata=ch;
109 1 temp=ATdata;
110 1 for (i=0;i<8;i++)
111 1 { temp&=0x80;
112 2 if(temp==0x80)
113 2 {sda=1;}
114 2 else {sda=0;}
115 2 cclk=1;
116 2 cclk=0;
117 2 temp=ATdata;
C51 COMPILER V7.07 TXT 11/02/2007 15:52:50 PAGE 3
118 2 temp<<=1;
119 2 ATdata=temp;
120 2 }
121 1 cclk=1;
122 1 cclk=0;
123 1 }
124
125 unsigned char ATsRead(void)
126 {
127 1 unsigned char i;
128 1 unsigned char temp;
129 1 ATdata=0x00;
130 1 temp=0x00;
131 1 cclk=0;
132 1 for (i=0;i<8;i++)
133 1 {cclk=1;
134 2 if(sda==1){temp|=0x01;}
135 2 else {temp|=0x00;}
136 2 ATdata=temp;
137 2 temp<<=1;
138 2 cclk=0;
139 2 }
140 1 sda=0;
141 1 cclk=1;
142 1 cclk=0;
143 1 sda=1;
144 1 return ATdata;
145 1 }
146
147 unsigned int ATRead(unsigned char add,unsigned char cou)
148 {
149 1 unsigned int ret;
150 1 unsigned char rtim[2];
151 1 unsigned char i;
152 1
153 1 ATStart();
154 1 ATsWrite(0xA0);
155 1 ATsWrite(add);
156 1 ATStart();
157 1 ATsWrite(0xA1);
158 1 for(i=0;i<cou;i++){
159 2 rtim[i]=ATsRead();}
160 1 ATStop();
161 1
162 1 ret=rtim[1];
163 1 ret<<=8;
164 1 ret|=rtim[0];
165 1 return ret;
166 1 }
167
168 void ATWrite(unsigned char addr,unsigned int dat)
169 {
170 1 unsigned char subaddr;
171 1 unsigned char wdat,i;
172 1 unsigned int ATtemp,ATtemp1;
173 1 unsigned char tim[2];
174 1
175 1 ATtemp=dat;
176 1 ATtemp1=ATtemp;
177 1 tim[0]=ATtemp1;
178 1 ATtemp1&=0xff00;
179 1 ATtemp1>>=8;
C51 COMPILER V7.07 TXT 11/02/2007 15:52:50 PAGE 4
180 1 tim[1]=ATtemp1;
181 1 subaddr=addr;
182 1 for(i=0;i<2;i++){
183 2 wdat=tim[i];
184 2 ATStart();
185 2 ATsWrite(0xA0); //0xa1
186 2 ATsWrite(subaddr);
187 2
188 2 ATsWrite(wdat);
189 2 ATStop();
190 2 Delay(10000);
191 2 subaddr+=1;}
192 1
193 1 }
194
195 void DA()
196 { unsigned int i;
197 1 unsigned int temp;
198 1 unsigned int dad;
199 1 P33=1;
200 1 dad=0x0BB8;
201 1 temp=dad;
202 1 for(i=0;i<16;i++)
203 1 {P33=0;
204 2 aclk=0;
205 2 temp=temp&0x8000;
206 2 if (temp==0x8000)
207 2 {din=1;}
208 2 else{din=0;}
209 2 temp=dad;
210 2 temp=temp<<1;
211 2 aclk=1;
212 2 dad=temp;
213 2 }
214 1 Delay(500);
215 1 }
216
217 void main()
218 {unsigned char ad;
219 1 unsigned int da;
220 1 P1=0x00;
221 1 ad=0x00;
222 1 da=0x2592;
223 1 ATWrite(ad,da);
224 1 retdate=ATRead(ad,0x02);
225 1
226 1 DA();
227 1 for(;;)
228 1 {
229 2
230 2
231 2 computer(retdate);
232 2 }
233 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 485 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 25 8
C51 COMPILER V7.07 TXT 11/02/2007 15:52:50 PAGE 5
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 + -