;每条指令延时时间:2/4=0.5us
;使用4M晶振.指令为2个时钟周期,指令周期=0.5US.
;---TCC一次计数的时间为:1/(4M/2/8)=4uS---------------;
;----TCC一次中断的时间=250*4=1MS--------------------;
IOCF == 0X0F
IOCE==0X0E
TCIF == 0
C ==0
Z == 2
R4==0X04
R0==0X00
ISR == 0X0F
TCC == 0X1
FSR == 0X04
INDI == 0X0
PC == 0X02
R3 == 0X03
PORT5== 0X05
PORT6== 0X06
A_BUFF == 0X10
R3_BUFF == 0X11
delay0==0x12
delay1==0x13
delay2==0x14
count==0x015
;==========================================================
ORG 0X00
JMP START
ORG 0X08
JMP INTI
INTI:
DISI
MOV A_BUFF,A ;保护现场
SWAP A_BUFF
SWAPA R3
MOV R3_BUFF,A
JBS ISR, TCIF
JMP INT_RET
nop
nop
;-----------------------------------
INT_RET:
MOV A,@6
add TCC,A
BC ISR,0 ;软件清0
SWAPA R3_BUFF ;恢复现场
MOV R3,A
SWAPA A_BUFF
RETI ;中断返回.
;====================================================
START:;**********************************************************************;
; Clear EM78P153S Ram Bank Macro ;
;**********************************************************************;
;初始化
;初始化
MOV A,@0X10
MOV R4,A
ClrLoop:
CLR R0
INC R4
JBC R4,5
JBS R4,4
JMP ClrLoop
;---------------------------------------
;*********初使化程序********************
;=======================================
MOV A,@0X80 ; 开看门狗
IOW 0X0E
MOV A,@0b00000000
IOW PORT6
MOV A,@0X00
IOW PORT5
CLR PORT6
CLR PORT5
MOV A,@0B01000010
CONTW
MOV A,@0X01
IOW 0X0F
MOV A,@6
MOV TCC,A
;==================================================================
; 主程序
;-------------------------------------------
LOOP:
call shoosezhengdong
nop
wdtc
JMP LOOP
;===========================================================
; 信号检测脚
;===========================================================
shoosezhengdong:
bs port6,0
call delay
bs port6,1
call delay
bs port6,2
call delay
bs port6,3
call delay
bs port6,4
call delay
bs port6,5
call delay
bs port6,6
call delay
nop
clr port6
call delay
ret
;==================================================================
DELAY:
mov a,@2
mov delay2,a
aa31:
MOV A, @250 ;40*500US=20MS
MOV delay0, A
aa11:
MOV A, @250 ;250*2US=500US
MOV delay1, A
aa21: ;4*0.5=2US
wdtc
DJZ delay1
JMP aa21 ;JMP指令执行时间为2个指令周期
DJZ delay0
JMP aa11
djz delay2
jmp aa31
nop
RET