📄 dm114.lst
字号:
90 void clock_inital1() reentrant //定时器1的初始化;
91 {TR1=0;
92 1 TH1=0x00;
93 1 TL1=0x00;
94 1 TR1=1;}
95 //////////////////////////////////////////////////
C51 COMPILER V7.06 DM114 05/07/2008 09:59:14 PAGE 4
96 void keynum0() //display mode
97 {
98 1 flag++;
99 1 mode=0;
100 1 ET1=1;
101 1 if(flag>=5) {flag=0; mode=1; ET1=0;j=0;}
102 1
103 1 }
104 ////////////////////////////////////////
105 void key() //键盘子程序;
106 { unsigned char keycode;
107 1 key0=1;
108 1
109 1 keycode=P1&0x10;
110 1 if(keycode!=0x10) //判断是否有键按下;
111 1 {
112 2 delay(20); //延时去抖动;
113 2 keycode=P1&0x10;
114 2 while(keycode!=0x10) //确认有键按下;
115 2 {
116 3 if(key0==0) //KEY0按下后执行子程序;
117 3 {
118 4 keynum0(); //
119 4 while(1) //等待键释放;
120 4 { if(key0==1) break;
121 5 delay(10);
122 5 }
123 4 }
124 3 break; }
125 2 }
126 1
127 1 }
128 ////////////////////////////////////////////////
129
130 ///////////////////////////////////////////////////
131 main()
132 {
133 1
134 1 TMOD=0x11;
135 1 EA=1;
136 1 TF1=0;
137 1 TF0=0;
138 1 clock_inital1();
139 1 clock_inital0();
140 1 ET1=1;
141 1 ET0=1;
142 1 EX0=1; // INT0中断开
143 1 IT0=0; // INT0低电平触发(为1则为下降沿触发)
144 1
145 1
146 1 STB=0;
147 1 OE=0;
148 1 flag=1;
149 1 mode=0;
150 1 number=0;
151 1 p=0;
152 1
153 1
154 1
155 1 while(1)
156 1 { if(mode==1)
157 2 { if(error==0)
C51 COMPILER V7.06 DM114 05/07/2008 09:59:14 PAGE 5
158 3 {for(i0=0;i0<45;i0++)
159 4 {send(ANODE[j][i0]);}
160 4 STB=1;
161 4 STB=0;
162 4 error=1;}
163 3 for(m=0;m<750;m++)
164 3 {
165 4 for(t=0;t<k;t++)
166 4 { OE=0;OE=0;}
167 4
168 4 for(t=0;t<(32-k);t++)
169 4 { OE=1;OE=1;}
170 4 }
171 3
172 3
173 3 k++;
174 3 }
175 2
176 2
177 2
178 2
179 2
180 2 }
181 1
182 1
183 1 }
184 /////////////////////////////////////////////////////////////////
185 //INT0中断 由P3.2引脚产生
186 void int_0() interrupt 0 using 0
187 {
188 1 key();
189 1
190 1 }
191 ///////////////////////////////////////////////////////////////
192 void clk_int0() interrupt 1 //定时器0中断程序;
193 {
194 1 clock_inital0();
195 1
196 1 number++;
197 1 if(error==1)
198 1 { if(k==32)
199 2 { k=0;j++;if(j==7) {j=0; }
200 3 for(i0=0;i0<45;i0++)
201 3 {send(ANODE[j][i0]);}
202 3 STB=1;
203 3 STB=0;}}
204 1
205 1 }
206 ///////////////////////////////////////////////////////////////
207 void clk_int1() interrupt 3
208 { unsigned char i;
209 1 clock_inital1();
210 1 if(mode==0)
211 1 {switch(flag)
212 2 {
213 3 case 1: if(number>=5){ number=0;p++;}
214 3 if(p>=7) p=0;
215 3 for(i=0;i<45;i++)
216 3 { send(ANODE2[p][i]);} STB=1;STB=0;error=0;OE=0;
217 3
218 3 break;
219 3
C51 COMPILER V7.06 DM114 05/07/2008 09:59:14 PAGE 6
220 3 case 2: if(number>=4){ number=0;p++;}
221 3 if(p>=16) p=0;
222 3 for(i=0;i<45;i++)
223 3 { send(ANODE4[p][i]);} STB=1;STB=0;error=0;OE=0;
224 3 break;
225 3 case 3: if(number>=10){ number=0;p++;}
226 3 if(p>=7) p=0;
227 3 for(i=0;i<45;i++)
228 3 { send(ANODE3[p][i]);} STB=1;STB=0;error=0;OE=0;
229 3 break;
230 3
231 3
232 3 case 4: if(number>=7){ number=0;p++;}
233 3 if(p>=7) p=0;
234 3 for(i=0;i<45;i++)
235 3 { send(ANODE1[p+i]);} STB=1;STB=0;error=0;OE=0;
236 3
237 3 /*
238 3 if(k==32)
239 3 { k=0;j++;if(j==7) {j=0; }
240 3 for(i=0;i<45;i++)
241 3 {send(ANODE[j][i]);}
242 3 STB=1;
243 3 STB=0;}*/
244 3 break;
245 3
246 3 default : flag=1;break;
247 3 }
248 2
249 2 }
250 1
251 1
252 1
253 1
254 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 677 ----
CONSTANT SIZE = 1901 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 11 ----
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 + -