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
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