📄 timer.lst
字号:
C51 COMPILER V7.07 TIMER 11/11/2007 15:43:51 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE TIMER
OBJECT MODULE PLACED IN timer.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE timer.c OPTIMIZE(2,SPEED) INTVECTOR(0X8000) DEFINE(monitor51) DEBUG OBJECTE
-XTEND
stmt level source
1 #include "reg52.h"
2 #include "VIiC_C51.H" //包含VI2C软件包
3 #include "zlg7290.h"
4
5 //#define PCF8563 0xA2 //定义器件地址
6 //#define WRADDR 0x00 //定义写单元首地址
7 //#define RDADDR 0x02 //定义读单元首地址
8
9 sbit KEY_INT=P3^2;
10 sbit RST=P1^6;
11
12 unsigned char disp[8]={0,31,31,31,31,31,31,31};//显示缓存
13 unsigned char key;
14 long nshu,bshu,bbshu;
15 unsigned char nfu,bfu,bbfu; //保存键值
16 //bit swich_date=0;
17
18 unsigned char DelayNS(unsigned char no)
19 {
20 1 unsigned char i,j; //延时参数
21 1
22 1 for(; no>0; no--)
23 1 for(i=0; i<100; i++)
24 1 for(j=0; j<100; j++);
25 1 return 0;
26 1 }
27
28 void jisuan() //计算及整理输入 //定义10为0,11为加号,12为减号,13为*号,14为除号,15为等号,16为清零
29 {
30 1 unsigned char key,fu;
31 1 unsigned char date,i,j;
32 1
33 1
34 1 key=ZLG7290_GetKey();
35 1 if(key==10)
36 1 key=0;
37 1
38 1 if(key<=9)
39 1 {
40 2 date=key;
41 2 if(disp[1]==31&&disp[0]==0)
42 2 disp[0]=date;
43 2 else
44 2 {
45 3 for(i=7;i>0;i--)
46 3 {
47 4 disp[i]=disp[i-1];
48 4 }
49 3 disp[0]=date;
50 3 }
51 2 }
52 1 else
53 1 {
54 2 fu=key;
C51 COMPILER V7.07 TIMER 11/11/2007 15:43:51 PAGE 2
55 2
56 2 if(fu==16) // 16为清零
57 2 {
58 3 nshu=0;bshu=0;bbshu=0;
59 3 nfu=0;bfu=0;bbfu=0;
60 3 disp[0]=0;
61 3 for(i=1;i<8;i++)
62 3 disp[i]=31;
63 3 }
64 2
65 2
66 2 bbshu=bshu;
67 2 bshu=nshu;
68 2 nshu=0;
69 2 j=1;
70 2 for(i=0;i<8;i++)
71 2 {
72 3 if(disp[i]==31)
73 3 i=8;
74 3 nshu=nshu+disp[i]*j;
75 3 j=j*10;
76 3
77 3 }
78 2 disp[0]=0;
79 2 for(i=1;i<8;i++)
80 2 disp[i]=31;
81 2 if((fu==11)||(fu==12)) //11为加号,12为减号,
82 2 {
83 3 switch(nfu)
84 3 {
85 4 case 11:
86 4 {
87 5 nshu=nshu+bshu;
88 5 nfu=fu;
89 5
90 5 }break;
91 4 case 12:
92 4 {
93 5 nshu=nshu-bshu;
94 5 nfu=fu;
95 5 }break;
96 4 case 13: //13为*号
97 4 {
98 5
99 5 switch(bfu)
100 5 {
101 6 case 0:break;
102 6 case 11: //11为加号
103 6 {nshu=nshu*bshu+bbshu;bfu=0;bshu=0;bbshu=0;}break;
104 6 case 12: //12为减号
105 6 {nshu=bbshu-nshu*bshu;bfu=0;bshu=0;bbshu=0;}break;
106 6 default:break;
107 6 }
108 5 nfu=fu;
109 5 }break;
110 4 case 14: //14为除号
111 4 {
112 5
113 5 switch(bfu)
114 5 {
115 6 case 0:break;
116 6 case 11: //11为加号
C51 COMPILER V7.07 TIMER 11/11/2007 15:43:51 PAGE 3
117 6 {nshu=bshu/nshu+bbshu;bfu=0;bshu=0;bbshu=0;}break;
118 6 case 12: //12为减号
119 6 {nshu=bbshu-bshu/nshu;bfu=0;bshu=0;bbshu=0;}break;
120 6 default:break;
121 6 }
122 5 nfu=fu;
123 5 }break;
124 4 default:break;
125 4 }
126 3
127 3 }
128 2 if((fu==13)||(fu==14)) //13为*号 14为除号
129 2 {
130 3 switch(nfu)
131 3 {
132 4 case 12:
133 4 {bfu=nfu;nfu=fu;}break;
134 4 case 11:
135 4 {bfu=nfu;nfu=fu;}break;
136 4 case 13:
137 4 {nshu=bshu*nshu;bshu=bbshu;nfu=fu;}break;
138 4 case 14:
139 4 {nshu=bshu/nshu;bshu=bbshu;nfu=fu;}break;
140 4 default:break;
141 4 }
142 3 }
143 2 if(fu==15)
144 2 { // 15为等号
145 3 switch(nfu)
146 3 {
147 4 case 11:
148 4 {
149 5 nshu=nshu+bshu;
150 5 nfu=0;
151 5 }break;
152 4 case 12:
153 4 {
154 5 nshu=bshu-nshu;
155 5 nfu=0;
156 5 }break;
157 4 case 13:
158 4 {
159 5 nshu=nshu*bshu;bshu=bbshu;
160 5 switch(bfu)
161 5 {
162 6 case 0:break;
163 6 case 12:
164 6 {nshu=bshu-nshu;
165 7 bshu=0;bbshu=0;
166 7 nfu=0;bfu=0;
167 7 }break;
168 6 case 11:
169 6 {nshu=bshu+nshu;
170 7 bshu=0;bbshu=0;
171 7 nfu=0;bfu=0;
172 7 }break;
173 6 default:break;
174 6 }
175 5 }break;
176 4 case 14:
177 4 {
178 5 nshu=bshu/nshu;bshu=bbshu;
C51 COMPILER V7.07 TIMER 11/11/2007 15:43:51 PAGE 4
179 5 switch(bfu)
180 5 {
181 6 case 0:break;
182 6 case 12:
183 6 {nshu=bshu-nshu;
184 7 bshu=0;bbshu=0;
185 7 nfu=0;bfu=0;
186 7 }break;
187 6 case 11:
188 6 {nshu=bshu+nshu;
189 7 bshu=0;bbshu=0;
190 7 nfu=0;bfu=0;
191 7 }break;
192 6 default:break;
193 6 }
194 5 }break;
195 4 case 0:
196 4 {
197 5 if((bbshu==0)&&(bshu==0))
198 5 nshu=nshu*nshu;
199 5 }break;
200 4 case 16:
201 4 {
202 5 if((bbshu==0)&&(bshu==0))
203 5 nshu=nshu*nshu;
204 5 }break;
205 4 default:break;
206 4 }
207 3 // if(nshu>0)
208 3 {
209 4 for(i=0;i<8;i++)
210 4 {
211 5 disp[i]=nshu%10;
212 5 nshu=nshu/10;
213 5 if(nshu==0)
214 5 i=8;
215 5 }
216 4 }
217 3 /* else
218 3 {
219 3 nshu=0-nshu;
220 3 for(i=0;i<8;i++)
221 3 {
222 3 disp[i]=nshu%10;
223 3 nshu=nshu/10;
224 3 if(nshu==0)
225 3 {disp[i+1]=11;
226 3 i=8;}
227 3 }
228 3 }*/
229 3 nshu=0;
230 3 }
231 2 else
232 2 {
233 3 nfu=fu;
234 3 }
235 2 }
236 1
237 1 }
238
239 void main()
240 {
C51 COMPILER V7.07 TIMER 11/11/2007 15:43:51 PAGE 5
241 1
242 1
243 1 RST=0;
244 1 DelayNS(1);
245 1 RST=1;
246 1 DelayNS(1);
247 1 ZLG7290_SendBuf(disp,8);
248 1 while(1)
249 1 {
250 2 if(KEY_INT==0)
251 2 jisuan();
252 2
253 2 ZLG7290_SendBuf(disp,8);
254 2
255 2 }
256 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1672 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 24 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 + -