AT89C2051(12M晶振)輸出脈沖8.33KHZ(120.048US)
K0 BIT P3.2 ;-
K1 BIT P3.3 ;+
LED BIT P1.4 ;指示燈閃爍
OUTH BIT P3.7;充電端口輸出
OUTL BIT P3.5;放電端口輸出
THHM EQU 3FH ;3字節定時器寄存器
ORG 00H
LJMP START
ORG 03H
LJMP INT_0
ORG 0BH
LJMP T0_0
ORG 13H
LJMP INT_1
ORG 50H
;===============主程序=========================
START:
SETB OUTH ;反相輸出
CLR OUTL ;靜止狀態
CLR LED
MOV 30H,#250 ;120us*250*25=0.75S
MOV 31H,#25 ;
MOV 32H,#48 ;
MOV TMOD,#00000001B ;T
MOV TL0,#LOW(65536-50000) ;50m
MOV TH0,#HIGH(65536-50000) ;
MOV IE, #10000111B
MOV TCON,#00000101B
MOV IP, #00000101B
MIAN:
SETB OUTH
CLR OUTL ;靜止狀態
MOV 6FH,#20
DJNZ 6FH,$
CLR OUTH
CLR OUTL ;充電狀態
MOV 6FH,#15
DJNZ 6FH,$
SETB OUTH
CLR OUTL ;靜止狀態
MOV 6FH,#20 ;
DJNZ 6FH,$
SETB OUTH
SETB OUTL ;放電狀態
MOV 6FH,#5 ;10us
DJNZ 6FH,$
DJNZ 30H,MIAN
DJNZ 31H,MIAN
JB P3.6,SSST ;
CPL LED
MOV 30H,#250 ;120us*250*25=1.5S周期閃爍
MOV 31H,#50 ;
JMP MIAN
SSST:
CPL LED
MOV 30H,#250 ;120us*250*10=0.3S周期閃爍
MOV 31H,#10 ;
JMP MIAN
;=======================INT0===================================
INT_0:
PUSH ACC
PUSH PSW
SETB OUTH
CLR OUTL
LCALL DELAY10ms
JB K0,INT_0EN
JNB K0,$
LCALL DELAY10ms
JNB K0,$
CLR C
INC 33H
MOV A,33H
CJNE A,#05,INT_00
INT_00:
JC INT_0EN
MOV 33H,#01
INT_0EN:
POP PSW
POP ACC
; SETB EA
RETI
;=======================INT1ÖD¶Ï================================
;
;===============================================================
INT_1:
PUSH ACC
PUSH PSW
INT_1EN:
POP PSW
POP ACC
RETI
;=====================================================
T0_0:
PUSH ACC
PUSH PSW
DJNZ 30H,T0_0EN
MOV 30H,#200
DJNZ 31H,T0_0EN
MOV 31H,#180
DJNZ 32H,T0_0EN
MOV 32H,#48
DJNZ 33H,T0_0EN
MOV 33H,#5
T0_0EN:
MOV TL0,#LOW(65536-50000) ;50m¶¨ê±
MOV TH0,#HIGH(65536-50000) ;
POP PSW
POP ACC
RETI
;-------6FH確定延時程序-----------
DELAY_6FHus:
DJNZ 6FH,$
RET
;---------10ms延時--------------
DELAY10ms:
MOV 6EH,#10
DLY3:
MOV 6FH,#248
DJNZ 6FH,$
DJNZ 6EH,DLY3
RET
;========================================================
END
|