📄 set_time.lst
字号:
C51 COMPILER V7.06 SET_TIME 05/30/2007 15:57:59 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE SET_TIME
OBJECT MODULE PLACED IN C:\DOCUME~1\LAI\桌面\学姐毕~1\SET_TIME.OBJ
COMPILER INVOKED BY: D:\常用软件\keil\C51\BIN\C51.EXE C:\DOCUME~1\LAI\桌面\学姐毕~1\SET_TIME.C DB SB OE
stmt level source
1 #include<reg52.h>
2 #define uchar unsigned char
3
4
5 /**************************************************************/
6 /*MAX7219*********************************************************/
7 /******************************************************************/
8 sbit CLK=P1^0;
9 sbit DIN=P1^1;
10 sbit LOAD=P1^2;
11 /**************************************************************/
12 void send(unsigned char add,unsigned char dat);
13 void Initial_7219(void);
14 /**************************************************************/
15 /***********************************************************/
16 void set_minite();
17 void set_hour();
18 uchar add_hour(uchar hour);
19 uchar add_minite(uchar minite);
20 uchar minus_hour(uchar hour);
21 uchar minus_minite(uchar minite);
22 void delay1(uchar time);
23 void set_time();
24 sbit s1=P3^4;
25 sbit s2=P3^5;
26 sbit s3=P3^6;
27 sbit s4=P3^7;
28 #define keycode P3 & 0x0f0
29 /************************************************************/
30 /*****************************************************************/
31 void Initial_7219(void)
32 {
33 1 send(0x0c,0x01);//Shut down
34 1 send(0x0b,0x07);//Scan Limit
35 1 send(0x0a,0x0fa);//Intensity
36 1 send(0x09,0x0ff);//Decode Mode
37 1 }
38 /**************************************************************/
39 void send(unsigned char add,unsigned char dat)//Send 16Bytes
40 {
41 1 unsigned char Databuf,i,j;
42 1 LOAD=0;
43 1 i=0;
44 1 while(i<16)
45 1 {
46 2 if(i<8)
47 2 {
48 3 Databuf=add;
49 3 }
50 2 else
51 2 {
52 3 Databuf=dat;
53 3 }
54 2 for(j=8;j>=1;j--)
55 2 {
C51 COMPILER V7.06 SET_TIME 05/30/2007 15:57:59 PAGE 2
56 3 DIN=Databuf&0x80;
57 3 Databuf=Databuf<<1;
58 3 CLK=1;
59 3 CLK=0;
60 3 }
61 2 i=i+8;
62 2 }
63 1 LOAD=1;
64 1 }
65 /*************************************************************/
66 /***********************MAX7219*********************************/
67 /***************************************************************/
68 /***************************************************************/
69
70 //实时时钟芯片DS1302 C51源程序
71 /****************************************************************
72
73 公司名称:
74 模块名称:DS1302.c
75 功 能:实时时钟模块 时钟芯片型号:DS1302
76 说 明:
77 程序设计:zhaojunjie
78 设计时间:2002.03.02
79 版 本 号: 20020302
80 *********************************************************************/
81 sbit SCL = P3^0;// DS1302 Serial-Clock Input pin 7
82 sbit SDA = P3^1;// DS1302 Serial-Data Input pin 6
83 sbit RST = P3^2;// DS1302 Chip-Seclet Input pin 5
84 code uchar time_data[60]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,
85 0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x20,
86 0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x30,
87 0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x40,
88 0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x50,
89 0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59};
90
91 #define DS1302_WP 0x8E
92 #define DS1302_RESET RST=0;SCL=0;RST=1
93 #define DS1302_WP_ENABLE Write_Ds1302(DS1302_WP,0X00)
94 #define DS1302_WP_DISENABLE Write_Ds1302(DS1302_WP,0x80)
95 unsigned char set_rtc_code[3]={0x00,0x00,0x00};
96 code unsigned char write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};
97 code unsigned char read_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};
98 unsigned char read_rtc_code[3];
99
100 void Write_Ds1302_byte(unsigned char temp);
101 void Write_Ds1302( unsigned char address,unsigned char dat );
102 unsigned char Read_Ds1302 ( unsigned char address );
103 void Read_RTC(void);
104 void Set_RTC(void);
105
106 /****************************************************************************/
107 /****************************************************************************/
108 void Write_Ds1302_Byte(unsigned char temp)
109 {
110 1 unsigned char i;
111 1 for (i=0;i<8;i++)
112 1 {
113 2 SCL=0;
114 2 SDA=temp&0x01;
115 2 temp>>=1;
116 2 SCL=1;
117 2 }
C51 COMPILER V7.06 SET_TIME 05/30/2007 15:57:59 PAGE 3
118 1 }
119 /****************************************************************************/
120 void Write_Ds1302( unsigned char address,unsigned char dat )
121 {
122 1 DS1302_RESET;
123 1 Write_Ds1302_Byte(address);
124 1 Write_Ds1302_Byte(dat);
125 1 RST=0;
126 1 }
127 /****************************************************************************/
128 unsigned char Read_Ds1302 ( unsigned char address )
129 {
130 1 unsigned char i,temp=0x00,temp_temp;
131 1 DS1302_RESET;
132 1 Write_Ds1302_Byte(address);
133 1 for (i=0;i<8;i++)
134 1 {
135 2 if(SDA)
136 2 temp|=0x80;
137 2 SCL=0;
138 2 temp>>=1;
139 2 SCL=1;
140 2 }
141 1 RST=0;
142 1 temp_temp=temp/16;
143 1 temp=temp%16;
144 1 temp=temp+temp_temp*10;
145 1 return (temp);
146 1 }
147 /****************************************************************************/
148 /****************************************************************************/
149 void Read_RTC(void)
150 {
151 1 unsigned char i,*p;
152 1 p=read_rtc_address;
153 1 for(i=0;i<3;i++)
154 1 {
155 2 read_rtc_code[i]=Read_Ds1302(*p);
156 2 p++;
157 2 }
158 1 }
159 /***********************************************************************/
160 /***********************************************************************/
161 void Set_RTC(void)
162 {
163 1 unsigned char i,*p;
164 1 p=write_rtc_address;
165 1 for(i=0;i<3;i++)
166 1 {
167 2 Write_Ds1302(*p,set_rtc_code[i]);
168 2 p++;
169 2 }
170 1 }
171 /****************************************************************************/
172 /****************************************************************************/
173 /****************************************************************************/
174 /****************************************************************************/
175
176
177
178 /*****************************************************************/
179 /* 时间设置set_time******************************************************/
C51 COMPILER V7.06 SET_TIME 05/30/2007 15:57:59 PAGE 4
180 void set_minite()
181 {uchar hour,minite;
182 1 uchar hour_h,hour_l,minite_h,minite_l;
183 1
184 1 while(s4==1)
185 1 {send(0x08,0x0f);//5---8灭
186 2 send(0x07,0x0f);
187 2 send(0x06,0x0f);
188 2 send(0x05,0x0f);
189 2 Read_RTC();
190 2 hour=read_rtc_code[2];//读DS1302
191 2 minite=read_rtc_code[1];
192 2 hour_h=hour/10;
193 2 hour_l=hour%10;
194 2 send(0x01,hour_h);//显示小时
195 2 send(0x02,hour_l);
196 2 minite_h=minite/10;
197 2 minite_l=minite%10;
198 2 send(0x03,minite_h);//显示分钟
199 2 send(0x04,minite_l);
200 2
201 2 delay1(450);
202 2 send(0x03,0x0f);//显示分钟灭
203 2 send(0x04,0x0f);
204 2 delay1(450);
205 2
206 2 if(s3==0)//3键
207 2 {
208 3 set_hour();
209 3 break;
210 3 }
211 2 else
212 2 if(s1==0)
213 2 {
214 3 minite=add_minite(minite);//时间加一
215 3 set_rtc_code[1]=minite; //
216 3 Set_RTC();
217 3
218 3 }
219 2 else
220 2 if(s2==0)
221 2 {
222 3 minite=minus_minite(minite);//时间减一
223 3 set_rtc_code[1]=minite; //
224 3 Set_RTC();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -