📄 escort_95.asm
字号:
MOV v_send,#'C'
ACALL SendByte
AJMP _HyperTerDisplay_End
_HyperTerDisplay_4b: CJNE A,#2,_HyperTerDisplay_4c
MOV v_send,#'u'
ACALL SendByte
MOV v_send,#'A'
ACALL SendByte
MOV v_send,#' '
ACALL SendByte
MOV v_send,#'D'
ACALL SendByte
MOV v_send,#'C'
ACALL SendByte
AJMP _HyperTerDisplay_End
_HyperTerDisplay_4c: CJNE A,#3,_HyperTerDisplay_4d
MOV v_send,#'m'
ACALL SendByte
MOV v_send,#'A'
ACALL SendByte
MOV v_send,#' '
ACALL SendByte
MOV v_send,#'A'
ACALL SendByte
MOV v_send,#'C'
ACALL SendByte
AJMP _HyperTerDisplay_End
_HyperTerDisplay_4d: CJNE A,#4,_HyperTerDisplay_4e
MOV v_send,#'m'
ACALL SendByte
MOV v_send,#'A'
ACALL SendByte
MOV v_send,#' '
ACALL SendByte
MOV v_send,#'D'
ACALL SendByte
MOV v_send,#'C'
ACALL SendByte
AJMP _HyperTerDisplay_End
_HyperTerDisplay_4e: CJNE A,#5,_HyperTerDisplay_4f
MOV v_send,#'V'
ACALL SendByte
MOV v_send,#' '
ACALL SendByte
MOV v_send,#'A'
ACALL SendByte
MOV v_send,#'C'
ACALL SendByte
AJMP _HyperTerDisplay_End
_HyperTerDisplay_4f: CJNE A,#6,_HyperTerDisplay_4g
MOV v_send,#'V'
ACALL SendByte
MOV v_send,#' '
ACALL SendByte
MOV v_send,#'D'
ACALL SendByte
MOV v_send,#'C'
ACALL SendByte
AJMP _HyperTerDisplay_End
_HyperTerDisplay_4g: CJNE A,#7,_HyperTerDisplay_4h
MOV v_send,#'m'
ACALL SendByte
MOV v_send,#'V'
ACALL SendByte
MOV v_send,#' '
ACALL SendByte
MOV v_send,#'A'
ACALL SendByte
MOV v_send,#'C'
ACALL SendByte
AJMP _HyperTerDisplay_End
_HyperTerDisplay_4h: CJNE A,#8,_HyperTerDisplay_End
MOV v_send,#'m'
ACALL SendByte
MOV v_send,#'V'
ACALL SendByte
MOV v_send,#' '
ACALL SendByte
MOV v_send,#'D'
ACALL SendByte
MOV v_send,#'C'
ACALL SendByte
AJMP _HyperTerDisplay_End
_HyperTerDisplay_End: MOV v_send,#13
ACALL SendByte
MOV v_send,#10
ACALL SendByte
_HyperTerDisplay_End2: POP 7
POP 6
POP 5
POP 4
POP 3
POP 2
POP 0
POP ACC
RET
; *************************
; ***** Maths Routine *****
; *************************
; Range Routine ( Ver 1.0 , 2003-11-28 )
; * v_in3 , v_in4 = Lower Limit
; v_in5 , v_in6 = Upper Limit
;
; * around 27us
;
; -----------[----------------------]-----------------> Number Line
; Lower Limit Upper Limit
Range:
PUSH ACC
MOV A,v_in1
CJNE A,v_in3,RangeLow
MOV A,v_in2
CJNE A,v_in4,RangeLow
RangeLow: JC RangeOut
MOV A,v_in5
CJNE A,v_in1,RangeHigh
MOV A,v_in6
CJNE A,v_in2,RangeHigh
RangeHigh: JC RangeOut
; Range Pass Function
RangeIn: POP ACC
RET
; Range Fail Function
RangeOut: SETB v_recverr
POP ACC
RET
; **************************
; ***** Serial Routine *****
; **************************
; Send String Routine
SendString:
PUSH ACC
PUSH 0
PUSH 2
MOV A,#0
MOV R2,#2
_SendStringStart:
MOV v_addr,#60H ; Start Address of the Data
MOV v_cnt,#7 ; Number of Data
ACALL SerialInitial
MOV v_send,#255 ; "255,1" = Start
ACALL SendByte
MOV v_send,#1
ACALL SendByte
MOV v_send,#7 ; The third byte = "Number of Data"
ACALL SendByte
MOV R0,v_addr
_SendStringLoop:
CJNE @R0,#255,_SendStringOnce
MOV v_send,@R0 ; If Data = 255 , send twice
ACALL SendByte
_SendStringOnce: MOV v_send,@R0
ACALL SendByte
INC R0
DJNZ v_cnt,_SendStringLoop
MOV v_send,#255 ; "255,2" = End
ACALL SendByte
MOV v_send,#2
ACALL SendByte
ACALL ReceiveByte
MOV A,v_recv
CJNE A,#1,_SendStringError
SJMP _SendStringEnd
_SendStringError: DJNZ R2,_SendStringStart
_SendStringEnd: POP 2
POP 0
POP ACC
RET
; Serial Initial Routine : 9600 8-N-1
SerialInitial:
PUSH ACC
PUSH 0
PUSH 2
CLR IE.3 ; Disable Timer 1 for Timing of Serial
CLR IE.4 ; Disable Serial IRQ when changing the setting
MOV A,TMOD ; Timer 1 Mode 2
SWAP A ;
MOV R0,#2 ;
MOV R2,#00000010B ;
XCHD A,@R0 ;
SWAP A ;
MOV TMOD,A ;
;MOV A,#00000000B ; MOV PCON,#0XXXXXXX
;ANL PCON,A ;
MOV A,#10000000B ; MOV PCON,#0XXXXXXX
ORL PCON,A ;
MOV TH1,#0F3H ; Timer 1 Buad Rate = 9600
MOV TL1,#0F3H ;
SETB TR1 ; Start Timer 0 with no interrupt
MOV SCON,#01010000B ; Serial Mode 1 and Enable REN
CLR TI ; Clear Transmit Indicator
CLR RI ; Clear Receive Indicator
CLR v_ti
CLR v_ri
MOV v_send,#0
MOV v_recv,#02
SETB IE.4
POP 2
POP 0
POP ACC
RET
; Send Sub Routine
SendByte:
SETB v_ti
MOV SBUF,v_send
JB v_ti,$
ACALL Delay50ms
RET
; Receive Sub Routine
ReceiveByte:
CLR v_ri
RET
; SerialIRQ
SerialIRQ:
JB TI,_SerialTransmit ; I don't know is it possible for both TI and RI = 1...
JB RI,_SerialReceive
_SerialTransmit:
CLR TI
CLR v_ti
RETI
_SerialReceive:
CLR RI
SETB v_ri
MOV v_recv,SBUF
RETI
; Serial End
SerialEnd:
CLR IE.4
CLR TR1
RET
; *******************************
; ***** MCU Initial Routine *****
; *******************************
; MCU Initial Routine ,
; 1. Clear RAM from @10H to @7FH
; 2. Initial Port 0 to Port 3
; 3. Initial all MCU Variables
MCUInitial:
MOV A,#0
MOV PSW,#0
MOV R0,#010H
MOV R2,#070H
_MCUInitialLoop: MOV @R0,A
INC R0
DJNZ R2,_MCUInitialLoop
MOV R0,#0
MOV R1,#0
MOV R2,#0
MOV R3,#0
MOV R4,#0
MOV R5,#0
MOV R6,#0
MOV R7,#0
MOV B,#0
MOV P0,#0FFH
MOV P1,#000H
MOV P2,#0FFH
MOV P3,#0FFH
MOV DPTR,#0
MOV PCON,#0
MOV TCON,#0
MOV TMOD,#0
MOV TL0,#0
MOV TL1,#0
MOV TH0,#0
MOV TH1,#0
MOV SCON,#0
MOV IE,#080H
MOV IP,#0
RET
; IRQ Initial Routine
IRQInitial:
MOV IE,#10011111B
NOP
NOP
MOV IE,#10000000B
RET
; RAM Clear Routine
RamClear:
PUSH 0
PUSH 2
MOV R0,#010H ; Clear RAM from 20H to 7FH (60 Bytes RAM)
MOV R2,#070H
_RamClearLoop: MOV @R0,#0
INC R0
DJNZ R2,_RamClearLoop
POP 2
POP 0
RET
; Ext Ram Clear Routine
ExtRamClear:
PUSH ACC
PUSH DPH
PUSH DPL
PUSH 2
PUSH 3
MOV R2,#0
MOV R3,#0
MOV A,#0
MOV DPTR,#0
_ExtRamClearLoop: MOVX @DPTR,A
INC DPTR
DJNZ R2,_ExtRamClearLoop
DJNZ R3,_ExtRamClearLoop
POP 3
POP 2
POP DPL
POP DPH
POP ACC
RET
; *****************************
; ***** Delay Sub-Routine *****
; *****************************
; Delay Routine Loop Structure 1 ( Delay = R2 x 2 Cycles ) :
;
; _DelayLoop1: DJNZ R2,_Delay100msLoop1
;
; Delay Routine Loop Structure 2 ( Delay = R3 x 500 Cycles ) :
;
; _DelayLoop2: DJNZ R2,_DelayLoop2
; NOP
; MOV R2,#248
; DJNZ R3,_DelayLoop2
;
; Delay Routine Loop Structure 3 ( Delay = R4 x 106500 Cycles ) :
;
; _DelayLoop3: DJNZ R2,DelayLoop3
; NOP
; MOV R2,#254
; DJNZ R3,DelayLoop3
; NOP
; MOV R3,#208
; DJNZ R4,DelayLoop3
;
; Delay50ms ( Ver 1.O , 2003-11-28 )
; * Delay = 50ms 0us 0ns , 50000 Cycles
; * Error = 0%
Delay50ms:
PUSH 2
PUSH 3
MOV R2,#248
MOV R3,#99 ; 8
_Delay50msLoop2: DJNZ R2,_Delay50msLoop2
NOP
MOV R2,#248
DJNZ R3,_Delay50msLoop2 ; 500 x R3 = 49500
MOV R2,#242 ; 1
_Delay50msLoop1: DJNZ R2,_Delay50msLoop1 ; 2 x R2 = 484
NOP
POP 3
POP 2
RET ; 7
; Delay100ms ( Ver 1.O , 2003-11-28 )
; * Delay = 100ms 0us 0ns , 100000 Cycles
; * Error = 0%
Delay100ms:
PUSH 2
PUSH 3
MOV R2,#248
MOV R3,#199 ; 8
_Delay100msLoop2: DJNZ R2,_Delay100msLoop2
NOP
MOV R2,#248
DJNZ R3,_Delay100msLoop2 ; 500 x R3 = 99500
MOV R2,#242 ; 1
_Delay100msLoop1: DJNZ R2,_Delay100msLoop1 ; 2 x R2 = 484
NOP
POP 3
POP 2
RET ; 7
; Delay200ms ( Ver 1.O , 2003-11-28 )
; * Delay = 200ms 0us 0ns , 200000 Cycles
; * Error = 0%
Delay200ms:
PUSH 2
PUSH 3
PUSH 4
MOV R2,#254
MOV R3,#208
MOV R4,#1 ; 11
_Delay200msLoop3: DJNZ R2,_Delay200msLoop3
NOP
MOV R2,#254
DJNZ R3,_Delay200msLoop3
NOP
MOV R3,#208
DJNZ R4,_Delay200msLoop3 ; 106500 x R4 = 106500
MOV R2,#248
MOV R3,#186 ; 2
_Delay200msLoop2: DJNZ R2,_Delay200msLoop2
NOP
MOV R2,#248
DJNZ R3,_Delay200msLoop2 ; 500 x R3 = 93000
MOV R2,#239 ; 1
_Delay200msLoop1: DJNZ R2,_Delay200msLoop1 ; 2 x R2 = 478
POP 4
POP 3
POP 2
RET ; 8
; Delay300ms ( Ver 1.O , 2003-11-28 )
; * Delay = 300ms 0us 0ns , 300000 Cycles
; * Error = 0%
Delay300ms:
PUSH 2
PUSH 3
PUSH 4
MOV R2,#254
MOV R3,#208
MOV R4,#2 ; 11
_Delay300msLoop3: DJNZ R2,_Delay300msLoop3
NOP
MOV R2,#254
DJNZ R3,_Delay300msLoop3
NOP
MOV R3,#208
DJNZ R4,_Delay300msLoop3 ; 106500 x R4 = 213000
MOV R2,#248
MOV R3,#173 ; 2
_Delay300msLoop2: DJNZ R2,_Delay300msLoop2
NOP
MOV R2,#248
DJNZ R3,_Delay300msLoop2 ; 500 x R3 = 86500
MOV R2,#239 ; 1
_Delay300msLoop1: DJNZ R2,_Delay300msLoop1 ; 2 x R2 = 478
POP 4
POP 3
POP 2
RET ; 8
; Delay1s ( Ver 1.O , 2003-11-28 )
; * Delay = 1s 0ms 0us 0ns , 1000000 Cycles
; * Error = 0%
Delay1s:
PUSH 2
PUSH 3
PUSH 4
MOV R2,#254
MOV R3,#208
MOV R4,#9 ; 11
_Delay1sLoop3: DJNZ R2,_Delay1sLoop3
NOP
MOV R2,#254
DJNZ R3,_Delay1sLoop3
NOP
MOV R3,#208
DJNZ R4,_Delay1sLoop3 ; 106500 x R4 = 958500
MOV R2,#248
MOV R3,#82 ; 2
_Delay1sLoop2: DJNZ R2,_Delay1sLoop2
NOP
MOV R2,#248
DJNZ R3,_Delay1sLoop2 ; 500 x R3 = 41000
MOV R2,#239 ; 1
_Delay1sLoop1: DJNZ R2,_Delay1sLoop1 ; 2 x R2 = 478
POP 4
POP 3
POP 2
RET ; 8
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -