⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 16f630pwm.asm

📁 本程序是采用改变PWM波脉宽方式实现调光
💻 ASM
字号:
 ;用TMR0实现PWM试验程序 *** 
 ;RC7输出PWM,RC0 RC1输入 *** 
 ;********************************* 
 LIST P=16F630 
 include<p16f630.inc>
 __CONFIG 0x3194
  
 Y1 EQU 20H 
 Y2 EQU 21H 
 QQ EQU 22H
  
 ORG 0000H 
 NOP 
 GOTO MAIN
 ORG 004H ;中断入口 
 ;*********中断服务程序*************** 
 MOVF QQ,W ;如果QQ到255 
 XORLW .255 ;则跳至_GO,不 
 BTFSC STATUS,Z ;再加一操作 
 GOTO _GO 
 BTFSC PORTC,0 ;脉宽增检测 
 GOTO _GO 
 INCF QQ,F 
_GO 
 MOVF QQ,W 
 XORLW 01H ;如果QQ到1 
 BTFSC STATUS,Z ;则跳至FIE,不 
 GOTO FIE ;再减一操作 
 BTFSS PORTC,1 ;脉宽减检测 
 DECF QQ,F 
FIE ; 
 BTFSS INTCON,T0IF ;检测是否是TMR0溢出 
 RETFIE ;否,则返回 
 BCF INTCON,T0IF ;是,马上清标志位 
 BSF PORTC,2 ;脉宽调整 
 MOVF QQ,W 
 CALL DELAY ;RB1 一开一关, 
 BCF PORTC,2 ;形成高电平占空比 
 RETFIE 
 ;**********主程序******************* 
 MAIN 
  BSF STATUS,RP0 
  MOVLW B'00000100' ;设TMR0为定时器 
  MOVWF OPTION_REG ;分频比为1:32 
  BCF TRISC,2 ;设RC7输出 
  BSF TRISC,1 ;设RC0输入 
  BSF TRISC,0 ;设RC1输入 
  BCF STATUS,RP0 
  BSF INTCON,GIE ;INTCON在4个体均能寻址 
  BSF INTCON,T0IE 
  BCF INTCON,T0IF ;清标志位 
  MOVLW 00H 
  MOVWF TMR0 ;启动TMR0 
  CLRF QQ ;清QQ 
 LOOP
  NOP ;在此循环等TMR0溢出 
  GOTO LOOP ;则转到中断服务程序 
 ;*******高电平延时子程序************** 
 DELAY 
  MOVWF Y1 
 M2 
  MOVLW 0AH 
  MOVWF Y2 
 M1 
  DECFSZ Y2 
  GOTO M1 
  DECFSZ Y1 
  GOTO M2 
  RETURN 
  ;*********************************** 
 END 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -