Thông báo

Collapse
No announcement yet.

Cần hỗ trợ code Keil ASM

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Cần hỗ trợ code Keil ASM

    Như tiêu đề, em mới tập sử dụng keil. Hôm nay chạy thử cái code thì nó báo lỗi này, các bác xem giúp em với

    STARTUP.A51(200): warning A73: TEXT FOUND BEYOND END STATEMENT - IGNORED

    đoạn code của em như sau:

    $NOMOD51
    ;------------------------------------------------------------------------------
    ; This file is part of the C51 Compiler package
    ; Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.
    ; Version 8.01
    ;
    ; *** <<< Use Configuration Wizard in Context Menu >>> ***
    ;------------------------------------------------------------------------------
    ; STARTUP.A51: This code is executed after processor reset.
    ;
    ; To translate this file use A51 with the following invocation:
    ;
    ; A51 STARTUP.A51
    ;
    ; To link the modified STARTUP.OBJ file to your application use the following
    ; Lx51 invocation:
    ;
    ; Lx51 your object file list, STARTUP.OBJ controls
    ;
    ;------------------------------------------------------------------------------
    ;
    ; User-defined <h> Power-On Initialization of Memory
    ;
    ; With the following EQU statements the initialization of memory
    ; at processor reset can be defined:
    ;
    ; <o> IDATALEN: IDATA memory size <0x0-0x100>
    ; <i> Note: The absolute start-address of IDATA memory is always 0
    ; <i> The IDATA space overlaps physically the DATA and BIT areas.
    IDATALEN EQU 80H
    ;
    ; <o> XDATASTART: XDATA memory start address <0x0-0xFFFF>
    ; <i> The absolute start address of XDATA memory
    XDATASTART EQU 0
    ;
    ; <o> XDATALEN: XDATA memory size <0x0-0xFFFF>
    ; <i> The length of XDATA memory in bytes.
    XDATALEN EQU 0
    ;
    ; <o> PDATASTART: PDATA memory start address <0x0-0xFFFF>
    ; <i> The absolute start address of PDATA memory
    PDATASTART EQU 0H
    ;
    ; <o> PDATALEN: PDATA memory size <0x0-0xFF>
    ; <i> The length of PDATA memory in bytes.
    PDATALEN EQU 0H
    ;
    ;</h>
    ;------------------------------------------------------------------------------
    ;
    ;<h> Reentrant Stack Initialization
    ;
    ; The following EQU statements define the stack pointer for reentrant
    ; functions and initialized it:
    ;
    ; <h> Stack Space for reentrant functions in the SMALL model.
    ; <q> IBPSTACK: Enable SMALL model reentrant stack
    ; <i> Stack space for reentrant functions in the SMALL model.
    IBPSTACK EQU 0 ; set to 1 if small reentrant is used.
    ; <o> IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF>
    ; <i> Set the top of the stack to the highest location.
    IBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
    ; </h>
    ;
    ; <h> Stack Space for reentrant functions in the LARGE model.
    ; <q> XBPSTACK: Enable LARGE model reentrant stack
    ; <i> Stack space for reentrant functions in the LARGE model.
    XBPSTACK EQU 0 ; set to 1 if large reentrant is used.
    ; <o> XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF>
    ; <i> Set the top of the stack to the highest location.
    XBPSTACKTOP EQU 0xFFFF +1 ; default 0FFFFH+1
    ; </h>
    ;
    ; <h> Stack Space for reentrant functions in the COMPACT model.
    ; <q> PBPSTACK: Enable COMPACT model reentrant stack
    ; <i> Stack space for reentrant functions in the COMPACT model.
    PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.
    ;
    ; <o> PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF>
    ; <i> Set the top of the stack to the highest location.
    PBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
    ; </h>
    ;</h>
    ;------------------------------------------------------------------------------
    ;
    ; Memory Page for Using the Compact Model with 64 KByte xdata RAM
    ; <e>Compact Model Page Definition
    ;
    ; <i>Define the XDATA page used for PDATA variables.
    ; <i>PPAGE must conform with the PPAGE set in the linker invocation.
    ;
    ; Enable pdata memory page initalization
    PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.
    ;
    ; <o> PPAGE number <0x0-0xFF>
    ; <i> uppermost 256-byte address of the page used for PDATA variables.
    PPAGE EQU 0
    ;
    ; <o> SFR address which supplies uppermost address byte <0x0-0xFF>
    ; <i> most 8051 variants use P2 as uppermost address byte
    PPAGE_SFR DATA 0A0H
    ;
    ; </e>
    ;------------------------------------------------------------------------------

    ; Standard SFR Symbols
    ACC DATA 0E0H
    B DATA 0F0H
    SP DATA 81H
    DPL DATA 82H
    DPH DATA 83H

    NAME ?C_STARTUP


    ?C_C51STARTUP SEGMENT CODE
    ?STACK SEGMENT IDATA

    RSEG ?STACK
    DS 1

    EXTRN CODE (?C_START)
    PUBLIC ?C_STARTUP

    CSEG AT 0
    ?C_STARTUP: LJMP STARTUP1

    RSEG ?C_C51STARTUP

    STARTUP1:

    IF IDATALEN <> 0
    MOV R0,#IDATALEN - 1
    CLR A
    IDATALOOP: MOV @R0,A
    DJNZ R0,IDATALOOP
    ENDIF

    IF XDATALEN <> 0
    MOV DPTR,#XDATASTART
    MOV R7,#LOW (XDATALEN)
    IF (LOW (XDATALEN)) <> 0
    MOV R6,#(HIGH (XDATALEN)) +1
    ELSE
    MOV R6,#HIGH (XDATALEN)
    ENDIF
    CLR A
    XDATALOOP: MOVX @DPTR,A
    INC DPTR
    DJNZ R7,XDATALOOP
    DJNZ R6,XDATALOOP
    ENDIF

    IF PPAGEENABLE <> 0
    MOV PPAGE_SFR,#PPAGE
    ENDIF

    IF PDATALEN <> 0
    MOV R0,#LOW (PDATASTART)
    MOV R7,#LOW (PDATALEN)
    CLR A
    PDATALOOP: MOVX @R0,A
    INC R0
    DJNZ R7,PDATALOOP
    ENDIF

    IF IBPSTACK <> 0
    EXTRN DATA (?C_IBP)

    MOV ?C_IBP,#LOW IBPSTACKTOP
    ENDIF

    IF XBPSTACK <> 0
    EXTRN DATA (?C_XBP)

    MOV ?C_XBP,#HIGH XBPSTACKTOP
    MOV ?C_XBP+1,#LOW XBPSTACKTOP
    ENDIF

    IF PBPSTACK <> 0
    EXTRN DATA (?C_PBP)
    MOV ?C_PBP,#LOW PBPSTACKTOP
    ENDIF

    MOV SP,#?STACK-1

    ; This code is required if you use L51_BANK.A51 with Banking Mode 4
    ;<h> Code Banking
    ; <q> Select Bank 0 for L51_BANK.A51 Mode 4
    #if 0
    ; <i> Initialize bank mechanism to code bank 0 when using L51_BANK.A51 with Banking Mode 4.
    EXTRN CODE (?B_SWITCH0)
    CALL ?B_SWITCH0 ; init bank mechanism to code bank 0
    #endif
    ;</h>
    LJMP ?C_START


    end










    MAQUET EQU A; ;LUU MA QUET

    UP BIT P1.1
    DOWN BIT P1.0
    RELE BIT P3.7
    BIENDEM EQU R7
    org 0000h
    CALL KHTAOLCD
    CLR RELE
    MOV BIENDEM,#35
    CALL HT_HANG1
    CALL HT_HANG2
    setb p2.0
    call delay1s

    TD:
    mov dptr,#maLCD
    MAIN:
    JNB UP,TANG
    JNB DOWN,GIAM
    call nhietdo1820
    CALL hextobcd ;chuyen so hex-bcd CALL giaima7doan
    CALL SOSANH
    CALL HIENTHI7
    CALL DELAY10MS
    JMP MAIN
    TANG:
    ;JNB MODE,$
    call delay50ms
    call delay50ms
    call delay50ms

    ;CLR RELE
    CALL hextobcd ;chuyen so hex-bcd


    CALL giaima7doan
    CALL HIENTHI7
    INC BIENDEM
    CJNE BIENDEM,#255,MAIN
    MOV BIENDEM,#0
    JMP MAIN
    ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    GIAM:
    ;JNB MODE,$
    call delay50ms
    call delay50ms
    call delay50ms

    ;CLR RELE
    CALL hextobcd ;chuyen so hex-bcd
    CALL giaima7doan
    CALL HIENTHI7
    DEC BIENDEM
    CJNE BIENDEM,#-1,MAIN
    MOV BIENDEM,#255
    JMP MAIN
    ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    SOSANH:
    MOV A,NHIETDO
    SUBB A,BIENDEM
    CJNE A,#2,$+3
    JNC THOAT
    clr RELE

    RET

    THOAT:

    MOV A,BIENDEM
    SUBB A,NHIETDO
    CJNE A,#2,$+3
    JNC THOAT1
    clr RELE
    RET
    THOAT:
    setb RELE
    RET

    ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    ;chuyen so hex 1 byte thap tl0 sang so BCD
    ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    hextobcd: mov a,nhietdo ;chuyen byte thap sang A

    mov b,#10 ;nap 10 vao B
    div ab ;chia byte thap cho 10 lan thu 1

    mov 37h,b ;cat BCD HANG don vi vao o nho
    37H
    mov b,#10
    div ab ;chia lan thu 2
    mov 36h,b ;cat BCD HANG CHUC vao o nho
    36H
    mov 35h,a ;cat BCD HANG TRAM vao o nho
    35H

    mov a,BIENDEM ;chuyen byte thap sang A
    mov b,#10 ;nap 10 vao B
    div ab ;chia byte thap cho 10 lan thu 1

    mov 34h,b ;cat BCD HANG don vi vao o nho 37H
    mov b,#10
    div ab ;chia lan thu 2
    mov 33h,b ;cat BCD HANG CHUC vao o nho 36H
    mov 32h,a
    ret
    ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    ;chuyen so bcd sang ma 7 doan de dkhien led sang
    ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    giaima7doan:
    MOV A,37H ;lay ma bcd hang don vi
    MOVC A,@A+DPTR ;lay ma 7 doan dua vao A
    MOV 27h,A ;cat vao o nho 27h

    MOV A,36H ;lay ma bcd hang chuc
    MOVC A,@a+DPTR ;lay ma 7 doan dua vao A
    MOV 26H,A ;cat vao o nho 21h

    MOV A,35H ;lay ma bcd hang tram
    MOVC a,@A+DPTR ;lay ma 7 doan dua vao A
    MOV 25H,A ;cat vao o nho 22h

    MOV A,34H ;lay ma bcd hang don vi
    MOVC A,@A+DPTR ;lay ma 7 doan dua vao A
    MOV 24h,A ;cat vao o nho 27h

    MOV A,33H ;lay ma bcd hang chuc
    MOVC A,@a+DPTR ;lay ma 7 doan dua vao A
    MOV 23H,A ;cat vao o nho 21h

    MOV A,32H ;lay ma bcd hang tram
    MOVC a,@A+DPTR ;lay ma 7 doan dua vao A
    MOV 22H,A ;cat vao o nho 22h
    RET

    ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxx
    ;CHUONG TRINH CON HIEN THI 2 LED
    ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxx HIENTHI:
    MOV A,#8DH
    CALL KTAO

    MOV A,25H
    MOV BYTEOUT,A
    CALL DATA_BYTE

    MOV A,#8EH
    CALL KTAO
    MOV A,26H
    MOV BYTEOUT,A
    CALL DATA_BYTE

    MOV A,#8FH
    CALL KTAO
    MOV A,27H
    MOV BYTEOUT,A
    CALL DATA_BYTE

    MOV A,#0CDH
    CALL KTAO

    MOV A,22H
    MOV BYTEOUT,A
    CALL DATA_BYTE

    MOV A,#0CEH
    CALL KTAO
    MOV A,23H
    MOV BYTEOUT,A
    CALL DATA_BYTE

    MOV A,#0CFH

    CALL KTAO
    MOV A,24H
    MOV BYTEOUT,A
    CALL DATA_BYTE
    RET
    ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx
    $include(tv_18b20.asm)
    $INCLUDE(TV_LCD20.ASM)
    $INCLUDE(TV_DELAY.ASM)
    ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx
    ; Data bytes
    ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx
    DATAHANG1: DB 'NHIET DO DO: ',099h ;MA 99H LA MA KET THUC HET 1 HANG
    DATAHANG2: DB 'GIA TRI DAT: ',099h
    DATAHANG3:
    DATAHANG4:
    MALCD: DB '0123456789'

    end



    bị lỗi : warning A73: TEXT FOUND BEYOND END STATEMENT - IGNORED

    nếu xoá " end " trên đoạn
    MAQUET EQU A; ;LUU MA QUET thì thành lỗi undefined đoạn dưới

    Các bác giúp e với

Về tác giả

Collapse

tungvietnam Tìm hiểu thêm về tungvietnam

Bài viết mới nhất

Collapse

Đang tải...
X