pic单片机PWM汇编程序.docx

上传人:牧羊曲112 文档编号:3163833 上传时间:2023-03-11 格式:DOCX 页数:11 大小:38.46KB
返回 下载 相关 举报
pic单片机PWM汇编程序.docx_第1页
第1页 / 共11页
pic单片机PWM汇编程序.docx_第2页
第2页 / 共11页
pic单片机PWM汇编程序.docx_第3页
第3页 / 共11页
pic单片机PWM汇编程序.docx_第4页
第4页 / 共11页
pic单片机PWM汇编程序.docx_第5页
第5页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《pic单片机PWM汇编程序.docx》由会员分享,可在线阅读,更多相关《pic单片机PWM汇编程序.docx(11页珍藏版)》请在三一办公上搜索。

1、pic单片机PWM汇编程序本例通过编程,在pic单片机pf18f485的控制下使CCP1模块工作在脉宽调制PWM波形方式下从RC2口上输出分辨率达10位的;PWM波形,波形的占空比可以通过键盘调节,当按下K1键时,输出的PWM波形的占空比为25%,;当按下K2键时,输出的PWM波形的占空比为50%,当按下K3键时,输出的PWM波形的占空;比为75%,当按下K4键时,输出的PWM波形的占空比为100% ,默认输出波形的占空比为50%;为了强调编程技巧,键盘程序采用变位中断方式LIST P=18F458INCLUDE P18F458.INCDEYH EQU 0X20DEYL EQU DEYH+1J

2、IANR EQU DEYH+2 ;存储键值用寄存器ORG 0X00GOTO MAIN ;转向主程序ORG 0X08GOTO INTSERVE ;转向中断服务程序ORG 0X30;*PWM波形产生程序初始化*INITIALCLRF INTCON ;禁止总中断和外围中断BSF INTCON,RBIE ;B口变位中断允许BCF INTCON2,7 ;使弱上拉有效BSF INTCON2,1 ;B口变位中断高优先级BSF RCON,7 ;使能中断优先级MOVLW 0XFFMOVWF PR2 ;设置PWM的工作周期MOVLW 0X7FMOVWF CCPR1L ;默认占空比为50%MOVLW 0X3CMOV

3、WF CCP1CON ;设置CCP1模块为PWM工作方式,且其工作循;环的低2位为11,高8位为01111111=7FMOVLW 0X04MOVWF T2CON ;打开TMR2,且使其前分频为1BCF TRISC,2 ;设置CCP1引脚为输出方式BCF TRISB,1BCF TRISA,3BCF TRISE,0BCF TRISE,1BSF TRISB,4 ;设置与键盘有关的各口的输入输出方式BCF PORTB,1BCF PORTA,3BCF PORTE,0BCF PORTE,1 ;K1,K2,K3,K4四条列线置0,为电平变化;中断的产生创造初始条件 MOVF PORTB,W ;读PORTB端

4、口,建立变位中断的初始条件;(由高到低时中断)RETURN;*键盘去抖子程序(8ms的延时)*KEYDELAYMOVLW 0X0AMOVWF DEYHAGAIN2 MOVLW 0XFFMOVWF DEYLAGAIN1 DECFSZ DEYL,1GOTO AGAIN1DECFSZ DEYH,1GOTO AGAIN2 ;具体程序语句参考3. 2节RETURN ;*键服务子程序*KEYSERVEJIANZHI ;确定键值的子程序BCF PORTB,1 BCF PORTA,3MOVLW 0X03MOVWF PORTE ;K1,K2置低电平,K3,K4置高电平NOPNOP ;使引脚电平稳定BTFSS P

5、ORTB,4GOTO K1K2 ;RB4为0,表示按键为K1,K2中的一个GOTO K3K4 ;RB4为1,表示按键为K3,K4中的一个K1K2 BCF PORTB,1BSF PORTA,3 ;K1置低电平,K2置高电平NOPNOP ;使引脚电平稳定BTFSS PORTB,4GOTO K1 ;RB4为0,表示按键为K1GOTO K2 ;RB4为1,表示按键为K2K3K4 BCF PORTE,0BSF PORTE,1 ;K3置低电平,K4置高电平NOPNOP ;使引脚电平稳定BTFSS PORTB,4GOTO K3 ;RB4为0,表示按键为K3GOTO K4 ;RB4为1,表示按键为K4,以上对

6、键盘进行扫;描,来确定是哪一个键按下K1 MOVLW 0X01MOVWF JIANRGOTO RETK2 MOVLW 0X02MOVWF JIANRBCF PORTA,3GOTO RETK3 MOVLW 0X03MOVWF JIANRGOTO RETK4 MOVLW 0X04MOVWF JIANR ;以上根据按下的键把相应的值送给JIANRBCF PORTE,1 RET NOPRETURN;*确定占空比为25%的子程序*PER25 MOVLW 0X3FMOVWF CCPR1LRETURN;*确定占空比为50%的子程序*PER50 MOVLW 0X7FMOVWF CCPR1LRETURN;*确定

7、占空比为75%的子程序*PER75 MOVLW 0XBFMOVWF CCPR1LRETURN;*确定占空比为100%的子程序*PER100 MOVLW 0XFFMOVWF CCPR1LRETURN;*中断程序(注:由 单片机学习网斑竹ccmcu修改)*INTSERVE NOPBCF INTCON,RBIF ;清除中断标志CALL KEYDELAY ;调用软件延时子程序消抖动MOVF PORTB,W ;读PORTB的值,并同时改变中断发生的条件可;以屏蔽一次无用的中断,又可以防止按键时间;过长发生连续中断BTFSC PORTB,4RETFIE ;判断为干扰,则返回,并可以屏蔽一次无用的;中断CA

8、LL KEYSERVE ;调用键服务子程序,确定键值BCF PORTB,1BCF PORTA,3BCF PORTE,0BCF PORTE,1 ;送低电平至K1,K2,K3,K4,以防止键扫描;时改变K1,K2,K3,K4的电平,从而改变中;断条件 BCF INTCON,RBIF ;键扫描时可能会产生电平变化而使RBIF;置1,再清除一次RBIF以求避免额外中断MOVLW 0X01 ;以下通过判断是哪个键按下从SUBWF JIANR,0 ;而选择PWM波形的不同占空比BTFSC STATUS,ZCALL PER25 ;若是K1按下,则PWM占空比为25%;以下同理MOVLW 0X02SUBWF JIANR,0BTFSC STATUS,ZCALL PER50MOVLW 0X03SUBWF JIANR,0BTFSC STATUS,ZCALL PER75MOVLW 0X04SUBWF JIANR,0BTFSC STATUS,ZCALL PER100RETFIE ;中断返回;*MAIN NOPCALL INITIAL ;初始化BSF INTCON,GIE ;总中断允许HERE GOTO HERE ;等待中断END

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号