📄 inductioncooker050413ver1.lst
字号:
274 000031 ;-----
275 000031 ;bank select:
276 000031 bank0 macro
277 000031 b0bclr frbnks0
278 000031 endm
279 000031 bank1 macro
280 000031 b0bset frbnks0
281 000031 endm
282 000031 wdtc macro
283 000031 mov a,#0x5a
284 000031 mov wdtr,a ; Clear the watchdog timer counter.
285 000031 endm
286 000031 notbit macro bit
287 000031 b0bts0 bit
288 000031 jmp $+3
289 000031 b0bset bit
290 000031 jmp $+2
291 000031 b0bclr bit
292 000031 endm
293 000031
294 000031
295 000031
296 000031
297 000031 include main.asm
298 000031 ;-----------------------------------------------
299 000031 ;******************Program code segment*********
300 000031 ;-----------------------------------------------
301 000000 .CODE
302 000000
303 000000 ORG 000h ;Code section start
304 000000 8010 jmp Start ;Reset vector
305 000001 ;Address 4 to 7 are reserved
306 000008 ORG 008h
307 000008 8063 jmp InterruptSub ;Interrupt vector
308 000009
309 000010 ORG 010h
310 000010 ;**************************************************
311 000010 ;***************************************************
312 000010 Start:
313 000010 0000 nop
314 000011 0000 nop
315 000012 C05A call Pdelay ;//Power on delay
316 000013 ;-----
317 000013 7F86 b0bts1 fnt0
318 000014 8018 jmp wdtresetsub ;//watch dog reset way,no need initialize
319 000015 ;-----
320 000015 TurnOnInitial:
321 000015 C035 call PortInitial
322 000016 C023 call RAMInitial
323 000017 C042 call SysInitial
324 000018 ;-----
325 000018 wdtresetsub:
326 000018
327 000018 ;**********************************************
328 000018 MainLoop:
329 000018 ;//User need write the main routine Program.
330 000018 0000 nop
331 000019 @RST_WDT ;//User can use Macro instrution REST_WATCHDOG
332 000019 2D5A MOV A, #0x5A
333 00001A 2FCC B0MOV WDTR, A
334 00001B C022 call mnchecktime
335 00001C C086 call mnintgnd ;//interface between interrupt and main
336 00001D mainloop00:
337 00001D C1F6 call mndisplay
338 00001E C21C call mntwinkle
339 00001F C0A0 call mnkey ;//Interface between machine and human
340 000020 C100 call mnapp
341 000021
342 000021 8018 jmp MainLoop
343 000022 ;*****************************************************
344 000022 ;*****************************************************
345 000022 ;*****************************************************
346 000022 mnchecktime:
347 000022
348 000022 mnchecktime90:
349 000022 0E00 ret
350 000023 include initialize.asm
351 000023 ;**********************************************
352 000023 ;Name :RAMInitial
353 000023 ;Function:clr bank0~bank1
354 000023 ;Input :
355 000023 ;Output :
356 000023 ;Register Used:
357 000023 ;***********************************************
358 000023 RAMInitial:
359 000023 2B84 clr y
360 000024 2D7F mov a,#7fh
361 000025 2F83 b0mov z,a
362 000026 Clrbank0:
363 000026 2BE7 clr @YZ ;Clear @YZ content
364 000027 2683 decms Z ;z = z - 1 , skip next if z=0
365 000028 8026 jmp Clrbank0
366 000029 2BE7 clr @YZ ;Clear address 0x00
367 00002A ;-----
368 00002A ;preset some constant
369 00002A
370 00002A mov_ timer1s,#100 ;1s
371 00002A 2D64 mov a, #100
372 00002B 1F02 mov timer1s, a
373 00002C mov_ timer1m,#60 ;1m
374 00002C 2D3C mov a, #60
375 00002D 1F03 mov timer1m, a
376 00002E mov_ timer2h,#120 ;2h
377 00002E 2D78 mov a, #120
378 00002F 1F04 mov timer2h, a
379 000030 mov_ combuf,#11111111b ;set all com high level
380 000030 2DFF mov a, #11111111b
381 000031 1F1F mov combuf, a
382 000032 mov_ pwmpulsebuf,#10 ;set initialize pwm pusle=10/32
383 000032 2D0A mov a, #10
384 000033 1F18 mov pwmpulsebuf, a
385 000034
386 000034 0E00 ret
387 000035 ;**********************************************
388 000035 ;Name :PortInitial
389 000035 ;Function:
390 000035 ;Input :
391 000035 ;Output :
392 000035 ;Register Used:
393 000035 ;***********************************************
394 000035 PortInitial:
395 000035
396 000035 2DFF mov a,#0ffh
397 000036 1FC2 mov p2m,a ;set p2 is output port
398 000037 1FD2 mov p2,a ;set all p2 pin high level
399 000038
400 000038 2DF0 mov a,#11110000b ;set p4.7~p4.4 is output,others is input
401 000039 1FC4 mov p4m,a
402 00003A 2DF0 mov a,#11110000b
403 00003B 1FD4 mov p4,a
404 00003C 2BE4 clr p4ur
405 00003D
406 00003D 2DFF mov a,#11111111b
407 00003E 1FC5 mov p5m,a ;set p5 is output except p5.1
408 00003F 2DCB mov a,#11001011b
409 000040 1FD5 mov p5,a
410 000041
411 000041 0E00 ret
412 000042
413 000042 ;**********************************************
414 000042 ;Name :SysInitial
415 000042 ;Function:
416 000042 ;Input :
417 000042 ;Output :
418 000042 ;Register Used:
419 000042 ;***********************************************
420 000042 SysInitial:
421 000042
422 000042 45C9 bclr ftc0ien ;dis t0 int
423 000043 47DA bclr ftc0enb ;stop t0 count
424 000044 2D24 mov A,#00100100B ;//f0=fcpu/64
425 000045 2FDA b0mov Tc0M,A
426 000046 2D64 mov A,#100 ;//10ms constant for f0=1mips/64
427 000047 2FDB b0mov Tc0C,A
428 000048 6FDA b0bset FTc0ENB ; Enable TIMER0
429 000049 4DC9 bset FTc0IEN ; Enable T0 interrupt
430 00004A 45C8 bclr ftc0irq ; CLEAR TIMER0 INTERRUPT FLAG
431 00004B ;----
432 00004B ;初始化pwm
433 00004B 46C9 bclr ftc1ien ;dis t1 int
434 00004C 2BD8 clr t0m ;ftc1=fcpu
435 00004D 2BDD clr tc1c
436 00004E 2D65 mov a,#01100101b
437 00004F 1FDC mov tc1m,a ;set pwm=32 duty fpwm=62.5k
438 000050 41DC bclr ftc1out
439 000051 40DC bclr fpwm1out
440 000052 47DC bclr ftc1enb ;stop t1 count
441 000053 ;----
442 000053 2BB1 clr ADM
443 000054 6FB1 b0bset FADENB ;enable adc
444 000055 mov_ ADR,#01010000b ;select 12 bit ADC,Fcpu/2=128us
445 000055 2D50 mov a, #01010000b
446 000056 1FB3 mov ADR, a
447 000057 ;----
448 000057 4923 bset poweronflag ;通电标志
449 000058 6FDF b0bset FGIE ;//enable Interrupt gain
450 000059 0E00 ret
451 00005A
452 00005A ;**********************************************
453 00005A ;Name :Pdelay
454 00005A ;Function:
455 00005A ;Input :
456 00005A ;Output :
457 00005A ;Register Used:
458 00005A ;***********************************************
459 00005A Pdelay:
460 00005A 2DFF mov a,#0ffh
461 00005B 1F2D mov var1,a
462 00005C loop10:
463 00005C 2DFF mov a,#0ffh
464 00005D 1F2E mov var2,a
465 00005E loop11:
466 00005E 262E decms var2
467 00005F 805E jmp loop11 ;power on delay
468 000060 262D decms var1
469 000061 805C jmp loop10
470 000062 0E00 ret
471 000063 include intserver.asm
472 000063 ;************************************************
473 000063 ;Name :InterruptSub
474 000063 ;Function:
475 000063 ;Input :
476 000063 ;Output :
477 000063 ;Register Used:
478 000063 ;*************************************************
479 000063 InterruptSub:
480 000063 2C00 XCH A,AccBuf
481 000064 2C86 XCH A,PFLAG
482 000065 2F01 B0MOV PflagBuf,A
483 000066
484 000066 75C8 b0bts0 FTc0IRQ ;//Analyse the Interrupt resourc
485 000067 8070 jmp Tc0INTR
486 000068
487 000068 70C8 b0bts0 FP00IRQ ;//P00 interrupt
488 000069 8082 jmp P00INTR
489 00006A
490 00006A 71C8 b0bts0 FP01IRQ ;//P01 interrupt
491 00006B 8084 jmp P01INTR
492 00006C
493 00006C Interrup90:
494 00006C
495 00006C 2C01 XCH A,PflagBuf
496 00006D 2F86 B0MOV PFLAG,A
497 00006E 2C00 XCH A,AccBuf ;//For release the Acc And Pflag
498 00006F
499 00006F 0F00 RETI
500 000070
501 000070 ;--------------------------------------------------------
502 000070 Tc0INTR:
503 000070 ;//User can add interrupt program
504 000070
505 000070 4820 bset t10msflag
506 000071
507 000071 1E0D mov a,keychat
508 000072 7086 b0bts0 fz
509 000073 8076 jmp TC0INTR10
510 000074
511 000074 260D decms keychat
512 000075 0000 nop
513 000076 ;-----
514 000076 TC0INTR10:
515 000076 2602 decms timer1s
516 000077 8080 jmp TC0INTR90
517 000078 4920 bset t1sflag
518 000079 mov_ timer1s,#100
519 000079 2D64 mov a, #100
520 00007A 1F02 mov timer1s, a
521 00007B ;-----
522 00007B TC0INTR20:
523 00007B 2603 decms timer1m
524 00007C 8080 jmp TC0INTR90
525 00007D mov_ timer1m,#60
526 00007D 2D3C mov a, #60
527 00007E 1F03 mov timer1m, a
528 00007F 4A20 bset t1mflag
529 000080 TC0INTR90:
530 000080 65C8 b0bclr FTc0IRQ
531 000081 806C jmp Interrup90
532 000082
533 000082 ;--------------------------------------------------------
534 000082 P00INTR:
535 000082 ;//User can add interrupt program
536 000082
537 000082 P00INTR90:
538 000082 60C8 b0bclr FP00IRQ
539 000083 806C jmp Interrup90
540 000084 ;--------------------------------------------------------
541 000084 P01INTR:
542 000084 ;//User can add interrupt program
543 000084
544 000084 P01INTR90:
545 000084 61C8 b0bclr FP01IRQ
546 000085 806C jmp Interrup90
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -