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

📄 wuxicar.lst

📁 基于80196KB开发的C程序,在伟福和星研环境中编译通过,用于学习8096系列单片机的中断编程技术.并成功地用于某地机动车检测业务.
💻 LST
📖 第 1 页 / 共 5 页
字号:
  333     1       /*
  334     1       * HSO 5 module initialization:
  335     1       *   HSO5 output  = enabled
  336     1       *   cam locking  = disabled
  337     1       *   clear cam    = no
  338     1       */
  339     1       
  34      1         _SetSFR_bit (ioc1, HSO4_PIN_ENABLE);
          0277  B10F00             E         ldb     wsr,#0FH
          027A  B00000             E         ldb     tmpreg,ioc1
          027D  911000             R         orb     tmpreg,#1
          0280  1101               R         clrb    tmpreg+1
          0282  1100               E         clrb    wsr
          0284  B00000             E         ldb     ioc1,tmpreg
  341     1         _SetSFR_bit (ioc1, HSO5_PIN_ENABLE);
          0287  B10F00             E         ldb     wsr,#0FH
          028A  B00000             E         ldb     tmpreg,ioc1
          028D  914000             R         orb     tmpreg,#4
          0290  1101               R         clrb    tmpreg+1
          0292  1100               E         clrb    wsr
          0294  B00000             E         ldb     ioc1,tmpreg
  342     1         _ClrSFR_bit (ioc2, CAM_LOCK_BIT);
          0297  B10F00             E         ldb     wsr,#0FH
          029A  AC0000             E         ldbze   tmpreg,ioc2
          029D  61BFFF00           R         and     tmpreg,#0FFBFH
          02A1  1100               E         clrb    wsr
          02A3  B00000             E         ldb     ioc2,tmpreg
  343     1         _ClrSFR_bit (ioc2, CLEAR_CAM_BIT);
          02A6  B10F00             E         ldb     wsr,#0FH
          02A9  AC0000             E         ldbze   tmpreg,ioc2
          02AC  617FFF00           R         and     tmpreg,#0FF7FH
          02B0  1100               E         clrb    wsr
          02B2  B00000             E         ldb     ioc2,tmpreg
  344     1       
  345     1       /*
  346     1       * Interrupts:
  347     1       *   HSO interrupt      = disabled
  348     1       *   software timer int = disabled
  349     1       */
  35      1       
  351     1         _ClrSFR_bit (int_mask, HSO_INT);
C196  Compiler   wuxicar                                                                    30-May-107 11:11:06  Page  14
                 Assembly Listing of Object Code


          02B5  2000                         br      @0043
          02B7                        @0043: 
          02B7  AC0000             E         ldbze   tmpreg,int_mask
          02BA  61F7FF00           R         and     tmpreg,#0FFF7H
          02BE  2000                         br      @0044
          02C0                        @0044: 
          02C0  B00000             E         ldb     int_mask,tmpreg
  352     1         _ClrSFR_bit (int_mask, SW_TIMER_INT);
          02C3  2000                         br      @0045
          02C5                        @0045: 
          02C5  AC0000             E         ldbze   tmpreg,int_mask
          02C8  61DFFF00           R         and     tmpreg,#0FFDFH
          02CC  2000                         br      @0046
          02CE                        @0046: 
          02CE  B00000             E         ldb     int_mask,tmpreg
  353     1       }
          02D1  F0                           ret     
                                      
                ; Function Statistics for: init_hso1_5
                ;    Code Size :   91     Parameter Count:   
                ;    Stack Size:         Parameter Size :   
                ;    OReg Size :         Stack Depth    :   

  354             
  355             void init_atod_converter(void)
  356             {
          02D2                        init_atod_converter: 
  357     1       /* 
  358     1       * A/D conversion configuration:
  359     1       *    speed           = normal
  36      1       *    interrupt       = disabled 
  361     1       *    channel         = 0
  362     1       *    start time      = started immediately
  363     1       *    mode            = 10-bit
  364     1       */
  365     1       
  366     1         _ClrSFR_bit (ioc2, AD_SPEED);
          02D2  B10F00             E         ldb     wsr,#0FH
          02D5  AC0000             E         ldbze   tmpreg,ioc2
          02D8  61EFFF00           R         and     tmpreg,#0FFEFH
          02DC  1100               E         clrb    wsr
          02DE  B00000             E         ldb     ioc2,tmpreg
  367     1         _ClrSFR_bit (int_mask, AD_INT);
          02E1  2000                         br      @004A
          02E3                        @004A: 
          02E3  AC0000             E         ldbze   tmpreg,int_mask
          02E6  61FDFF00           R         and     tmpreg,#0FFFDH
          02EA  2000                         br      @004B
          02EC                        @004B: 
          02EC  B00000             E         ldb     int_mask,tmpreg
  368     1         _WriteSFR   (ad_command, 0x8);
          02EF  1100               E         clrb    wsr
          02F1  B10800             E         ldb     ad_command,#8
  369     1       }
          02F4  F0                           ret     
                                      
C196  Compiler   wuxicar                                                                    30-May-107 11:11:06  Page  15
                 Assembly Listing of Object Code


                ; Function Statistics for: init_atod_converter
                ;    Code Size :   35     Parameter Count:   
                ;    Stack Size:         Parameter Size :   
                ;    OReg Size :         Stack Depth    :   

  37              /*   convert_atod performs an atod conversion and.  This routine 
  371                  waits until the atod busy bit is cleared before and after the 
  372                  conversion. Interrupts should be disabled and the ATOD 
  373                  should be initialized prior to calling this routine.     */
  374             
  375             unsigned int convert_atod(unsigned char channel)
  376             {
          02F5                        convert_atod: 
          02F5  C800               R         push    ?OVRBASE
          02F7  B3180400           R         ldb     channel,4[SP]
  377     1        wsr = 0;
          02FB  1100               E         clrb    wsr
          02FD  2000                         br      @004F
          02FF                        @004E: 
  378     1        while(ATOD_BUSY);
          02FF                        @004F: 
          02FF  410800001C         E         and     Tmp0,ad_result,#8
          0304  881C00                       cmp     R0,Tmp0
          0307  D7F6                         bne     @004E
  379     1        ad_command =  channel | GO_NOW | TEN_BIT_MODE;
          0309  B0001C             R         ldb     Tmp0,channel
          030C  91081C                       orb     Tmp0,#8
          030F  B01C00             E         ldb     ad_command,Tmp0
  38      1        zero_reg=zero_reg+zero_reg;     /*  needed for 4 state delay  */
          0312  640000             E         add     r0,r0
  381     1        zero_reg=zero_reg+zero_reg;     /*  needed for 4 state delay  */
          0315  640000             E         add     r0,r0
          0318  2000                         br      @0052
          031A                        @0051: 
  382     1        while(ATOD_BUSY);
          031A                        @0052: 
          031A  410800001C         E         and     Tmp0,ad_result,#8
          031F  881C00                       cmp     R0,Tmp0
          0322  D7F6                         bne     @0051
  383     1        return((ad_result >> 6));
          0324  A0001C             E         ld      Tmp0,ad_result
          0327  08061C                       shr     Tmp0,#6
          032A  2000                         br      @004D
  384     1       }
          032C                        @004D: 
          032C  CC00               R         pop     ?OVRBASE
          032E  F0                           ret     
                                      
                ; Function Statistics for: convert_atod
                ;    Code Size :   58     Parameter Count:   1
                ;    Stack Size:         Parameter Size :   2
                ;    OReg Size :    1     Stack Depth    :   2

  385             
  386             void init_hsi0(void)
  387             {
C196  Compiler   wuxicar                                                                    30-May-107 11:11:06  Page  16
                 Assembly Listing of Object Code


          032F                        init_hsi0: 
  388     1       /*
  389     1       * HSI 0 module configuration:
  39      1       *   input capture mode = each positive transition
  391     1       *   hsi 0 external pin = enabled
  392     1       */
  393     1         _ClrSFR_bit (hsi_mode, 1);
          032F  B10F00             E         ldb     wsr,#0FH
          0332  AC0000             E         ldbze   tmpreg,hsi_mode
          0335  61FDFF00           R         and     tmpreg,#0FFFDH
          0339  1100               E         clrb    wsr
          033B  B00000             E         ldb     hsi_mode,tmpreg
  394     1         _SetSFR_bit (hsi_mode, 0);
          033E  B10F00             E         ldb     wsr,#0FH
          0341  B00000             E         ldb     tmpreg,hsi_mode
          0344  910100             R         orb     tmpreg,#1
          0347  1101               R         clrb    tmpreg+1
          0349  1100               E         clrb    wsr
          034B  B00000             E         ldb     hsi_mode,tmpreg
  395     1          
  396     1         _SetSFR_bit (ioc0, HSI0_PIN_ENABLE);
          034E  B10F00             E         ldb     wsr,#0FH
          0351  B00000             E         ldb     tmpreg,ioc0
          0354  910100             R         orb     tmpreg,#1
          0357  1101               R         clrb    tmpreg+1
          0359  1100               E         clrb    wsr
          035B  B00000             E         ldb     ioc0,tmpreg
  397     1       
  398     1       /*
  399     1       * Interrupts
  4       1       *   sixth fifo int vector  = hsi data available
  4       1       *   hsi 0 pin interrupt    = enabled
  4       1       *   hsi data available int = disabled
  4       1       *   hsi fifo full int      = disabled  
  4       1       *   hsi fifo 4 int         = disabled
  4       1       */
  4       1       
  4       1         _ClrSFR_bit (ioc1, SELECT_INT_VECTOR);
          035E  B10F00             E         ldb     wsr,#0FH
          0361  AC0000             E         ldbze   tmpreg,ioc1
          0364  617FFF00           R         and     tmpreg,#0FF7FH
          0368  1100               E         clrb    wsr
          036A  B00000             E         ldb     ioc1,tmpreg
  4       1         _ClrSFR_bit (int_mask, 2);  /* hsi data available */
          036D  2000                         br      @005D
          036F                        @005D: 
          036F  AC0000             E         ldbze   tmpreg,int_mask
          0372  61FBFF00           R         and     tmpreg,#0FFFBH
          0376  2000                         br      @005E
          0378                        @005E: 
          0378  B00000             E         ldb     int_mask,tmpreg
  4       1         _SetSFR_bit (int_mask, 4);  /* hsi0 external interrupt */
          037B  2000                         br      @005F
          037D                        @005F: 
          037D  B00000             E         ldb     tmpreg,int_mask
          0380  911000             R         orb     tmpreg,#1
C196  Compiler   wuxicar                                                                    30-May-107 11:11:06  Page  17
                 Assembly Listing of Object Code


          0383  1101               R         clrb    tmpreg+1
          0385  2000                         br      @006
          0387                        @006: 
          0387  B00000             E         ldb     int_mask,tmpreg
  41      1         _AndSFR (int_mask1, ~(HSI_FIFO_FULL_INTMSK + HSI_FIFO_4_INT));
          038A  2000                         br      @0061
          038C                        @0061: 
          038C  AC0000             E         ldbze   tmpreg,imask1
          038F  61BBFF00           R         and     tmpreg,#0FFBBH
          0393  2000                         br      @0062
          0395                        @0062: 
          0395  B00000             E         ldb     imask1,tmpreg
  411     1       }
          0398  F0                           ret     
                                      
                ; Function Statistics for: init_hsi0
                ;    Code Size :  1     Parameter Count:   
                ;    Stack Size:         Parameter Size :   
                ;    OReg Size :         Stack Depth    :   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -