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

📄 my93c46.lst

📁 51单片机控制网卡实现上网程序代码
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.09   MY93C46                                                               03/27/2005 16:17:13 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE MY93C46
OBJECT MODULE PLACED IN my93c46.OBJ
COMPILER INVOKED BY: E:\学习工具\Keil51\C51\BIN\C51.EXE my93c46.c LARGE DEBUG OBJECTEXTEND CODE SYMBOLS

line level    source

   1          /**************************************************************
   2          Program: Test 93C46 access
   3          
   4          Author: Yu Liangyao, yly@mail.tsinghua.edu.cn
   5          
   6          Date: 2002-9-22
   7          Update: 2002-10-2
   8          
   9             (for test only)
  10          
  11          Note: It is very easy to expand to 93c56/66, ect, 
  12                but not implemented here.
  13          
  14          **************************************************************/
  15          
  16          #include "my93c46.h"
  17          
  18          /**************************************************************/
  19          //MW-Transfer function
  20          uint mw_trans(uint dat,uchar bits)
  21          {
  22   1         uint res=0,idx;
  23   1         uint tmp;
  24   1         
  25   1         tmp=dat;
  26   1      
  27   1         for(idx=0;idx<bits;idx++)
  28   1         {
  29   2            res<<=1;
  30   2            SK_0;
  31   2                SET_DI((tmp>>15)&0x01);  _mynop_();
  32   2                tmp<<=1;
  33   2                SK_1;                    _mynop_();
  34   2                res|=GET_DO(0);
  35   2                SK_0;                    _mynop_();
  36   2                     
  37   2         }
  38   1         SET_DI(0);
  39   1      
  40   1         return res;
  41   1      }
  42          
  43          /**************************************************************/
  44          //Erase a byte function
  45          uchar mw_erase(uchar address)
  46          {
  47   1         mw_ewen();
  48   1      
  49   1         CS_1;
  50   1         mw_trans(MW_ERASE|(((uint)(address & ADDR_MSK))<<(16-3-ADDR_LEN)),CMD_LEN);
  51   1         CS_0;       
  52   1         _mynop_();
  53   1         CS_1;
  54   1         while(GET_DO(0)==0);
  55   1         CS_0;
C51 COMPILER V7.09   MY93C46                                                               03/27/2005 16:17:13 PAGE 2   

  56   1      
  57   1         mw_ewds();
  58   1      
  59   1         return TRUE;
  60   1      }
  61          
  62          /**************************************************************/
  63          //Erase all function
  64          uchar mw_eral(void)
  65          {
  66   1         mw_ewen();
  67   1      
  68   1         CS_1;
  69   1         mw_trans(MW_ERAL,CMD_LEN);
  70   1         CS_0;       
  71   1         _mynop_();
  72   1         CS_1;
  73   1         while(GET_DO(0)==0);
  74   1         CS_0;
  75   1      
  76   1         mw_ewds();
  77   1      
  78   1         return TRUE;
  79   1      }
  80          
  81          /**************************************************************/
  82          //Erase/Write disable
  83          uchar mw_ewds(void)
  84          {
  85   1         CS_1;
  86   1         mw_trans(MW_EWDS,CMD_LEN);
  87   1         CS_0;
  88   1         return TRUE;
  89   1      }
  90          
  91          /**************************************************************/
  92          //Erase/Write enable
  93          uchar mw_ewen(void)
  94          {
  95   1         CS_1;
  96   1      
  97   1         mw_trans(MW_EWEN,CMD_LEN);
  98   1      
  99   1         CS_0;
 100   1         return TRUE;
 101   1      }
 102          
 103          /**************************************************************/
 104          //Test function
 105          uchar mw_test(void)
 106          {
 107   1         uint res;
 108   1         CS_1;
 109   1      
 110   1         res=mw_trans(MW_READ,CMD_LEN);
 111   1         mw_trans(DUMMY_WORD,DATA_LEN);
 112   1      
 113   1         CS_0;
 114   1      
 115   1         return ((res&0x01)==0)?TRUE:FALSE;
 116   1      }
 117          /**************************************************************/
