原理图:
仿真图
采用time0产生pwm波,int0中断记录外部脉冲,time1计时1秒定时
以下是程序:
K1 EQU P1.0 ;¼ó
K2 EQU P1.1 ;¼õ
ORG 0000H
AJMP MAIN
ORG 0040H
MAIN:
MOV SP,#60H
MOV R1,#3 ;3õê¼Õ¼¿Õ±è50%
MOV R2,#4
MOV R3,#0
MOV TH0,#0FFH
MOV TL0,#9CH
MOV TH1,#3CH
MOV TL1,#0B0H
MOV TMOD,#11H
MOV IE,#8FH
SETB IT0
SETB IT1
SETB TR0
SETB TR1
LOOP:
MOV A,R1
JB K2,S1
CALL DELAY
JB K2,S1
CJNE A,#9,PWMINC
CALL LED
SJMP LOOP
PWMINC:
INC R1
SJMP LOOP
S1:
JB K1,S2
CALL DELAY
JB K1,S2
CJNE A,#1,PWMDEC
CALL LED
SJMP LOOP
PWMDEC:
DEC R1
S2: SJMP LOOP
;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 000BH
AJMP TIME0
ORG 0100H
TIME0:
MOV A,#9
SUBB A,R2
JNC DONE
INC R2
SJMP LOOP1
DONE: MOV R2,#1
LOOP1: CLR C
MOV A,R2
SUBB A,R1
JNC LOOP2
SETB P1.6
SJMP OUT1
LOOP2: CLR P1.6
OUT1: RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 0003H
LJMP IN0
ORG 1000H
IN0:
INC R3
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LED:
CPL P1.2
RET
DELAY:
MOV R7,#100
DE: MOV R6,#100
DJNZ R6,$
DJNZ R7,DE
RET
END
|