📄 wuxicar.lst
字号:
412
413
414
415 /*
416 * external interrupt source = extint pin
417 */
418
419 void init_extint_src(void)
42 {
0399 init_extint_src:
421 1 _ClrSFR_bit (ioc1, EXTINT_SRC);
0399 B10F00 E ldb wsr,#0FH
039C AC0000 E ldbze tmpreg,ioc1
039F 61FDFF00 R and tmpreg,#0FFFDH
03A3 1100 E clrb wsr
03A5 B00000 E ldb ioc1,tmpreg
422 1 }
03A8 F0 ret
; Function Statistics for: init_extint_src
; Code Size : 16 Parameter Count:
; Stack Size: Parameter Size :
; OReg Size : Stack Depth :
423
424 void init_interrupts(void)
425 {
03A9 init_interrupts:
426 1 /*
427 1 * Timer overflow interrupt = disabled
428 1 * A/D conversion complete interrupt = disabled
429 1 * HSI data available interrupt = disabled
43 1 * HSO interrupt = disabled
431 1 * HSI.0 pin interrupt = enabled
432 1 * Timer interrupt = disabled
433 1 * Serial port interrupt = disabled
C196 Compiler wuxicar 30-May-107 11:11:06 Page 18
Assembly Listing of Object Code
434 1 * External interrupt = enabled
435 1 * Transmit interrupt = disabled
436 1 * Receive interrupt = disabled
437 1 * HSI fifo 4 interrupt = disabled
438 1 * Timer 2 capture interrupt = disabled
439 1 * Timer 2 overflow interrupt = disabled
44 1 * External Interrupt 1 = disabled
441 1 * HSI fifo full interrupt = disabled
442 1 */
443 1
444 1 _SetSFR_bit (int_mask, HSI0_INT);
03A9 2000 br @0067
03AB @0067:
03AB B00000 E ldb tmpreg,int_mask
03AE 911000 R orb tmpreg,#1
03B1 1101 R clrb tmpreg+1
03B3 2000 br @0068
03B5 @0068:
03B5 B00000 E ldb int_mask,tmpreg
445 1 _SetSFR_bit (int_mask, EXT_INT);
03B8 2000 br @0069
03BA @0069:
03BA B00000 E ldb tmpreg,int_mask
03BD 918000 R orb tmpreg,#8
03C0 1101 R clrb tmpreg+1
03C2 2000 br @006A
03C4 @006A:
03C4 B00000 E ldb int_mask,tmpreg
446 1 }
03C7 F0 ret
; Function Statistics for: init_interrupts
; Code Size : 31 Parameter Count:
; Stack Size: Parameter Size :
; OReg Size : Stack Depth :
447
448 void main(void)
449 {
03C8 main:
03C8 69040018 sub SP,#4
03CC C800 E push ?FRAME01
03CE A01800 E ld ?FRAME01,SP
03D1 C800 R push ?OVRBASE
03D3 C802 R push ?OVRBASE+2
45 1 unsigned char i,chno=0;
03D5 1103 R clrb chno
451 1 unsigned int result,ad_result[2];
452 1 init_serial();
03D7 2E03 call init_serial
453 1 init_timer1();
03D9 2E57 call init_timer1
454 1 init_pwm0();
03DB 2E75 call init_pwm0
455 1 init_hso1_5();
03DD 2E98 call init_hso1_5
C196 Compiler wuxicar 30-May-107 11:11:06 Page 19
Assembly Listing of Object Code
456 1 init_atod_converter();
03DF 2EF1 call init_atod_converter
457 1 init_hsi0();
03E1 2F4C call init_hsi0
458 1 init_extint_src();
03E3 2FB4 call init_extint_src
459 1 init_interrupts();
03E5 2FC2 call init_interrupts
46 1 enable();
03E7 EF0000 E call enable
461 1 /* The following line will loop until the letter 'Q' is
462 1 received. */
463 1 putchar('H');
03EA C94800 push #48H
03ED 2C93 call putchar
03EF 65020018 add SP,#2
464 1 putchar('e');
03F3 C96500 push #65H
03F6 2C8A call putchar
03F8 65020018 add SP,#2
465 1 putchar('l');
03FC C96C00 push #6CH
03FF 2C81 call putchar
0401 65020018 add SP,#2
466 1 putchar('l');
0405 C96C00 push #6CH
0408 2C78 call putchar
040A 65020018 add SP,#2
467 1 putchar('o');
040E C96F00 push #6FH
0411 2C6F call putchar
0413 65020018 add SP,#2
0417 20AF br @006D
0419 @006C:
468 1 //while(getchar() != 'Q')
469 1 while(1)
47 1 {
471 2 //result = convert_atod(0x00);
472 2 result = convert_atod(chno);
0419 AC031C R ldbze Tmp0,chno
041C C81C push Tmp0
041E 2ED5 call convert_atod
0420 65020018 add SP,#2
0424 A01C00 R ld result,Tmp0
473 2 ad_result[chno]=result;
0427 AC031E R ldbze Tmp2,chno
042A 641E1E add Tmp2,Tmp2
042D 64001E E add Tmp2,?FRAME01
0430 C31E021C st Tmp0,ad_result[Tmp2]
474 2 if(++chno==2) chno=0;
0434 1703 R incb chno
0436 990203 R cmpb chno,#2
0439 D702 bne @006F
043B 1103 R clrb chno
043D @006F:
475 2 if(triggle_out==1)
C196 Compiler wuxicar 30-May-107 11:11:06 Page 2 043D 990102 R cmpb triggle_out,#1
0440 D755 bne @007
476 2 {
477 3 triggle_out=0;
0442 1102 R clrb triggle_out
478 3 wsr=0;
0444 1100 E clrb wsr
479 3 wsr = 0x0;
0446 1100 E clrb wsr
48 3 mess[1]=ad_result[0]>>8;
0448 B300031C E ldb Tmp0,ad_result+1[?FRAME01]
044C C70101001C R stb Tmp0,mess+1
481 3 mess[2]=ad_result[0];
0451 B300021C E ldb Tmp0,ad_result[?FRAME01]
0455 C70102001C R stb Tmp0,mess+2
482 3 mess[3]=ad_result[1]>>8;
045A B300051C E ldb Tmp0,ad_result+3[?FRAME01]
045E C70103001C R stb Tmp0,mess+3
483 3 mess[4]=ad_result[1];
0463 B300041C E ldb Tmp0,ad_result+2[?FRAME01]
0467 C70104001C R stb Tmp0,mess+4
484 3 mess[5]=ioport1;
046C C701050000 E stb ioport1,mess+5
485 3 mess[6]=ioport2;
0471 C701060000 E stb ioport2,mess+6
486 3 mess[7]=hsi_status;
0476 C701070000 E stb hsi_status,mess+7
487 3 //mess[8]=pulse;
488 3 for(i=0;i<12;i++) putchar(mess[i]);
047B 1102 R clrb i
047D 2013 br @0073
047F @0071:
047F AC021C R ldbze Tmp0,i
0482 AF1D00001C R ldbze Tmp0,mess[Tmp0]
0487 C81C push Tmp0
0489 EFF6FB call putchar
048C 65020018 add SP,#2
0490 1702 R incb i
0492 @0073:
0492 990C02 R cmpb i,#0CH
0495 D3E8 bnc @0071
0497 @007:
489 3 }
49 2 if(triggle_in==1)
0497 990103 R cmpb triggle_in,#1
049A D72C bne @0075
491 2 {
492 3 triggle_in=0;
049C 1103 R clrb triggle_in
493 3 pwm0_control=pwm0_byte; //receive_buff[(end_rec_buff+RECEIVE_BUF_SIZE-4)%RECEIVE_BUF_SIZE];
049E B00700 E ldb pwm_control,pwm0_byte
494 3 ioport1=ioport1_byte; //receive_buff[(end_rec_buff+RECEIVE_BUF_SIZE-3)%RECEIVE_BUF_SIZE];
04A1 B00800 E ldb ioport1,ioport1_byte
495 3 for(i=0;i<5;i++)
04A4 1102 R clrb i
04A6 201B br @0078
C196 Compiler wuxicar 30-May-107 11:11:06 Page 21
Assembly Listing of Object Code
04A8 @0076:
496 3 {
497 4 hso_command=((hso_byte & (1<<i))>>i)*0x20+i;
04A8 AD011C ldbze Tmp0,#1
04AB 09021C R shl Tmp0,i
04AE AC091E R ldbze Tmp2,hso_byte
04B1 601E1C and Tmp0,Tmp2
04B4 0A021C R shra Tmp0,i
04B7 19051C shlb Tmp0,#5
04BA 541C0200 E addb hso_command,i,Tmp0
498 4 hso_time=20;
04BE AD1400 E ldbze hso_time,#14H
04C1 1702 R incb i
04C3 @0078:
04C3 990502 R cmpb i,#5
04C6 D3E0 bnc @0076
04C8 @0075:
499 4 }
5 3 }
5 2 }
04C8 @006D:
04C8 274F br @006C
5 1 /* Example of sending out buffered data. */
5 1 //while(1);
5 1 }
04CA CC02 R pop ?OVRBASE+2
04CC CC00 R pop ?OVR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -