?? display.lst
字號(hào):
C51 COMPILER V7.09 DISPLAY 05/07/2007 16:00:46 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE DISPLAY
OBJECT MODULE PLACED IN display.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE display.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /***********************************
2 *********包含庫(kù)函數(shù)*****************
3 ***********************************/
4 #include <reg51.h>
5 #include <stdio.h>
6 #include <absacc.h>
7 #include <math.h>
8 #include <string.h>
9 #include <ctype.h>
10 #include <stdlib.h>
11
12 /************************************
13 ********宏定義***********************
14 ***********************************/
15 #define uchar unsigned char
16 #define uint unsigned int
17 /***********************************
18 ********P2^4-->/CS******************
19 ***********************************/
20 #define Adr_second XBYTE[0xef00]
21 #define Adr_second_alrm XBYTE[0xef01]
22 #define Adr_min XBYTE[0xef02]
23 #define Adr_min_alrm XBYTE[0xef03]
24 #define Adr_hour XBYTE[0xef04]
25 #define Adr_hour_alrm XBYTE[0xef05]
26 #define Adr_weekday XBYTE[0xef06]
27 #define Adr_day XBYTE[0xef07]
28 #define Adr_month XBYTE[0xef08]
29 #define Adr_year XBYTE[0xef09]
30 #define Adr_A XBYTE[0xef0a]
31 #define Adr_B XBYTE[0xef0b]
32 #define Adr_C XBYTE[0xef0c]
33 #define Adr_D XBYTE[0xef0d]
34 #define Segment XBYTE[0X7FFF] //顯示段地址
35 #define Discode XBYTE[0XBFFF] //顯示位地址
36
37 /***************************************
38 ************變量定義********************
39 ****************************************/
40 uchar second,min,hour,day,month,year,weekday;
41 uchar code duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //顯示段碼
42
43
44 /*************************************
45 **********設(shè)置時(shí)間********************
46 *************************************/
47 void setup_DS12887()
48 {
49 1 uchar i;
50 1 i=Adr_D;//使片內(nèi)寄存器和RAM數(shù)據(jù)有效
51 1 Adr_A=0x70;//UIP=0;
52 1 Adr_B=0xa2; //SET=1-->禁止更新,24/12=1-->24小時(shí)進(jìn)制
53 1 Adr_second=second;
54 1 Adr_second_alrm=0xff;
55 1 Adr_min=min;
C51 COMPILER V7.09 DISPLAY 05/07/2007 16:00:46 PAGE 2
56 1 Adr_min_alrm=0xff;
57 1 Adr_hour=hour;
58 1 Adr_hour_alrm=0xff;
59 1 Adr_weekday=weekday;
60 1 Adr_day=day;
61 1 Adr_month=month;
62 1 Adr_year=year;
63 1 Adr_B=0x22;
64 1 Adr_A=0x20;
65 1 i=Adr_C; //消除已有的中斷標(biāo)志
66 1 }
67 /***************************************
68 *********讀取時(shí)間***********************
69 ***************************************/
70 void get_time_DS12887(void)
71 {
72 1 uchar i;
73 1 do(i=Adr_A);
74 1 while((i&0x80)==0x80);
75 1 second=Adr_second;
76 1 min=Adr_min;
77 1 hour=Adr_hour;
78 1 weekday=Adr_weekday;
79 1 day=Adr_day;
80 1 month=Adr_month;
81 1 year=Adr_year;
82 1 }
83
84 /*************************************
85 ********延時(shí)子程序,12MHZ*************
86 *************************************/
87 void delay(uchar k) //延時(shí)1MS
88 { uchar i;
89 1 while(k--)
90 1 { for(i=0;i<125;i++)
91 2 {;}
92 2 }
93 1 }
94 /***********************************
95 ********顯示子程序0******************
96 ***********************************/
97 void display0(void) //顯示
98 { Discode=0xfe;
99 1 Segment=duanma[(hour/10)|0x0f];
100 1 delay(5);
101 1
102 1 Discode=0xfd;
103 1 Segment=duanma[(hour%10)|0x0f];
104 1 delay(5);
105 1
106 1 Discode=0xfb;
107 1 Segment=duanma[(min/10)|0x0f];
108 1 delay(5);
109 1
110 1 Discode=0xf7;
111 1 Segment=duanma[(min%10)|0x0f];
112 1 delay(5);
113 1
114 1 Discode=0xef;
115 1 Segment=duanma[(second/10)|0x0f];
116 1 delay(5);
117 1
C51 COMPILER V7.09 DISPLAY 05/07/2007 16:00:46 PAGE 3
118 1 Discode=0xdf;
119 1 Segment=duanma[(second%10)|0x0f];
120 1 delay(5);
121 1 }
122
123 /***********************************
124 ********顯示子程序1******************
125 ***********************************/
126 void display1(void) //顯示
127 { Discode=0xfe;
128 1 Segment=duanma[(year/10)|0x0f];
129 1 delay(5);
130 1
131 1 Discode=0xfd;
132 1 Segment=duanma[(year%10)|0x0f];
133 1 delay(5);
134 1
135 1 Discode=0xfb;
136 1 Segment=duanma[(month/10)|0x0f];
137 1 delay(5);
138 1
139 1 Discode=0xf7;
140 1 Segment=duanma[(month%10)|0x0f];
141 1 delay(5);
142 1
143 1 Discode=0xef;
144 1 Segment=duanma[(day/10)|0x0f];
145 1 delay(5);
146 1
147 1 Discode=0xdf;
148 1 Segment=duanma[(day%10)|0x0f];
149 1 delay(5);
150 1 }
151
152 /***********************************
153 **********DS12887初始化*************
154 ***********************************/
155 void start_DS12887(void)
156 {
157 1 uchar i;
158 1 i=Adr_D;//使片內(nèi)寄存器和RAM數(shù)據(jù)有效
159 1 Adr_A=0x70;//UIP=0;
160 1 Adr_B=0xa2; //SET=1-->禁止更新,24/12=1-->24小時(shí)進(jìn)制
161 1 Adr_second_alrm=0xff;
162 1 Adr_min_alrm=0xff;
163 1 Adr_hour_alrm=0xff;
164 1 Adr_B=0x22;
165 1 Adr_A=0x20;
166 1 i=Adr_C; //消除已有的中斷標(biāo)志
167 1 }
168
169
170 void mian(void)
171 {
172 1 delay(500);
173 1 start_DS12887();
174 1 while(1)
175 1 {
176 2 get_time_DS12887();
177 2 display0();
178 2 }
179 1 }
C51 COMPILER V7.09 DISPLAY 05/07/2007 16:00:46 PAGE 4
180
181
182
183
184
185
186
187
188
189
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 440 ----
CONSTANT SIZE = 10 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -