📄 1.lst
字号:
14 bit keyflag1;
15
16 uchar keynet;
17 uchar number;
18 uint numb;
19 uchar keynum;
20 uint time;
21 uchar ID;
22 uint num;
23 uint period;
24 uchar high;
25 uchar tcount,second,minute,hour;
26 char i;
27
28 uint idata fueltab[15]={
29 850, //1HZ
30 499, //2HZ
31 331, //3HZ
32 249, //4HZ
33 199, //5HZ
34 164, //6HZ
35 140, //7HZ
36 124, //8HZ
37 108, //9HZ
38 98, //10HZ
39 88, //11HZ
40 81, //12HZ
41 75, //13HZ
42 69, //14HZ
43 65, //15HZ
44 };
45 /////////////////////////////////延时程序/////////////////////////////////
46 void delay(uint t)
47 {
48 1 while(t--)
49 1 {
50 2 _nop_();
C51 COMPILER V7.06 1 11/18/2005 22:41:13 PAGE 6
51 2 _nop_();
52 2 _nop_();
53 2 _nop_();
54 2 }
55 1 }
56
57 ////////////////////////////////////////////////////////////////
58 main()
59 {
60 1
61 1 TMOD=0x11;
62 1 keynum=10;
63 1 TH0=0xfc;
64 1 TL0=0x18;
65 1 TH1=0x3c;
66 1 TL1=0xb0;
67 1 high=30;
68 1 time=0;
69 1 number=0;
70 1 numb=0;
71 1 fuel=1;
72 1 keyflag1=1;
73 1 keynet=0;
74 1 i=0;
75 1 EA=1;
76 1 ET0=1;
77 1 ET1=1;
78 1 ///////////////////////////////////////设定工作时间//////////////////////////////////
79 1 while(1){
80 2 TR0=0;
81 2 TR1=0;
82 2 ShowNum(keynum);
83 2 if(setnum==0&&keyflag==0)
84 2 {
85 3 keyflag=1;fuel=1;
86 3 keynum=keynum+10;
87 3 if(keynum>90)keynum=10;
88 3 while(1)
89 3 {
90 4 if(setnum==1){keyflag=0;break;}
91 4 }
92 3 }
93 2 if(SW==0&&keyflag==0)
94 2 {
95 3 keyflag=1;fuel=1;
96 3 while(1)
97 3 {
98 4 if(SW==1){keyflag=0;break;}
99 4 }
100 3 TR0=0;
101 3 TR1=0;
102 3 second=0;
103 3 tcount=0;
104 3 break;
105 3 }
106 2 }
107 1 ////////////////////////////////////////////设定通电时间////////////////////////////////////
108 1 while(1){
109 2 TR0=0;
110 2 ShowNum(high);
111 2 if(setnum==0&&keyflag==0)
112 2 {
C51 COMPILER V7.06 1 11/18/2005 22:41:13 PAGE 7
113 3 // keyflag=1;fuel=1;
114 3 high=high+5;
115 3 if(high>50)high=10;
116 3 while(1)
117 3 {
118 4 if(setnum==1){keyflag=0;break;}
119 4 }
120 3 }
121 2 if(SW==0&&keyflag==0)
122 2 {
123 3 keyflag=1;fuel=1;
124 3 while(1)
125 3 {
126 4 if(SW==1){keyflag=0;break;}
127 4 }
128 3 TR0=0;
129 3 break;
130 3 }
131 2 }
132 1 ////////////////////////////////主循环///////////////////////////////////
133 1 while(1)
134 1 {
135 2 key();
136 2 if(keyflag1==1) //SW open
137 2 {
138 3 if(i>14){i=0;}
139 3 else
140 3 {
141 4 TR0=0;
142 4 TR0=1;
143 4 period=fueltab[i];
144 4 TR0=1;
145 4 TR0=1;
146 4 num=i+1;
147 4 }
148 3 ShowNum(num);
149 3
150 3 }
151 2
152 2 //////////////////////////到达设定运行时间,停止运行/////////////////////////////////
153 2 if(keynet==1)
154 2 {
155 3 ShowNum(num);
156 3 if(second>=keynum)
157 3 {
158 4 fuel=1;
159 4 TR0=0;
160 4 TR1=0;
161 4 ShowNum(keynum);
162 4 }
163 3 keyflag1=0;
164 3 }
165 2 ////////////////////////////中断程序1///////////////////////////////////////////////////
166 2 }
167 1 }
168
169
170 void t0(void) interrupt 1 using 1
171 {
172 1 TH0=0xfc;
173 1 TL0=0x18; //1ms定时
174 1 time++;
C51 COMPILER V7.06 1 11/18/2005 22:41:13 PAGE 8
175 1 if(time>period)
176 1 {
177 2 time=0;
178 2 // numb++;
179 2 }
180 1 else
181 1 {
182 2 if(time>high){fuel=1;}
183 2 else {fuel=0;}
184 2 }
185 1 }
186
187
188
189 /////////////////////中断程序2///////////////////////////////
190 void t1(void) interrupt 3 using 2
191 {
192 1 tcount++;
193 1 if(tcount==20)
194 1 {
195 2 tcount=0;
196 2 second++;
197 2 }
198 1 TH1=0x3c;
199 1 TL1=0xb0;
200 1 }
201 /////////////////////////////////////////////////////////////////////////
C51 COMPILER V7.06 1 11/18/2005 22:41:13 PAGE 9
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _delay (BEGIN)
; SOURCE LINE # 46
;---- Variable 't' assigned to Register 'R6/R7' ----
; SOURCE LINE # 47
0000 ?C0001:
; SOURCE LINE # 48
0000 EF MOV A,R7
0001 1F DEC R7
0002 AC06 MOV R4,AR6
0004 7001 JNZ ?C0041
0006 1E DEC R6
0007 ?C0041:
0007 4C ORL A,R4
0008 6006 JZ ?C0003
; SOURCE LINE # 49
; SOURCE LINE # 50
000A 00 NOP
; SOURCE LINE # 51
000B 00 NOP
; SOURCE LINE # 52
000C 00 NOP
; SOURCE LINE # 53
000D 00 NOP
; SOURCE LINE # 54
000E 80F0 SJMP ?C0001
; SOURCE LINE # 55
0010 ?C0003:
0010 22 RET
; FUNCTION _delay (END)
; FUNCTION main (BEGIN)
; SOURCE LINE # 58
; SOURCE LINE # 59
; SOURCE LINE # 61
0000 758911 MOV TMOD,#011H
; SOURCE LINE # 62
0003 75000A R MOV keynum,#0AH
; SOURCE LINE # 63
0006 758CFC MOV TH0,#0FCH
; SOURCE LINE # 64
0009 758A18 MOV TL0,#018H
; SOURCE LINE # 65
000C 758D3C MOV TH1,#03CH
; SOURCE LINE # 66
000F 758BB0 MOV TL1,#0B0H
; SOURCE LINE # 67
0012 75001E R MOV high,#01EH
; SOURCE LINE # 68
0015 E4 CLR A
0016 F500 R MOV time,A
0018 F500 R MOV time+01H,A
; SOURCE LINE # 69
001A F500 R MOV number,A
; SOURCE LINE # 70
001C F500 R MOV numb,A
001E F500 R MOV numb+01H,A
; SOURCE LINE # 71
0020 D2B7 SETB fuel
; SOURCE LINE # 72
C51 COMPILER V7.06 1 11/18/2005 22:41:13 PAGE 10
0022 D200 R SETB keyflag1
; SOURCE LINE # 73
0024 F500 R MOV keynet,A
; SOURCE LINE # 74
0026 F500 R MOV i,A
; SOURCE LINE # 75
0028 D2AF SETB EA
; SOURCE LINE # 76
002A D2A9 SETB ET0
; SOURCE LINE # 77
002C D2AB SETB ET1
002E ?C0004:
; SOURCE LINE # 79
; SOURCE LINE # 80
002E C28C CLR TR0
; SOURCE LINE # 81
0030 C28E CLR TR1
; SOURCE LINE # 82
0032 AF00 R MOV R7,keynum
0034 120000 E LCALL _ShowNum
; SOURCE LINE # 83
0037 20B51A JB setnum,?C0006
003A 200017 R JB keyflag,?C0006
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -