⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wuximoto.lst

📁 基于80196KB开发的C程序,在伟福和星研环境中编译通过,用于学习8096系列单片机的中断编程技术.并成功地用于某地机动车检测业务.
💻 LST
📖 第 1 页 / 共 5 页
字号:
          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 + -