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

📄 wuxicar.lst

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