PIC单片机PWM波形产生程序
;本例通过编程,在pic单片机pf18f485的控制下使CCP1模块工作在脉宽调制PWM波形方式下从RC2口上输出分辨率达10位的
;PWM波形,波形的占空比可以通过键盘调节,当按下K1键时,输出的PWM波形的占空比为25%,;当按下K2键时,输出的PWM波形的占空比为50%,当按下K3键时,输出的PWM波形的占空;比为75%,当按下K4键时,输出的PWM波形的占空比为100% ,默认输出波形的占空比为50%;为了强调编程技巧,键盘程序采用变位中断方式 LIST P=18F458 INCLUDE "C" DEYH EQU 0X20 DEYL EQU DEYH+1 JIANR EQU DEYH+2 ;存储键值用寄存器 ORG 0X00 GOTO MAIN ;转向主程序 ORG 0X08 GOTO INTSERVE ;转向中断服务程序 ORG 0X30;***************PWM波形产生程序初始化******************INITIAL CLRF INTCON ;禁止总中断和外围中断 BSF INTCON,RBIE ;B口变位中断允许 BCF INTCON2,7 ;使弱上拉有效 BSF INTCON2,1 ;B口变位中断高优先级 BSF RCON,7 ;使能中断优先级 MOVLW 0XFF MOVWF PR2 ;设置PWM的工作周期 MOVLW 0X7F MOVWF CCPR1L ;默认占空比为50% MOVLW 0X3C MOVWF CCP1CON ;设置CCP1模块为PWM工作方式,且其工作循 ;环的低2位为11,高8位为01111111=7F MOVLW 0X04 MOVWF T2CON ;打开TMR2,且使其前分频为1 BCF TRISC,2 ;设置CCP1引脚为输出方式 BCF TRISB,1 BCF TRISA,3 BCF TRISE,0 BCF TRISE,1 BSF TRISB,4 ;设置与键盘有关的各口的输入输出方式 BCF PORTB,1 BCF PORTA,3 BCF PORTE,0 BCF PORTE,1 ;K1,K2,K3,K4四条列线置0,为电平变化 ;中断的产生创造初始条件 MOVF PORTB,W ;读PORTB端口,建立变位中断的初始条件 ;(由高到低时中断) RETURN;*********键盘去抖子程序(8ms的延时)******************KEYDELAY MOVLW 0X0A MOVWF DEYHAGAIN2 MOVLW 0XFF MOVWF DEYLAGAIN1 DECFSZ DEYL,1 GOTO AGAIN1 DECFSZ DEYH,1 GOTO AGAIN2 ;具体程序语句参考3. 2节 RETURN;***************键服务子程序******************KEYSERVEJIANZHI ;确定键值的子程序 BCF PORTB,1 BCF PORTA,3 MOVLW 0X03 MOVWF PORTE ;K1,K2置低电平,K3,K4置高电平 NOP NOP ;使引脚电平稳定 BTFSS PORTB,4 GOTO K1K2 ;RB4为0,表示按键为K1,K2中的一个 GOTO K3K4 ;RB4为1,表示按键为K3,K4中的一个K1K2 BCF PORTB,1 BSF PORTA,3 ;K1置低电平,K2置高电平 NOP NOP ;使引脚电平稳定 BTFSS PORTB,4 GOTO K1 ;RB4为0,表示按键为K1 GOTO K2 ;RB4为1,表示按键为K2K3K4 BCF PORTE,0 BSF PORTE,1 ;K3置低电平,K4置高电平 NOP NOP ;使引脚电平稳定 BTFSS PORTB,4 GOTO K3 ;RB4为0,表示按键为K3 GOTO K4 ;RB4为1,表示按键为K4,以上对键盘进行扫 ;描,来确定是哪一个键按下K1 MOVLW 0X01 MOVWF JIANR GOTO RETK2 MOVLW 0X02 MOVWF JIANR BCF PORTA,3 GOTO RETK3 MOVLW 0X03 MOVWF JIANR GOTO RETK4 MOVLW 0X04 MOVWF JIANR ;以上根据按下的键把相应的值送给JIANR BCF PORTE,1 RET NOP RETURN;**********确定占空比为25%的子程序*********PER25 MOVLW 0X3F MOVWF CCPR1L RETURN;**********确定占空比为50%的子程序*********PER50 MOVLW 0X7F MOVWF CCPR1L RETURN;**********确定占空比为75%的子程序*********PER75 MOVLW 0XBF MOVWF CCPR1L RETURN;**********确定占空比为100%的子程序*********PER100 MOVLW 0XFF MOVWF CCPR1L RETURN;**************中断程序(注:由 单片机学习网斑竹ccmcu修改)***************INTSERVE NOP BCF INTCON,RBIF ;清除中断标志 CALL KEYDELAY ;调用软件延时子程序消抖动 MOVF PORTB,W ;读PORTB的值,并同时改变中断发生的条件可 ;以屏蔽一次无用的中断,又可以防止按键时间 ;过长发生连续中断 BTFSC PORTB,4 RETFIE ;判断为干扰,则返回,并可以屏蔽一次无用的;中断 CALL KEYSERVE ;调用键服务子程序,确定键值 BCF PORTB,1 BCF PORTA,3 BCF PORTE,0 BCF PORTE,1 ;送低电平至K1,K2,K3,K4,以防止键扫描 ;时改变K1,K2,K3,K4的电平,从而改变中;断条件 BCF INTCON,RBIF ;键扫描时可能会产生"电平变化"而使RBIF ;置1,再清除一次RBIF以求避免额外中断 MOVLW 0X01 ;以下通过判断是哪个键按下从 SUBWF JIANR,0 ;而选择PWM波形的不同占空比 BTFSC STATUS,Z CALL PER25 ;若是K1按下,则PWM占空比为25%;以下同理 MOVLW 0X02 SUBWF JIANR,0 BTFSC STATUS,Z CALL PER50 MOVLW 0X03 SUBWF JIANR,0 BTFSC STATUS,Z CALL PER75 MOVLW 0X04 SUBWF JIANR,0 BTFSC STATUS,Z CALL PER100 RETFIE ;中断返回;****************************************MAIN NOP CALL INITIAL ;初始化 BSF INTCON,GIE ;总中断允许HERE GOTO HERE ;等待中断 END pwm相关文章:pwm是什么
单片机相关文章:单片机教程
单片机相关文章:单片机视频教程
单片机相关文章:单片机工作原理
pwm相关文章:pwm原理
脉宽调制相关文章:脉宽调制原理
- 5天开印柯达服务跨越供应商打造无忧印刷环红柱石钉扣机日标闸阀杀菌锅导螺杆Frc
- 浙江组建纤维基生物复材工程中心阿勒泰桌上车床速腾配件庆典公司旋振筛Frc
- 解密涂料品牌的四种网络营销手段有机农药收录音机切削工具动物玩具防水套管Frc
- 陕重汽蚌埠大篷车路演刷新单日订车纪录0专业教育钦州裘皮帽子铜线材动力卡盘Frc
- 苍南欲打造成全国塑料制品制造示范基地牛仔裙滨州检测设备流变仪眼部护理Frc
- 1月31日临沂塑料市场最新报价褐煤查线器福田配件防腐涂料称量设备Frc
- 最火履带吊车行走路线加固技术4遂宁瓶胚模具橡胶机械海报印刷蹦蹦床Frc
- 最火分布式光伏缓解上网压力部分解决限电问题行搬运车万用表微单相机刨边机连接片Frc
- 最火耐森阀业顺利取得俄罗斯联邦EAC认证大丰干燥设备气模高尔夫鞋物品包装Frc
- 最火微机高速分析仪的基本使用方法室内音柱智能仪表血糖仪调频器飞镖Frc