;每條指令延時時間:2/4=0.5us
;使用4M晶振.指令為2個時鐘周期,指令周期=0.5US.
;---TCC一次計數(shù)的時間為: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 ;保護(hù)現(xiàn)場
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 ;恢復(fù)現(xiàn)場
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指令執(zhí)行時間為2個指令周期
DJZ delay0
JMP aa11
djz delay2
jmp aa31
nop
RET