|
ZT1 EQU 30H ;状态
ZKBH EQU 31H ;占空比高
ZKBL EQU 32H ;占空比低
JSQ EQU 39H ;计数器
ORG 0
GOTO START
ORG 4
;*****************************
PWM BCF 0BH,2
INCF JSQ,1
BTFSC ZT1,0
GOTO PWM1
BSF 05H,5
MOVF JSQ,0
SUBWF ZKBH,0
BTFSC 3,0
RETFIE
BSF ZT1,0
CLRF JSQ
PWM1 BCF 05H,5
MOVF JSQ,0
SUBWF ZKBL,0
BTFSC 3,0
RETFIE
BCF ZT1,0
CLRF JSQ
RETFIE
;*****************************
SZ BCF 0BH,2 ;清中断标志位
BSF 0BH,5 ;开TMR0中断使能
BSF 0BH,7 ;开全体中断允许
CLRF 01H
CLRF ZT1
CLRF JSQ
RETURN
;*****************************
START BSF 03H,5
MOVLW 00H
MOVWF 05H
MOVLW 07H
MOVWF 1FH ;设置A口为数字口
MOVLW 0C1H ;设置计时器参数
MOVWF 01H
BCF 03H,5
CALL SZ
STA MOVLW 80H
MOVWF ZKBH
MOVLW 80H
MOVLW ZKBL
END
;采用了中断设计可以在不影响主程序的情况下控制占空比,频率可以调到2HZ,
;中断现场保护没做,使用时注意!如果使用模块更简单,不说了,但模块的频率
;我试验最低只到50HZ,你自己去进一步试验。 |
|