📄 inductioncooker050413ver1.lst
字号:
283 00003A 2DF0 mov a,#11110000b
284 00003B 1FD4 mov p4,a
285 00003C 2BE4 clr p4ur
286 00003D
287 00003D 2DFF mov a,#11111111b
288 00003E 1FC5 mov p5m,a ;set p5 is output except p5.1
289 00003F 2DCB mov a,#11001011b
290 000040 1FD5 mov p5,a
291 000041
292 000041 0E00 ret
293 000042
294 000042 ;**********************************************
295 000042 ;Name :SysInitial
296 000042 ;Function:
297 000042 ;Input :
298 000042 ;Output :
299 000042 ;Register Used:
300 000042 ;***********************************************
301 000042 SysInitial:
302 000042
303 000042 45C9 bclr ftc0ien ;dis t0 int
304 000043 47DA bclr ftc0enb ;stop t0 count
305 000044 2D24 mov A,#00100100B ;//f0=fcpu/64
306 000045 2FDA b0mov Tc0M,A
307 000046 2D64 mov A,#100 ;//10ms constant for f0=1mips/64
308 000047 2FDB b0mov Tc0C,A
309 000048 6FDA b0bset FTc0ENB ; Enable TIMER0
310 000049 4DC9 bset FTc0IEN ; Enable T0 interrupt
311 00004A 45C8 bclr ftc0irq ; CLEAR TIMER0 INTERRUPT FLAG
312 00004B ;----
313 00004B ;初始化pwm
314 00004B 46C9 bclr ftc1ien ;dis t1 int
315 00004C 2BD8 clr t0m ;ftc1=fcpu
316 00004D 2BDD clr tc1c
317 00004E 2D65 mov a,#01100101b
318 00004F 1FDC mov tc1m,a ;set pwm=32 duty fpwm=62.5k
319 000050 41DC bclr ftc1out
320 000051 40DC bclr fpwm1out
321 000052 47DC bclr ftc1enb ;stop t1 count
322 000053 ;----
323 000053 2BB1 clr ADM
324 000054 6FB1 b0bset FADENB ;enable adc
325 000055 mov_ ADR,#01010000b ;select 12 bit ADC,Fcpu/2=128us
326 000055 2D50 mov a, #01010000b
327 000056 1FB3 mov ADR, a
328 000057 ;----
329 000057 4919 bset poweronflag ;通电标志
330 000058 6FDF b0bset FGIE ;//enable Interrupt gain
331 000059 0E00 ret
332 00005A
333 00005A ;**********************************************
334 00005A ;Name :Pdelay
335 00005A ;Function:
336 00005A ;Input :
337 00005A ;Output :
338 00005A ;Register Used:
339 00005A ;***********************************************
340 00005A Pdelay:
341 00005A 2DFF mov a,#0ffh
342 00005B 1F22 mov var1,a
343 00005C loop10:
344 00005C 2DFF mov a,#0ffh
345 00005D 1F23 mov var2,a
346 00005E loop11:
347 00005E 2623 decms var2
348 00005F 805E jmp loop11 ;power on delay
349 000060 2622 decms var1
350 000061 805C jmp loop10
351 000062 0E00 ret
352 000063 include intserver.asm
353 000063 ;************************************************
354 000063 ;Name :InterruptSub
355 000063 ;Function:
356 000063 ;Input :
357 000063 ;Output :
358 000063 ;Register Used:
359 000063 ;*************************************************
360 000063 InterruptSub:
361 000063 2C00 XCH A,AccBuf
362 000064 2C86 XCH A,PFLAG
363 000065 2F01 B0MOV PflagBuf,A
364 000066
365 000066 75C8 b0bts0 FTc0IRQ ;//Analyse the Interrupt resourc
366 000067 806E jmp Tc0INTR
367 000068
368 000068 70C8 b0bts0 FP00IRQ ;//P00 interrupt
369 000069 8080 jmp P00INTR
370 00006A
371 00006A Interrup90:
372 00006A
373 00006A 2C01 XCH A,PflagBuf
374 00006B 2F86 B0MOV PFLAG,A
375 00006C 2C00 XCH A,AccBuf ;//For release the Acc And Pflag
376 00006D
377 00006D 0F00 RETI
378 00006E
379 00006E ;--------------------------------------------------------
380 00006E Tc0INTR:
381 00006E ;//User can add interrupt program
382 00006E
383 00006E 4816 bset t10msflag
384 00006F
385 00006F 1E0A mov a,keychat
386 000070 7086 b0bts0 fz
387 000071 8074 jmp TC0INTR10
388 000072
389 000072 260A decms keychat
390 000073 0000 nop
391 000074 ;-----
392 000074 TC0INTR10:
393 000074 2602 decms timer1s
394 000075 807E jmp TC0INTR90
395 000076 4916 bset t1sflag
396 000077 mov_ timer1s,#100
397 000077 2D64 mov a, #100
398 000078 1F02 mov timer1s, a
399 000079 ;-----
400 000079 TC0INTR20:
401 000079 2603 decms timer1m
402 00007A 807E jmp TC0INTR90
403 00007B mov_ timer1m,#60
404 00007B 2D3C mov a, #60
405 00007C 1F03 mov timer1m, a
406 00007D 4A16 bset t1mflag
407 00007E TC0INTR90:
408 00007E 65C8 b0bclr FTc0IRQ
409 00007F 806A jmp Interrup90
410 000080
411 000080 ;--------------------------------------------------------
412 000080 P00INTR:
413 000080 ;//User can add interrupt program
414 000080
415 000080 P00INTR90:
416 000080 60C8 b0bclr FP00IRQ
417 000081 806A jmp Interrup90
418 000082 ;--------------------------------------------------------
419 000082 ;***********************************************
420 000082
421 000082
422 000082
423 000082 ;***********************************************
424 000082 ;Name :mnintgnd
425 000082 ;Function:interface between interrupt and main
426 000082 ;Input :
427 000082 ;Output :
428 000082 ;Register Used:
429 000082 ;***********************************************
430 000082 mnintgnd:
431 000082
432 000082 mnintgnd90:
433 000082 0E00 ret
434 000083 include keyscan.asm
435 000083 ;**********************************************
436 000083 ;Name :mnkey
437 000083 ;Function:
438 000083 ;Input :
439 000083 ;Output :
440 000083 ;Register Used:
441 000083 ;***********************************************
442 000083 mnkey:
443 000083 C087 call keyin
444 000084 C0A2 call keychk
445 000085 C0B4 call keycvt
446 000086
447 000086 mnkey90:
448 000086 0E00 ret
449 000087
450 000087 ;**********************************************
451 000087 ;Name :keyin
452 000087 ;Function:keyinbuf.7=0:key on line0,=1:key on line1
453 000087 ;Input :
454 000087 ;Output :
455 000087 ;Register Used:var1
456 000087 ;***********************************************
457 000087 keyin:
458 000087 ;-----
459 000087 mov_ var1,p2 ;push p2 value
460 000087 1ED2 mov a, p2
461 000088 1F22 mov var1, a
462 000089 C0D7 call p2input
463 00008A 2B06 clr keyinbuf
464 00008B ;----
465 00008B ;start scan key
466 00008B ;line0
467 00008B 40D5 bclr line0
468 00008C C13F call delay_10us
469 00008D 1ED2 mov a,p2
470 00008E 2A7F and a,#01111111b
471 00008F 1F06 mov keyinbuf,a
472 000090 1D7F xor a,#01111111b
473 000091 7886 b0bts1 fz
474 000092 809C jmp keyin80 ;line0 上有键按下,退出line1扫描
475 000093 ;-----
476 000093 ;line1 ;line0 上无键按下,接着扫描line1
477 000093 41D5 bclr line1
478 000094 C13F call delay_10us
479 000095 1ED2 mov a,p2
480 000096 2A7F and a,#01111111b
481 000097 1F06 mov keyinbuf,a
482 000098 1D7F xor a,#01111111b
483 000099 7086 b0bts0 fz
484 00009A 809C jmp keyin80 ;line1 上无键按下
485 00009B ;----
486 00009B 4F06 bset keyinbuf.7 ;line1 上有键按下
487 00009C ;------
488 00009C keyin80:
489 00009C 48D5 bset line0
490 00009D 49D5 bset line1
491 00009E ;----
492 00009E C0DD call p2output
493 00009F mov_ p2,var1 ;pop p2 value
494 00009F 1E22 mov a, var1
495 0000A0 1FD2 mov p2, a
496 0000A1 ;---
497 0000A1 keyin90:
498 0000A1 0E00 ret
499 0000A2
500 0000A2 ;**********************************************
501 0000A2 ;Name :keychk
502 0000A2 ;Function:
503 0000A2 ;Input :
504 0000A2 ;Output :
505 0000A2 ;Register Used:
506 0000A2 ;***********************************************
507 0000A2 keychk:
508 0000A2 1E06 mov a,keyinbuf ;check line0 state
509 0000A3 0707 cmprs a,keychkbuf
510 0000A4 80AE jmp keychk10
511 0000A5
512 0000A5 7C16 b0bts1 keystatflag ;check have key push or not?
513 0000A6 80B3 jmp keychk90
514 0000A7
515 0000A7 1E0A mov a,keychat ;banish key's dithering
516 0000A8 7886 b0bts1 fz
517 0000A9 80B3 jmp keychk90
518 0000AA
519 0000AA 1E07 mov a,keychkbuf ;save key value
520 0000AB 1F08 mov keycvtbuf,a
521 0000AC
522 0000AC 4416 bclr keystatflag
523 0000AD 80B3 jmp keychk90
524 0000AE ;---
525 0000AE keychk10:
526 0000AE 1E06 mov a,keyinbuf ;send key state to bufram
527 0000AF 1F07 mov keychkbuf,a
528 0000B0
529 0000B0 4C16 bset keystatflag ;set key push flag
530 0000B1 2D03 mov a,#3 ;3
531 0000B2 1F0A mov keychat,a ;banish key's dithering 30ms
532 0000B3 ;---
533 0000B3 keychk90:
534 0000B3 0E00 ret
535 0000B4
536 0000B4
537 0000B4 ;**********************************************
538 0000B4 ;Name :keycvt
539 0000B4 ;Function:
540 0000B4 ;Input :
541 0000B4 ;Output :
542 0000B4 ;Register Used:var1,var2
543 0000B4 ;***********************************************
544 0000B4 keycvt:
545 0000B4 1E08 mov a,keycvtbuf ;convert key value
546 0000B5 0709 cmprs a,keyoldbuf
547 0000B6 80B8 jmp keycvt10
548 0000B7 80D6 jmp keycvt90
549 0000B8 ;-----------------------------------------
550 0000B8 keycvt10:
551 0000B8 7708 b0bts0 lineflag ;=0:line0 key,=1:line1 key
552 0000B9 80C8 jmp line1keypush
553 0000BA ;----
554 0000BA ;line0 key push
555 0000BA mov_ var1,keycvtbuf
556 0000BA 1E08 mov a, keycvtbuf
557 0000BB 1F22 mov var1, a
558 0000BC mov_ var2,#7
559 0000BC 2D07 mov a, #7
560 0000BD 1F23 mov var2, a
561 0000BE ;-----------------------------------------
562 0000BE loopline0:
563 0000BE 4286 bclr fc
564 0000BF 0922 rrcm var1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -