📄 main.lst
字号:
C51 COMPILER V6.12 MAIN 11/29/2007 10:36:15 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN F:\YUN\安全牌\安全牌C\MAIN.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE F:\YUN\安全牌\安全牌C\MAIN.C DB SB OE
stmt level source
1
2 #include "fun.h"
3 #include "var.h"
4 void delay(uint i)
5 {while(i!=0)i--;
6 1 }
7
8 void kmg(void)
9 {KMG=0;
10 1 delay(1);
11 1 KMG=1;
12 1 }
13
14 void timejudge(void)
15 {uchar i;
16 1 if(binary_realtime.year>99)binary_realtime.year=0;
17 1 if(binary_realtime.month>12)binary_realtime.month=12;
18 1 else if(binary_realtime.month==0)binary_realtime.month=1;
19 1 if(binary_realtime.year%4)i=0;
20 1 else i=1;
21 1 if(binary_realtime.day>daytab[i][binary_realtime.month])
22 1 binary_realtime.day=daytab[i][binary_realtime.month];
23 1 else if(binary_realtime.day==0)binary_realtime.day=1;
24 1 if(binary_realtime.hour>23)binary_realtime.hour=23;
25 1 if(binary_realtime.minute>59)binary_realtime.minute=59;
26 1 if(binary_realtime.second>59)binary_realtime.second=59;
27 1 }
28
29 void datejudge(void)
30 {uchar i;
31 1 if(binary_24wcxx.year>99)binary_24wcxx.year=0;
32 1 if(binary_24wcxx.month>12)binary_24wcxx.month=12;
33 1 else if(binary_24wcxx.month==0)binary_24wcxx.month=1;
34 1 if(binary_24wcxx.year%4)i=0;
35 1 else i=1;
36 1 if(binary_24wcxx.day>daytab[i][binary_24wcxx.month])
37 1 binary_24wcxx.day=daytab[i][binary_24wcxx.month];
38 1 else if(binary_24wcxx.day==0)binary_24wcxx.day=1;
39 1 }
40
41
42 /***********************日期计算及校验************************/
43 //计算出昨天的日期
44 void yesterday(struct binary *p)
45 {uchar i;
46 1 //day>1时
47 1 if(--p->day)return;
48 1 //day=1,month>1时
49 1 if(--p->month)
50 1 {if(p->year%4)i=0;
51 2 else i=1;
52 2 p->day=daytab[i][p->month];
53 2 return;
54 2 }
55 1 //day=1,month=1时
C51 COMPILER V6.12 MAIN 11/29/2007 10:36:15 PAGE 2
56 1 p->day =31;
57 1 p->month=12;
58 1 if(p->year--)return; //year>0时
59 1 p->year =99; //year=0时
60 1 }
61
62 //累计天数校正
63 void totaldays(struct binary *p1,struct binary *p2)
64 {uchar i,j;
65 1 ulong days1,days2;
66 1 //p1存储中的日期,换算为天数days1
67 1 if(p1->year!=0)
68 1 days1=(ulong)p1->year*365+(p1->year-1)/4+1;
69 1 for(i=1;i<p1->month;i++)
70 1 {if(p1->year%4)j=0;
71 2 else j=1;
72 2 days1+=daytab[j][i];}
73 1 days1+=p1->day;
74 1 //p2实际日期,换算为天数days2
75 1 if(p2->year!=0)
76 1 days2=(ulong)p2->year*365+(p2->year-1)/4+1;
77 1 for(i=1;i<p2->month;i++)
78 1 {if(p2->year%4)j=0;
79 2 else j=1;
80 2 days2+=daytab[j][i];}
81 1 days2+=p2->day;
82 1 //days1,days2两者之差即为累计安全天数
83 1 if(days1<days2)
84 1 {p1->days+=(days2-days1);}
85 1 if(days1>days2)
86 1 {if(p1->days>(days1-days2))
87 2 p1->days-=(days1-days2);
88 2 else p1->days=0;
89 2 }
90 1 }
91
92 /*下一天*/
93 void nextday(uchar hpa)
94 {struct binary binary_buffer;
95 1 binary_buffer.year =binary_realtime.year;
96 1 binary_buffer.month=binary_realtime.month;
97 1 binary_buffer.day =binary_realtime.day;
98 1 if(binary_realtime.hour<18)yesterday(&binary_buffer);
99 1 if(binary_24wcxx.day !=binary_buffer.day ||
100 1 binary_24wcxx.month!=binary_buffer.month||
101 1 binary_24wcxx.year !=binary_buffer.year)
102 1 {totaldays(&binary_24wcxx,&binary_buffer);
103 2 //只有days的数值是正确的
104 2 //把昨天或今天的日期赋值给bcd_24wcxx
105 2 binary_24wcxx.day =binary_buffer.day;
106 2 binary_24wcxx.month=binary_buffer.month;
107 2 binary_24wcxx.year =binary_buffer.year;
108 2 wr_24wcxx(addrtab[hpa]);
109 2 }
110 1 }
111
112 //目标日期加100,目标天数加100
113 void adddays(struct binary *p)
114 {uchar i,j;
115 1 uchar num=100;
116 1 if(p->year%4)j=0;
117 1 else j=1;
C51 COMPILER V6.12 MAIN 11/29/2007 10:36:15 PAGE 3
118 1 for(i=(daytab[j][p->month])-(p->day)+1;num>=i;i=daytab[j][p->month])
119 1 {p->day=1;
120 2 num-=i;
121 2 if(++p->month>12)
122 2 {p->month=1;p->year++;
123 3 if(p->year%4)j=0;
124 3 else j=1;
125 3 }
126 2 }
127 1 p->day+=num;
128 1 p->days+=100;
129 1 }
130
131 /*下100天*/
132 void nextdays(uchar hpa)
133 {struct binary binary_buffer;
134 1 //取当前日期
135 1 binary_buffer.year =binary_realtime.year;
136 1 binary_buffer.month=binary_realtime.month;
137 1 binary_buffer.day =binary_realtime.day;
138 1 if(binary_realtime.hour<18)yesterday(&binary_buffer);
139 1 //目标日期计算
140 1 while((binary_buffer.year > binary_24wcxx.year)||
141 1 (binary_buffer.year ==binary_24wcxx.year &&
142 1 binary_buffer.month>binary_24wcxx.month)||
143 1 (binary_buffer.year ==binary_24wcxx.year &&
144 1 binary_buffer.month==binary_24wcxx.month&&
145 1 binary_buffer.day >=binary_24wcxx.day))
146 1 {adddays(&binary_24wcxx);
147 2 wr_24wcxx(addrtab[hpa]);
148 2 }
149 1 }
150 /**********************数据转换********************************/
151 void bcd1_binary_time(void)
152 {//年、月、日
153 1 binary_realtime.year =(bcd1_realtime.year >>4)*10+(bcd1_realtime.year &0x0f);
154 1 binary_realtime.month=(bcd1_realtime.month>>4)*10+(bcd1_realtime.month&0x0f);
155 1 binary_realtime.day =(bcd1_realtime.day >>4)*10+(bcd1_realtime.day &0x0f);
156 1 //时,分,秒
157 1 binary_realtime.hour =(bcd1_realtime.hour >>4)*10+(bcd1_realtime.hour &0x0f);
158 1 binary_realtime.minute=(bcd1_realtime.minute>>4)*10+(bcd1_realtime.minute&0x0f);
159 1 binary_realtime.second=(bcd1_realtime.second>>4)*10+(bcd1_realtime.second&0x0f);
160 1 }
161
162 void binary_bcd1_time(void)
163 {//年、月、日
164 1 bcd1_realtime.year =(binary_realtime.year /10<<4)|(binary_realtime.year %10);
165 1 bcd1_realtime.month=(binary_realtime.month/10<<4)|(binary_realtime.month%10);
166 1 bcd1_realtime.day =(binary_realtime.day /10<<4)|(binary_realtime.day %10);
167 1 //时、分、秒
168 1 bcd1_realtime.hour =(binary_realtime.hour /10<<4)|(binary_realtime.hour %10);
169 1 bcd1_realtime.minute=(binary_realtime.minute/10<<4)|(binary_realtime.minute%10);
170 1 bcd1_realtime.second=(binary_realtime.second/10<<4)|(binary_realtime.second%10);
171 1 }
172
173 void binary_bcd2_time(void)
174 {//年、月、日
175 1 bcd2_realtime.yearh =(binary_realtime.year /10)&0x0f;
176 1 bcd2_realtime.yearl =(binary_realtime.year %10)&0x0f;
177 1 bcd2_realtime.monthh=(binary_realtime.month/10)&0x0f;
178 1 bcd2_realtime.monthl=(binary_realtime.month%10)&0x0f;
179 1 bcd2_realtime.dayh =(binary_realtime.day /10)&0x0f;
C51 COMPILER V6.12 MAIN 11/29/2007 10:36:15 PAGE 4
180 1 bcd2_realtime.dayl =(binary_realtime.day %10)&0x0f;
181 1 //时、分、秒
182 1 bcd2_realtime.hourh =(binary_realtime.hour /10)&0x0f;
183 1 bcd2_realtime.hourl =(binary_realtime.hour %10)&0x0f;
184 1 bcd2_realtime.minuteh=(binary_realtime.minute/10)&0x0f;
185 1 bcd2_realtime.minutel=(binary_realtime.minute%10)&0x0f;
186 1 bcd2_realtime.secondh=(binary_realtime.second/10)&0x0f;
187 1 bcd2_realtime.secondl=(binary_realtime.second%10)&0x0f;
188 1 }
189
190 void bcd2_binary_time(void)
191 {//年、月、日
192 1 binary_realtime.year =bcd2_realtime.yearh *10+bcd2_realtime.yearl;
193 1 binary_realtime.month=bcd2_realtime.monthh*10+bcd2_realtime.monthl;
194 1 binary_realtime.day =bcd2_realtime.dayh *10+bcd2_realtime.dayl;
195 1 //时、分、秒
196 1 binary_realtime.hour =bcd2_realtime.hourh *10+bcd2_realtime.hourl;
197 1 binary_realtime.minute=bcd2_realtime.minuteh*10+bcd2_realtime.minutel;
198 1 binary_realtime.second=bcd2_realtime.secondh*10+bcd2_realtime.secondl;
199 1 }
200
201 //二进制转BCD
202 void binary_bcd(void)
203 {//年、月、日
204 1 bcd_24wcxx.yearh =(binary_24wcxx.year /10)&0x0f;
205 1 bcd_24wcxx.yearl =(binary_24wcxx.year %10)&0x0f;
206 1 bcd_24wcxx.monthh=(binary_24wcxx.month/10)&0x0f;
207 1 bcd_24wcxx.monthl=(binary_24wcxx.month%10)&0x0f;
208 1 bcd_24wcxx.dayh =(binary_24wcxx.day /10)&0x0f;
209 1 bcd_24wcxx.dayl =(binary_24wcxx.day %10)&0x0f;
210 1 //天数
211 1 bcd_24wcxx.days[0]=(uchar)((binary_24wcxx.days/10000)%10);
212 1 bcd_24wcxx.days[1]=(uchar)((binary_24wcxx.days/1000 )%10);
213 1 bcd_24wcxx.days[2]=(uchar)((binary_24wcxx.days/100 )%10);
214 1 bcd_24wcxx.days[3]=(uchar)((binary_24wcxx.days/10 )%10);
215 1 bcd_24wcxx.days[4]=(uchar)((binary_24wcxx.days )%10);
216 1 }
217
218 //BCD转二进制
219 void bcd_binary(void)
220 {//年、月、日
221 1 binary_24wcxx.year =bcd_24wcxx.yearh *10+bcd_24wcxx.yearl;
222 1 binary_24wcxx.month=bcd_24wcxx.monthh*10+bcd_24wcxx.monthl;
223 1 binary_24wcxx.day =bcd_24wcxx.dayh *10+bcd_24wcxx.dayl;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -