📄 baozhan_one.lst
字号:
167 5 dis_low=0;
C51 COMPILER V7.06 BAOZHAN_ONE 05/23/2007 15:14:55 PAGE 4
168 5 }
169 4 else
170 4 {
171 5 dis_low=1;
172 5 disdata=disply[14];
173 5 dis_low=0;
174 5 }
175 4 }
176 3 break;
177 3
178 3 case 1:
179 3 {
180 4 if(cur_dpy>=20&&cur_dpy<30)
181 4 {
182 5 dis_high=1;
183 5 disdata=disply[1];
184 5 dis_high=0;
185 5 }
186 4 else if(cur_dpy>=30&&cur_dpy<40)
187 4 {
188 5 dis_high=1;
189 5 disdata=disply[2];
190 5 dis_high=0;
191 5 }
192 4 else
193 4 {
194 5 dis_high=1;
195 5 disdata=disply[14];
196 5 dis_high=0;
197 5 }
198 4 }
199 3 break;
200 3
201 3 default:break;
202 3 }
203 2 bitselect=~bitselect;
204 2 }
205 1
206 1
207 1 }
208
209
210
211
212
213 void dis_ale() //禁止ale,允许内部扩展1024byteRAM
214 {
215 1 AUXR = 0x01;
216 1 }
217
218 void enable_in_ram() //允许内部1024RAM,允许ALE.默认是允许的
219 {
220 1 AUXR = 0x00;
221 1 }
222
223
224
225
226
227
228
229
C51 COMPILER V7.06 BAOZHAN_ONE 05/23/2007 15:14:55 PAGE 5
230
231 //键盘扫描
232 void delay_kb(unsigned char time)
233 {
234 1 unsigned char i,j;
235 1 for(i=0;i<time;i++)
236 1 for(j=0;j<200;j++);
237 1 }
238
239 unsigned char kbscan(void)
240 {
241 1 unsigned char i,j,temp;
242 1 unsigned char vertical=0x01;
243 1 unsigned char row=0x10;
244 1 do{
245 2 P2=0xf0;
246 2 }while(P2&0xf0==0xf0);
247 1 delay_kb(10);
248 1 P2=0xf0;
249 1 if(P2&0xf0!=0xf0)
250 1 {
251 2 for(i=0;i<4;i++)
252 2 {
253 3 P2=~vertical;
254 3 temp=P2&0xf0;
255 3 for(j=0;j<4;j++)
256 3 {
257 4 if(temp&row==0x00)
258 4 return(j*8+i);
259 4 temp=temp>>1;
260 4 }
261 3 }
262 2 vertical<<=1;
263 2
264 2
265 2 }
266 1 else return 20;
267 1 }
268
269
270
271
272
273
274
275
276
277 //ISD4004录放音
278
279 void isd_spi(unsigned char cmd) //ISD4004写控制字
280 {
281 1 unsigned char m,i,j;
282 1 ss=1;
283 1 sclk=0;
284 1 ss=0;
285 1
286 1 m=cmd;
287 1 for(i=0;i<8;i++)
288 1 {
289 2 m=_cror_(m,1); //unsigned char _cror_(unsigned char x,unsigned char y);
290 2 //将X值向右旋Y次,即X值的bit0右旋至bit7.返回X值右旋Y次后的数值
291 2 j=m<<1;
C51 COMPILER V7.06 BAOZHAN_ONE 05/23/2007 15:14:55 PAGE 6
292 2 mosi=CY;
293 2 sclk=0;
294 2 sclk=1;
295 2 }
296 1 ss=1;
297 1 }
298
299
300
301
302
303
304 unsigned char chk_ovf(void) //检测OVF,溢出返回1,否则返回0
305 {
306 1 isd_spi(rint);
307 1 ss=0;
308 1 sclk=0;
309 1 sclk=1;
310 1 if(miso==1)
311 1 {
312 2 return 1;
313 2 }
314 1 else
315 1 {
316 2 return 0;
317 2 }
318 1 }
319
320
321
322
323
324
325
326
327
328 void isd_rec(void) //录音 address--录音地址 0---2400
329 {
330 1 unsigned char i,m,j;
331 1 unsigned int datasoute=0,address=0;
332 1 static unsigned char addr=0; //初始化isd_addr[]下标
333 1 static unsigned int PR_addr=0; //初始化行数(指示录放地址)
334 1
335 1
336 1 isd_spi(powerup);
337 1 delay_isd(5118); //上电延时
338 1 isd_spi(powerup);
339 1 delay_isd(5118); //上电延时
340 1 delay_isd(5118); //上电延时
341 1 if(init_R_addr==1) //需要初始化录音地址
342 1 {
343 2 ss=1;
344 2 sclk=0;
345 2 m=setrec;
346 2 ss=0;
347 2 for(i=0;i<16;i++)
348 2 {
349 3 address=_iror_(address,1); //unsigned int _iror_(unsigned int x,unsigned char y);
350 3 //将整数类型的X值右旋Y次,即X值的bit0右旋至bit15.返回X值右旋Y次
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -