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

📄 main.lst

📁 扩展RAM 扩展RAM 扩展RAM 扩展RAM 扩展RAM 扩展RAM 扩展RAM
💻 LST
字号:
A51 MACRO ASSEMBLER  MAIN                                                                 10/21/2006 11:30:34 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN main.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE main.A51 SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;*******************************************************************************
                       2     ;程序名称:RAM测试
                       3     ;硬件接法:16KB片外RAM接在0x8000~0xBFFF,MOVC和MOVX都可访问,详见电路图
                       4     ;运行效果:如果RAM通过测试,则指示灯常亮,否则指示灯不停闪烁
                       5     ;*******************************************************************************
                       6     
                       7     
                       8     ;*******************************************************************************
                       9     ;定义I/O接口
                      10     ;*******************************************************************************
  0091                11     LED     BIT     P1.1
                      12     
                      13     
                      14     ;*******************************************************************************
                      15     ;复位入口
                      16     ;*******************************************************************************
0000                  17             ORG     0x0000
0000 0200C1           18             LJMP    main
                      19     
                      20     
0080                  21             ORG     0x0080
                      22     
                      23     
                      24     ;*******************************************************************************
                      25     ;函数:void Delay(unsigned char t)
                      26     ;功能:延时0.01s~2.56s
                      27     ;参数:t = R7
                      28     ;      t>0时,延时(t*0.01)s
                      29     ;      t=0时,延时2.56s
                      30     ;说明:定时10ms的定时器初值=65536-0.01/(1/(f/12)),其中f为晶振频率
                      31     ;*******************************************************************************
0080                  32     Delay:
0080 758CDC           33             MOV     TH0, #0xDC      ;设置T0初值(定时10ms)
0083 758A00           34             MOV     TL0, #0x00
0086 D28C             35             SETB    TR0             ;启动T0
0088 308DFD           36             JNB     TF0, $          ;等待T0溢出
008B C28C             37             CLR     TR0             ;停止T0
008D C28D             38             CLR     TF0             ;清除溢出标志
008F DFEF             39             DJNZ    R7, Delay       ;循环t次
0091 22               40             RET
                      41     
                      42     
                      43     ;*******************************************************************************
                      44     ;宏定义:DJNZ_W
                      45     ;功能:双字节数自减1,结果不为0跳转
                      46     ;参数:
                      47     ;       (xh,xl):要操作的数
                      48     ;       Label:跳转目标
                      49     ;*******************************************************************************
                      50     DJNZ_W  MACRO   xh,xl, Label
                      51     LOCAL   next
                      52             MOV     A, xl
                      53             JNZ     next
                      54             DEC     xh
                      55     next:
                      56             DEC     xl
                      57             MOV     A, xh
                      58             ORL     A, xl
A51 MACRO ASSEMBLER  MAIN                                                                 10/21/2006 11:30:34 PAGE     2

                      59             JNZ     Label
                      60             ENDM
                      61     
                      62     
                      63     ;*******************************************************************************
                      64     ;函数:void WriteRam(unsigned int addr, unsigned int size, unsigned char c)
                      65     ;功能:向RAM写入数据
                      66     ;参数:addr=R6,R7-起始地址
                      67     ;      size=R4,R5-存储单元大小
                      68     ;      c=R3-要写入的数据
                      69     ;*******************************************************************************
0092                  70     WriteRam:
0092 8E83             71             MOV     DPH, R6
0094 8F82             72             MOV     DPL, R7
0096                  73     WriteRam_Loop:
0096 EB               74             MOV     A, R3
0097 F0               75             MOVX    @DPTR, A
0098 A3               76             INC     DPTR
                      77             DJNZ_W  R4,R5, WriteRam_Loop
00A2 22               86             RET
                      87     
                      88     
                      89     ;*******************************************************************************
                      90     ;函数:void CheckRam(unsigned int addr, unsigned int size, unsigned char c)
                      91     ;功能:检查RAM中存储的数据
                      92     ;参数:addr=R6,R7-起始地址
                      93     ;      size=R4,R5-存储单元大小
                      94     ;      c=R3-核对的数据
                      95     ;返回:0-失败
                      96     ;      1-成功
                      97     ;*******************************************************************************
00A3                  98     CheckRam:
00A3 8E83             99             MOV     DPH, R6
00A5 8F82            100             MOV     DPL, R7
00A7                 101     CheckRam_Loop:
00A7 E4              102             CLR     A
00A8 93              103             MOVC    A, @A+DPTR
00A9 A3              104             INC     DPTR
00AA 6B              105             XRL     A, R3
00AB 700B            106             JNZ     CheckRam_Fail
                     107             DJNZ_W  R4,R5, CheckRam_Loop
00B6 D3              116             SETB    C
00B7 22              117             RET
00B8                 118     CheckRam_Fail:
00B8 C3              119             CLR     C
00B9 22              120             RET
                     121     
                     122     
                     123     ;*******************************************************************************
                     124     ;函数:SysInit()
                     125     ;功能:系统初始化
                     126     ;*******************************************************************************
00BA                 127     SysInit:
00BA 758130          128             MOV     SP, #0x30
00BD 758901          129             MOV     TMOD, #0x01     ;T0设置在方式1,即16位定时器
00C0 22              130             RET
                     131     
                     132     
                     133     ;*******************************************************************************
                     134     ;函数:void main()
                     135     ;功能:主函数
                     136     ;*******************************************************************************
00C1                 137     main:
00C1 11BA            138             CALL    SysInit
                     139     ;向x8000~0xBFFF写入测试数据0x5A
00C3 7BA5            140             MOV     R3, #0xA5
A51 MACRO ASSEMBLER  MAIN                                                                 10/21/2006 11:30:34 PAGE     3

00C5 7C40            141             MOV     R4, #0x40
00C7 7D00            142             MOV     R5, #0x00
00C9 7E80            143             MOV     R6, #0x80
00CB 7F00            144             MOV     R7, #0x00
00CD 1192            145             CALL    WriteRam
                     146     ;检查RAM
00CF 7BA5            147             MOV     R3, #0xA5
00D1 7C40            148             MOV     R4, #0x40
00D3 7D00            149             MOV     R5, #0x00
00D5 7E80            150             MOV     R6, #0x80
00D7 7F00            151             MOV     R7, #0x00
00D9 11A3            152             CALL    CheckRam
00DB 5004            153             JNC     Ram_Error
00DD                 154     Ram_Ok:
                     155             ;测试通过,LED常亮
00DD C291            156             CLR     LED
00DF 80FE            157             SJMP    $
00E1                 158     Ram_Error:
                     159             ;测试失败,LED不停闪烁
00E1 C291            160             CLR     LED
00E3 7F1E            161             MOV     R7, #30
00E5 1180            162             CALL    Delay
00E7 D291            163             SETB    LED
00E9 7F1E            164             MOV     R7, #30
00EB 1180            165             CALL    Delay
00ED 80F2            166             SJMP    Ram_Error
                     167     
                     168     
                     169     ;*******************************************************************************
                     170     ;程序结束
                     171     ;*******************************************************************************
                     172             END
                             
A51 MACRO ASSEMBLER  MAIN                                                                 10/21/2006 11:30:34 PAGE     4

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

??0000 . . . . . .  C ADDR   009DH   A   
??0001 . . . . . .  C ADDR   00B1H   A   
CHECKRAM . . . . .  C ADDR   00A3H   A   
CHECKRAM_FAIL. . .  C ADDR   00B8H   A   
CHECKRAM_LOOP. . .  C ADDR   00A7H   A   
DELAY. . . . . . .  C ADDR   0080H   A   
DPH. . . . . . . .  D ADDR   0083H   A   
DPL. . . . . . . .  D ADDR   0082H   A   
LED. . . . . . . .  B ADDR   0090H.1 A   
MAIN . . . . . . .  C ADDR   00C1H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
RAM_ERROR. . . . .  C ADDR   00E1H   A   
RAM_OK . . . . . .  C ADDR   00DDH   A   
SP . . . . . . . .  D ADDR   0081H   A   
SYSINIT. . . . . .  C ADDR   00BAH   A   
TF0. . . . . . . .  B ADDR   0088H.5 A   
TH0. . . . . . . .  D ADDR   008CH   A   
TL0. . . . . . . .  D ADDR   008AH   A   
TMOD . . . . . . .  D ADDR   0089H   A   
TR0. . . . . . . .  B ADDR   0088H.4 A   
WRITERAM . . . . .  C ADDR   0092H   A   
WRITERAM_LOOP. . .  C ADDR   0096H   A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

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