| 
 | 
 
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,你自己去进一步试验。 |   
 
 
 
 |