📄 sjxs.lst
字号:
C51 COMPILER V8.02 SJXS 10/22/2008 17:23:59 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE SJXS
OBJECT MODULE PLACED IN SJXS.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE SJXS.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <AT89X51.h>
2 #define Data P0
3
4 sbit RS=P1^7;
5 sbit RW=P1^6;
6 sbit E=P2^6;
7
8 void delay(unsigned int k)
9 {
10 1 unsigned int i,j;
11 1 for(i=k;i>0;i--)
12 1 for(j=50;j>0;j--) ;
13 1 }
14
15 unsigned char ReadStatus(void)
16 {
17 1 Data=0xFF;
18 1 RS=0;
19 1 RW=1;
20 1 E=1;
21 1 while(Data&0x80);
22 1 return(Data);
23 1 delay(2);
24 1 E = 0;
25 1 }
26
27 void wr_com(unsigned char com)
28 {
29 1 ReadStatus();
30 1 Data=com;
31 1 RS=0;
32 1 RW=0;
33 1 E=1;
34 1 delay(2);
35 1 E = 0;
36 1 }
37
38 void wr_dat(unsigned char dat)
39 {
40 1 ReadStatus();
41 1 Data=dat;
42 1 RS=1;
43 1 RW=0;
44 1 E=1;
45 1 delay(2);
46 1 E=0;
47 1 }
48
49 void LCD_Init(void)
50 {
51 1 Data=0x0;
52 1 wr_com(0x38);
53 1 delay(5);
54 1 wr_com(0x38);
55 1 delay(5);
C51 COMPILER V8.02 SJXS 10/22/2008 17:23:59 PAGE 2
56 1 wr_com(0x38);
57 1 delay(5);
58 1 wr_com(0x38);
59 1 wr_com(0x08);
60 1 wr_com(0x01);
61 1 wr_com(0x06);
62 1 wr_com(0x0C);
63 1 }
64
65 void GotoXY(unsigned char x,unsigned char y)
66 {
67 1 x&=0x01;
68 1 y&=0x0F;
69 1 y|=(x==0)?0x80:0xC0;
70 1 wr_com(y);
71 1 do{
72 2 y=ReadStatus();
73 2 }while((y&0x80)==0x80);
74 1 }
75
76 void disp(unsigned char x,unsigned char y,unsigned char _char)
77 {
78 1 GotoXY(x,y);
79 1 wr_dat(_char);
80 1 }
81
82 /***********************************************************************************/
83
84 unsigned char second=55,minute=58,hour=23,day=29,month=11,year=07;
85 unsigned char n_50m_second;
86 unsigned char days_of_month;
87
88 unsigned char calculate_days(void)
89 {
90 1 unsigned int temp;
91 1 switch (month)
92 1 {
93 2 case 1:
94 2 case 3:
95 2 case 5:
96 2 case 7:
97 2 case 8:
98 2 case 10:
99 2 case 12:
100 2 return 31;
101 2 break;
102 2 case 4:
103 2 case 6:
104 2 case 9:
105 2 case 11:
106 2 return 30;
107 2 break;
108 2 case 2:
109 2 temp=2000+year;
110 2 if((((temp%4)==0)&&((temp%100)!=0))||((temp%400)==0))
111 2 {
112 3 return 29;
113 3 }
114 2 else
115 2 {
116 3 return 28;
117 3 }
C51 COMPILER V8.02 SJXS 10/22/2008 17:23:59 PAGE 3
118 2 }
119 1 }
120
121 void timer0_isr(void) interrupt 1 using 1
122 {
123 1 TL0=0xB0;
124 1 TH0=0x3C;
125 1 n_50m_second++;
126 1 if(n_50m_second>=20)
127 1 {
128 2 n_50m_second=0;
129 2 second++;
130 2 if(second==60)
131 2 {
132 3 second=0;
133 3 minute++;
134 3 if(minute==60)
135 3 {
136 4 minute=0;
137 4 hour++;
138 4 if(hour==24)
139 4 {
140 5 hour=0;
141 5 day++;
142 5 days_of_month=calculate_days();
143 5 if(day>days_of_month)
144 5 {
145 6 day=1;
146 6 month++;
147 6 if(month>12)
148 6 {
149 7 month=1;
150 7 year++;
151 7 if(year>=100)
152 7 {
153 8 year=0;
154 8 }
155 7 }
156 6 }
157 5 }
158 4 }
159 3 }
160 2 }
161 1 }
162
163 void disp_timer(void)
164 { disp(0,4,hour/10+48);
165 1 disp(0,5,hour%10+48);
166 1 disp(0,6,':');
167 1 disp(0,7,minute/10+48);
168 1 disp(0,8,minute%10+48);
169 1 disp(0,9,':');
170 1 disp(0,0xA,second/10+48);
171 1 disp(0,0xB,second%10+48);
172 1 disp(1,3,'2');
173 1 disp(1,4,'0');
174 1 disp(1,5,year/10+48);
175 1 disp(1,6,year%10+48);
176 1 disp(1,7,'-');
177 1 disp(1,8,month/10+48);
178 1 disp(1,9,month%10+48);
179 1 disp(1,0xA,'-');
C51 COMPILER V8.02 SJXS 10/22/2008 17:23:59 PAGE 4
180 1 disp(1,0xB,day/10+48);
181 1 disp(1,0xC,day%10+48);
182 1 }
183
184
185 void main(void)
186 {
187 1 TMOD=0x11;
188 1 ET0=1;
189 1 TR0=1;
190 1 EA=1;
191 1 LCD_Init();
192 1 while(1)
193 1 {
194 2 delay(100);
195 2 disp_timer();
196 2 }
197 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 676 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 ----
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 + -