ORG 0FFF6H ;T0中断入 DW TM0_CLOCK
ORG 0FFFEH ;复位
DW RESET
;*********************************
; 复位
;*************************************
ORG 0E000H
RESET: DI
LDM CKCTLR,#03EH
LDM WDTR,#0FFH
LDX #0
LDA #0
RAM_CLR: STA {X}+
CMPX #0C0H
BNE RAM_CLR
LDX #0BFH
TXSP
;******************************************
; INITIAL
;******************************
INITIAL: LDM WDTR,#0FFH
LDM T0,#0c3h ;100ms
LDM TM0,#1bH ;2048/fin,512us
LDM TM2,#1eH ;EC1
LDM RA,#0
LDM RAIO,#0000_0000b
LDM RAFUNC,#0000_0000b
LDM RB,#0
LDM RBIO,#0000_0000b
LDM RBFUNC,#0100_0000b ;ec1
LDM RC,##0000_1000b
LDM RCIO,#0011_1000b
LDM RD,#0
LDM RDIO,#0000_0000b
LDM RDFUNC,#0000_0000b
ldm ieds,#0 ;io口
LDM IENH,#020H ;开TM0中断
LDM IENL,#0
EI
;***********************************
;定时器0中断
;*****************************************
TM0_CLOCK: PUSH A
PUSH X
PUSH Y
ei
bbs biaozhi.wei,loop
set1 biaozhi.wei
set1 TM2.0 ;TM2清0开始计数
nop
jmp next1
loop: clr1 biaozhi.wei
clr1 TM2.0 ;TM2停止计数
nop
nop
lda t2 ;计数值送A
sta 30h ;A-> 30H
NEXT1: POP Y
POP X
POP A
RETI