C51 COMPILER V7.09   MY93C46                                                               03/27/2005 16:17:13 PAGE 3   

 118          //Read function
 119          uint mw_read(uchar address)
 120          {
 121   1         uint res; 
 122   1         CS_1;
 123   1         mw_trans(MW_READ|(((uint)(address & ADDR_MSK))<<(16-3-ADDR_LEN)),CMD_LEN);
 124   1         res=mw_trans(DUMMY_WORD,DATA_LEN);
 125   1         CS_0;
 126   1      
 127   1         return res;
 128   1      }
 129          
 130          /**************************************************************/
 131          //Write funcion
 132          uchar mw_write(uchar address,uint dat)
 133          {
 134   1         mw_ewen();
 135   1      
 136   1         CS_1;
 137   1      
 138   1         mw_trans(MW_WRITE|(((uint)(address & ADDR_MSK))<<(16-3-ADDR_LEN)),CMD_LEN);
 139   1         mw_trans(((uint)dat)<<(16-DATA_LEN),DATA_LEN);
 140   1      
 141   1         CS_0;       
 142   1         _mynop_();
 143   1         CS_1;
 144   1         while(GET_DO(0)==0);
 145   1         CS_0;
 146   1      
 147   1         mw_ewds();
 148   1      
 149   1         return TRUE;
 150   1      }
 151          
 152          /**************************************************************/
 153          //Write all function
 154          uchar mw_wral(uint dat)
 155          {
 156   1         mw_ewen();
 157   1      
 158   1         CS_1;
 159   1      
 160   1         mw_trans(MW_WRAL,CMD_LEN);
 161   1         mw_trans(((uint)dat)<<(16-DATA_LEN),DATA_LEN);
 162   1      
 163   1         CS_0;       
 164   1         _mynop_();
 165   1         CS_1;
 166   1         while(GET_DO(0)==0);
 167   1         CS_0;
 168   1      
 169   1         mw_ewds();
 170   1      
 171   1         return TRUE;
 172   1      }
 173          
 174          /**************************************************************/
 175          uchar mw_init(void)
 176          {
 177   1         CS_0;
 178   1         SK_0;
 179   1         DI_0;
C51 COMPILER V7.09   MY93C46                                                               03/27/2005 16:17:13 PAGE 4   

 180   1      
 181   1         return TRUE;
 182   1      }
 183          /**************************************************************/
 184          
C51 COMPILER V7.09   MY93C46                                                               03/27/2005 16:17:13 PAGE 5   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION L?0025 (BEGIN)
0000 7D09              MOV     R5,#09H
0002 7F00              MOV     R7,#00H
             ; FUNCTION _mw_trans (BEGIN)
                                           ; SOURCE LINE # 20
0004 900000      R     MOV     DPTR,#bits
0007 ED                MOV     A,R5
0008 F0                MOVX    @DPTR,A
;---- Variable 'dat' assigned to Register 'R6/R7' ----
                                           ; SOURCE LINE # 21
                                           ; SOURCE LINE # 22
0009 E4                CLR     A
000A A3                INC     DPTR
000B F0                MOVX    @DPTR,A
000C A3                INC     DPTR
000D F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 25
000E 900000      R     MOV     DPTR,#tmp
0011 EE                MOV     A,R6
0012 F0                MOVX    @DPTR,A
0013 A3                INC     DPTR
0014 EF                MOV     A,R7
0015 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 27
0016 E4                CLR     A
0017 900000      R     MOV     DPTR,#idx
001A F0                MOVX    @DPTR,A
001B A3                INC     DPTR
001C F0                MOVX    @DPTR,A
001D         ?C0001:
001D 900000      R     MOV     DPTR,#bits
0020 E0                MOVX    A,@DPTR
0021 FF                MOV     R7,A
0022 C3                CLR     C
0023 900000      R     MOV     DPTR,#idx+01H
0026 E0                MOVX    A,@DPTR
0027 9F                SUBB    A,R7
0028 900000      R     MOV     DPTR,#idx
002B E0                MOVX    A,@DPTR
002C 9400              SUBB    A,#00H
002E 4003              JC      $ + 5H
0030 020000      R     LJMP    ?C0002
                                           ; SOURCE LINE # 28
                                           ; SOURCE LINE # 29
0033 900000      R     MOV     DPTR,#res+01H
0036 E0                MOVX    A,@DPTR
0037 25E0              ADD     A,ACC
0039 F0                MOVX    @DPTR,A
003A 900000      R     MOV     DPTR,#res
003D E0                MOVX    A,@DPTR
003E 33                RLC     A
003F F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 30
0040 7F01              MOV     R7,#01H
0042 120000      E     LCALL   _map_io
0045 8F82              MOV     DPL,R7
0047 8E83              MOV     DPH,R6
0049 E0                MOVX    A,@DPTR
004A 54FB              ANL     A,#0FBH
C51 COMPILER V7.09   MY93C46                                                               03/27/2005 16:17:13 PAGE 6   

004C FF                MOV     R7,A
004D C007              PUSH    AR7
004F 7F01              MOV     R7,#01H
0051 120000      E     LCALL   _map_io
0054 8F82              MOV     DPL,R7
0056 8E83              MOV     DPH,R6
0058 D0E0              POP     ACC
005A F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 31
005B 7F01              MOV     R7,#01H
005D 120000      E     LCALL   _map_io
0060 8F82              MOV     DPL,R7
0062 8E83              MOV     DPH,R6
0064 E0                MOVX    A,@DPTR
0065 54FD              ANL     A,#0FDH
0067 FD                MOV     R5,A
0068 900000      R     MOV     DPTR,#tmp
006B E0                MOVX    A,@DPTR
006C C4                SWAP    A
006D 13                RRC     A
006E 13                RRC     A
006F 13                RRC     A
0070 5401              ANL     A,#01H
0072 25E0              ADD     A,ACC
0074 4D                ORL     A,R5
0075 FF                MOV     R7,A
0076 C007              PUSH    AR7
0078 7F01              MOV     R7,#01H
007A 120000      E     LCALL   _map_io
007D 8F82              MOV     DPL,R7
007F 8E83              MOV     DPH,R6
0081 D0E0              POP     ACC

⌨️ 快捷键说明

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