📄 03.lst
字号:
C51 COMPILER V7.07 03 12/11/2008 18:28:31 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE 03
OBJECT MODULE PLACED IN 03.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE 03.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 // 工程名称: DS12CR887实时时钟
2 // 2008/12/10
3 // 功能描述: 万年历,农历和电子钟,具备拨报日期、时间、正点报时、秒表、闹钟等功能。
4 // 更多功拨报日期、时间、正点报时、秒表、闹钟等功能。进一步添加中...
5 //======================================================================
6 //对主函数调用的函数声明
7 //======================================================================
8 #include<reg52.h>
9 #define uint unsigned int
10 #define uchar unsigned char
11
12 char temp03,aa,bb,cc,dd,ee,ff,gg,hh;
13
14 char ge,shi,bai,qian,w2,shiwan,xin;
15 sbit dula=P2^0;
16 sbit wela=P2^1;
17 sbit wela02=P2^2;
18 sbit dian=P2^3;
19
20 sbit dscs=P1^0;
21 sbit dsas=P1^1;
22 sbit dsrw=P1^2;
23 sbit dsds=P1^3;
24
25
26 //======================================================================
27 //0-f字库
28 //======================================================================
29 uchar code table[]={
30 0xc0,0xf9,0xa4,0xb0,
31 0x99,0x92,0x82,0xf8,
32 0x80,0x90,0x88,0x83,
33 0xc6,0xa1,0x86,0x8e};
34
35 void displayxq(uchar xin);
36 void display12(uchar aa,uchar bb);
37 void display34(uchar cc,uchar dd);
38 void display56(uchar ee,uchar ff);
39 void display78(uchar gg,uchar hh);
40 void display(uchar shi,uchar ge);
41 void display01(uchar qian,uchar bai);
42 void display02(uchar shiwan,uchar w2);
43 void delay(uint z);
44
45 /*void write_ds(uchar add,uchar date)
46 {
47 dscs=0;
48 dsas=1;
49 dsds=1;
50 dsrw=1;
51 P0=add;
52 dsas=0;
53 dsrw=0;
54 P0=date;
55 dsrw=1;
C51 COMPILER V7.07 03 12/11/2008 18:28:31 PAGE 2
56 dsas=1;
57 dscs=1;
58
59
60 } */ //写芯片的时候才用write_ds
61
62 uchar read_ds(uchar add)
63 {
64 1 uchar ds_date;
65 1 dscs=0;
66 1 dsas=1;
67 1 dsds=1;
68 1 dsrw=1;
69 1 P0=add;
70 1 dsas=0;
71 1 dsds=0;
72 1 ds_date=P0;
73 1 dsds=1;
74 1 dscs=1;
75 1 dsas=1;
76 1 return ds_date;
77 1 }
78
79 //======================================================================
80 //显示初始化2008 年12 月10日 星期2 23:11:20//
81 //======================================================================
82
83 /*void init()
84 {
85 //write_ds(10,160);这几行为初始化芯片时钟
86 //write_ds(11,06);
87
88
89 //write_ds(0,00);//秒
90 //write_ds(2,28);//分
91 //write_ds(4,18);//时
92 //write_ds(6,03);//星期
93 //write_ds(7,10);//日
94 //write_ds(8,12);//月
95 //write_ds(9,0x08);//年后
96 //temp03=20;//2008的前两位100年+1不用,固定为20
97 }*/
98 //======================================================================
99 //主函数//
100 //======================================================================
101 void main()
102 {
103 1
104 1
105 1 //init();
106 1 temp03=20;
107 1 dian=0;
108 1 while(1)
109 1 {
110 2
111 2 display(shi,ge);
112 2 display01(qian,bai);
113 2 display02(shiwan,w2);
114 2 display78(gg,hh);
115 2 display56(ee,ff);
116 2 display34(cc,dd);
117 2 display12(aa,bb);
C51 COMPILER V7.07 03 12/11/2008 18:28:31 PAGE 3
118 2 displayxq(xin);
119 2
120 2 }
121 1
122 1 }
123 //======================================================================
124 //延时子程序//
125 //======================================================================
126 void delay(uint z)
127 {
128 1 uint x,y;
129 1 for(x=z;x>0;x--)
130 1 for(y=110;y>0;y--);
131 1 }
132 //======================================================================
133 //星期显示子程序//
134 //======================================================================
135 void displayxq(uchar xin)
136 {
137 1
138 1 xin=read_ds(6)%10;
139 1
140 1
141 1 wela02=1;
142 1 P0=0x00;
143 1 wela02=0;
144 1
145 1 dula=1;
146 1 P0=table[xin];
147 1 dula=0;
148 1
149 1 wela=1;
150 1 P0=0x40;
151 1 delay(1);
152 1 wela=0;
153 1
154 1
155 1 }
156 //======================================================================
157 //秒显示子程序//
158 //======================================================================
159 void display(uchar shi,uchar ge)
160 {
161 1
162 1 ge=read_ds(0)%10;
163 1 shi=read_ds(0)/10;
164 1
165 1 wela02=1;
166 1 P0=0x00;
167 1 wela02=0;
168 1
169 1 dula=1;
170 1 P0=table[shi];
171 1 dula=0;
172 1
173 1 wela=1;
174 1 P0=0x10;
175 1 delay(1);
176 1 wela=0;
177 1
178 1 dula=1;
179 1 P0=table[ge];
C51 COMPILER V7.07 03 12/11/2008 18:28:31 PAGE 4
180 1 dula=0;
181 1
182 1 wela=1;
183 1 P0=0x20;
184 1 delay(1);
185 1 wela=0;
186 1 }
187 //======================================================================
188 //分显示子程序//
189 //======================================================================
190 void display01(uchar qian,uchar bai)
191 {
192 1 qian=read_ds(2)/10;
193 1 bai=read_ds(2)%10;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -