📄 wuximoto.lst
字号:
039F @0063:
039F AC0000 E ldbze tmpreg,int_mask
03A2 61FBFF00 R and tmpreg,#0FFFBH
03A6 2000 br @0064
03A8 @0064:
03A8 B00000 E ldb int_mask,tmpreg
418 1 _SetSFR_bit (int_mask, 4); /* hsi0 external interrupt */
03AB 2000 br @0065
03AD @0065:
03AD B00000 E ldb tmpreg,int_mask
03B0 911000 R orb tmpreg,#1
03B3 1101 R clrb tmpreg+1
03B5 2000 br @0066
03B7 @0066:
03B7 B00000 E ldb int_mask,tmpreg
419 1 _AndSFR (int_mask1, ~(HSI_FIFO_FULL_INTMSK + HSI_FIFO_4_INT));
03BA 2000 br @0067
03BC @0067:
03BC AC0000 E ldbze tmpreg,imask1
03BF 61BBFF00 R and tmpreg,#0FFBBH
03C3 2000 br @0068
03C5 @0068:
03C5 B00000 E ldb imask1,tmpreg
42 1 }
03C8 F0 ret
; Function Statistics for: init_hsi0_1
; Code Size : 154 Parameter Count:
; Stack Size: Parameter Size :
; OReg Size : Stack Depth :
421
422
423 /*
424 * external interrupt source = extint pin
425 */
426
427 void init_extint_src(void)
428 {
03C9 init_extint_src:
C196 Compiler wuximoto 28-Jun-107 11:05:25 Page 18
Assembly Listing of Object Code
429 1 _ClrSFR_bit (ioc1, EXTINT_SRC);
03C9 B10F00 E ldb wsr,#0FH
03CC AC0000 E ldbze tmpreg,ioc1
03CF 61FDFF00 R and tmpreg,#0FFFDH
03D3 1100 E clrb wsr
03D5 B00000 E ldb ioc1,tmpreg
43 1 }
03D8 F0 ret
; Function Statistics for: init_extint_src
; Code Size : 16 Parameter Count:
; Stack Size: Parameter Size :
; OReg Size : Stack Depth :
431
432 void init_interrupts(void)
433 {
03D9 init_interrupts:
434 1 /*
435 1 * Timer overflow interrupt = disabled
436 1 * A/D conversion complete interrupt = disabled
437 1 * HSI data available interrupt = disabled
438 1 * HSO interrupt = disabled
439 1 * HSI.0 pin interrupt = enabled
44 1 * Timer interrupt = disabled
441 1 * Serial port interrupt = disabled
442 1 * External interrupt = enabled
443 1 * Transmit interrupt = disabled
444 1 * Receive interrupt = disabled
445 1 * HSI fifo 4 interrupt = disabled
446 1 * Timer 2 capture interrupt = disabled
447 1 * Timer 2 overflow interrupt = disabled
448 1 * External Interrupt 1 = disabled
449 1 * HSI fifo full interrupt = disabled
45 1 */
451 1
452 1 _SetSFR_bit (int_mask, HSI0_INT);
03D9 2000 br @006D
03DB @006D:
03DB B00000 E ldb tmpreg,int_mask
03DE 911000 R orb tmpreg,#1
03E1 1101 R clrb tmpreg+1
03E3 2000 br @006E
03E5 @006E:
03E5 B00000 E ldb int_mask,tmpreg
453 1 _SetSFR_bit (int_mask, EXT_INT);
03E8 2000 br @006F
03EA @006F:
03EA B00000 E ldb tmpreg,int_mask
03ED 918000 R orb tmpreg,#8
03F0 1101 R clrb tmpreg+1
03F2 2000 br @007
03F4 @007:
03F4 B00000 E ldb int_mask,tmpreg
454 1 }
03F7 F0 ret
C196 Compiler wuximoto 28-Jun-107 11:05:25 Page 19
Assembly Listing of Object Code
; Function Statistics for: init_interrupts
; Code Size : 31 Parameter Count:
; Stack Size: Parameter Size :
; OReg Size : Stack Depth :
455
456 void main(void)
457 {
03F8 main:
03F8 69040018 sub SP,#4
03FC C800 E push ?FRAME01
03FE A01800 E ld ?FRAME01,SP
0401 C800 R push ?OVRBASE
0403 C802 R push ?OVRBASE+2
458 1 unsigned char i,chno=0;
0405 1103 R clrb chno
459 1 unsigned int result,ad_result[2];
46 1 init_serial();
0407 2DD3 call init_serial
461 1 init_timer1();
0409 2E27 call init_timer1
462 1 init_pwm0();
040B 2E45 call init_pwm0
463 1 init_hsi0_1();
040D 2F20 call init_hsi0_1
464 1 init_hso0_5();
040F 2E66 call init_hso0_5
465 1 init_atod_converter();
0411 2EBF call init_atod_converter
466 1 init_extint_src();
0413 2FB4 call init_extint_src
467 1 init_interrupts();
0415 2FC2 call init_interrupts
468 1 enable();
0417 EF0000 E call enable
469 1 /* The following line will loop until the letter 'Q' is
47 1 received. */
471 1 putchar('H');
041A C94800 push #48H
041D 2C63 call putchar
041F 65020018 add SP,#2
472 1 putchar('e');
0423 C96500 push #65H
0426 2C5A call putchar
0428 65020018 add SP,#2
473 1 putchar('l');
042C C96C00 push #6CH
042F 2C51 call putchar
0431 65020018 add SP,#2
474 1 putchar('l');
0435 C96C00 push #6CH
0438 2C48 call putchar
043A 65020018 add SP,#2
475 1 putchar('o');
043E C96F00 push #6FH
C196 Compiler wuximoto 28-Jun-107 11:05:25 Page 2 0441 2C3F call putchar
0443 65020018 add SP,#2
0447 20B4 br @0073
0449 @0072:
476 1 //while(getchar() != 'Q')
477 1 while(1)
478 1 {
479 2 //result = convert_atod(0x00);
48 2 result = convert_atod(chno);
0449 AC031C R ldbze Tmp0,chno
044C C81C push Tmp0
044E 2EA5 call convert_atod
0450 65020018 add SP,#2
0454 A01C00 R ld result,Tmp0
481 2 ad_result[chno]=result;
0457 AC031E R ldbze Tmp2,chno
045A 641E1E add Tmp2,Tmp2
045D 64001E E add Tmp2,?FRAME01
0460 C31E021C st Tmp0,ad_result[Tmp2]
482 2 if(++chno==2) chno=0;
0464 1703 R incb chno
0466 990203 R cmpb chno,#2
0469 D702 bne @0075
046B 1103 R clrb chno
046D @0075:
483 2 if(triggle_out==1)
046D 990102 R cmpb triggle_out,#1
0470 D755 bne @0076
484 2 {
485 3 triggle_out=0;
0472 1102 R clrb triggle_out
486 3 wsr=0;
0474 1100 E clrb wsr
487 3 wsr = 0x0;
0476 1100 E clrb wsr
488 3 mess[1]=ad_result[0]>>8;
0478 B300031C E ldb Tmp0,ad_result+1[?FRAME01]
047C C70101001C R stb Tmp0,mess+1
489 3 mess[2]=ad_result[0];
0481 B300021C E ldb Tmp0,ad_result[?FRAME01]
0485 C70102001C R stb Tmp0,mess+2
49 3 mess[3]=ad_result[1]>>8;
048A B300051C E ldb Tmp0,ad_result+3[?FRAME01]
048E C70103001C R stb Tmp0,mess+3
491 3 mess[4]=ad_result[1];
0493 B300041C E ldb Tmp0,ad_result+2[?FRAME01]
0497 C70104001C R stb Tmp0,mess+4
492 3 mess[5]=ioport0;
049C C701050000 E stb ioport0,mess+5
493 3 mess[6]=ioport2;
04A1 C701060000 E stb ioport2,mess+6
494 3 mess[7]=hsi_status;
04A6 C701070000 E stb hsi_status,mess+7
495 3 //mess[8]=pulse;
496 3 for(i=0;i<12;i++) putchar(mess[i]);
04AB 1102 R clrb i
C196 Compiler wuximoto 28-Jun-107 11:05:25 Page 21
Assembly Listing of Object Code
04AD 2013 br @0079
04AF @0077:
04AF AC021C R ldbze Tmp0,i
04B2 AF1D00001C R ldbze Tmp0,mess[Tmp0]
04B7 C81C push Tmp0
04B9 EFC6FB call putchar
04BC 65020018 add SP,#2
04C0 1702 R incb i
04C2 @0079:
04C2 990C02 R cmpb i,#0CH
04C5 D3E8 bnc @0077
04C7 @0076:
497 3 }
498 2 if(triggle_in==1)
04C7 990103 R cmpb triggle_in,#1
04CA D731 bne @007B
499 2 {
5 3 triggle_in=0;
04CC 1103 R clrb triggle_in
5 3 pwm0_control=pwm0_byte; //receive_buff[(end_rec_buff+RECEIVE_BUF_SIZE-4)%RECEIVE_BUF_SIZE];
04CE B00700 E ldb pwm_control,pwm0_byte
5 3 ioport1=~ioport1_byte; //receive_buff[(end_rec_buff+RECEIVE_BUF_SIZE-3)%RECEIVE_BUF_SIZE];
04D1 AC081C R ldbze Tmp0,ioport1_byte
04D4 021C
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -