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
|