📄 万年历.lst
字号:
C51 COMPILER V7.06 万年繽 01/18/2009 20:08:38 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 万年繽
OBJECT MODULE PLACED IN 万年历.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 万年历.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<reg52.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4 uchar code table[]="clock ME-400-A";
5 uchar code table1[]=" 00:00:00 ";
6 uchar clk_time[7]; //秒,分,时寄存器数组
7 sbit T_RST=P2^2;//ds1302-5
8 sbit T_IO=P2^3;//ds1302-6
9 sbit T_CLK=P2^4;//ds1302-7
10 sbit en=P2^5;
11 sbit rw=P2^6;
12 sbit rs=P2^7;
13 sbit led=P1^0;
14 sbit dula=P1^1;
15 sbit wela=P1^2;
16
17 sbit ACC0=ACC^0;
18 sbit ACC7=ACC^7;
19 uchar num,clock_ss,clock_sg,clock_fs,clock_fg,
20 clock_ms,clock_mg,
21 taday_s,taday_g,
22 yue_s,yue_g,
23 xq,
24 year_s,year_g;
25 /******************DS1302:写入操作(上升沿)*********************/
26 void write_byte(uchar da)
27 {
28 1 uchar i;
29 1 ACC=da;
30 1 led=0;
31 1 for(i=8;i>0;i--)
32 1 {
33 2 T_IO=ACC0;
34 2 T_CLK=0;
35 2 T_CLK=1;
36 2 ACC=ACC>>1;
37 2 }
38 1 }
39
40 /******************DS1302:读取操作(下降沿)*****************/
41 uchar read_byte(void)
42 {
43 1 uchar i;led=0;
44 1 for(i=0;i<8;i++)
45 1 {
46 2 ACC=ACC>>1;
47 2 T_CLK = 1;
48 2 T_CLK = 0;
49 2 ACC7 = T_IO;
50 2 }
51 1 return(ACC);
52 1
53 1 }
54
55 /******************DS1302:写入数据(先送地址,再写数据)***************************/
C51 COMPILER V7.06 万年繽 01/18/2009 20:08:38 PAGE 2
56 void write_1302(uchar addr,uchar da)
57 {
58 1 T_RST=0; //停止工作
59 1 T_CLK=0;
60 1 T_RST=1; //重新工作
61 1 write_byte(addr); //写入地址
62 1
63 1 write_byte(da);
64 1 T_RST=0;
65 1 T_CLK=1;
66 1 }
67
68 /******************DS1302:读取数据(先送地址,再读数据)**************************/
69 uchar read_1302(uchar addr)
70 {
71 1 uchar temp;
72 1 T_RST=0; //停止工作
73 1 T_CLK=0;
74 1 T_RST=1; //重新工作
75 1 write_byte(addr); //写入地址
76 1 temp=read_byte();
77 1 T_RST=0;
78 1 T_CLK=1; //停止工作
79 1 return(temp);
80 1 }
81
82
83
84
85
86 /***********************延时程序=a*1ms**************************************/
87 void delay(uint z)
88 {
89 1 uint x,y;
90 1 for(x=z;x>0;x--)
91 1 for(y=110;y>0;y--);
92 1 }
93 void write_com(uchar com)
94 { led=0;
95 1 rs=0;
96 1 P0=com;
97 1 delay(5);
98 1 en=1;
99 1 delay(5);
100 1 en=0;
101 1 }
102
103 void write_data(uchar date)
104 { led=0;
105 1 rs=1;
106 1 P0=date;
107 1 delay(5);
108 1 en=1;
109 1 delay(5);
110 1 en=0;
111 1 }
112 void init()
113 { P0=0xff;
114 1 delay(5);
115 1 led=1;
116 1 P0=0xff;
117 1 led=0;
C51 COMPILER V7.06 万年繽 01/18/2009 20:08:38 PAGE 3
118 1 dula=0;
119 1 wela=1;
120 1 delay(5);
121 1 wela=0;//关ME-400开发板数码管
122 1 rw=0;
123 1 en=0;
124 1 write_com(0x38);//设置液晶
125 1 write_com(0x0c);//设光标等
126 1 write_com(0x06);//写一个字符地址指针加1且光标加1
127 1 write_com(0x01);//清屏
128 1 write_com(0x80);//设置地址指针
129 1 }
130 void display()
131 { clock_ms=clk_time[0]/ 16; clock_mg=clk_time[0]%16;
132 1
133 1 clock_fs=clk_time[1]/ 16; clock_fg=clk_time[1]%16;
134 1
135 1 clock_ss=clk_time[2]/ 16; clock_sg=clk_time[2]%16;
136 1
137 1 taday_s=clk_time[3]/ 16; taday_g=clk_time[3]%16;
138 1
139 1 yue_s=clk_time[4]/ 16; yue_g=clk_time[4]%16;
140 1
141 1 xq=clk_time[5]%16;
142 1 year_s=clk_time[6]/ 16; year_g=clk_time[6]%16;
143 1
144 1 write_com(0x80);
145 1 write_data(0x30+year_s);
146 1 write_data(0x30+year_g);
147 1 write_data('/');
148 1 write_data(0x30+yue_s);
149 1 write_data(0x30+yue_g);
150 1 write_data('/');
151 1 write_data(0x30+taday_s);
152 1 write_data(0x30+taday_g);
153 1 write_data('/');
154 1 write_data(0x30+xq);
155 1 write_com(0x80+0x44);
156 1 write_data(0x30+clock_ss);
157 1 write_com(0x80+0x45);
158 1 write_data(0x30+clock_sg);
159 1 write_com(0x80+0x47);
160 1 write_data(0x30+clock_fs);
161 1 write_com(0x80+0x48);
162 1 write_data(0x30+clock_fg);
163 1 write_com(0x80+0x4a);
164 1 write_data(0x30+clock_ms);
165 1 write_com(0x80+0x4b);
166 1 write_data(0x30+clock_mg);
167 1 }
168 void main()
169 {
170 1 uchar temp=0x80;
171 1 uchar i;
172 1 init();
173 1 /* for(num=0;num<14;num++)
174 1 {
175 1 write_data(table[num]);
176 1 delay(20);
177 1 }*/
178 1
179 1 write_com(0x80+0x40);
C51 COMPILER V7.06 万年繽 01/18/2009 20:08:38 PAGE 4
180 1 for(num=0;num<15;num++)
181 1 {
182 2 write_data(table1[num]);
183 2 delay(20);
184 2 }
185 1 /*for(num=0;num<16;num++)
186 1 {
187 1 write_com(0x18);
188 1 delay(20);
189 1 }*/
190 1 while(1)
191 1 {
192 2 display();
193 2
194 2 temp=0x81;
195 2 for(i=0;i<7;i++)
196 2 {
197 3 clk_time[i]=read_1302(temp);
198 3 temp+=2;
199 3 }
200 2
201 2 }
202 1 }
203
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 486 ----
CONSTANT SIZE = 32 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 21 ----
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 + -