改变PWM输出波占空比程序.doc_第1页
改变PWM输出波占空比程序.doc_第2页
改变PWM输出波占空比程序.doc_第3页
改变PWM输出波占空比程序.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

;本例通过编程,使ccp1模块工作在脉宽调制pwm方式下从rc2口上输出分辨率达10位的;pwm波形,波形的占空比可以通过键盘调节,当按下k1键时,输出的pwm波形的占空比为25%,;当按下k2键时,输出的pwm波形的占空比为50%,当按下k3键时,输出的pwm波形的占空;比为75%,当按下k4键时,输出的pwm波形的占空比为100% ,默认输出波形的占空比为50%;为了强调编程技巧,键盘程序采用变位中断方式listp=18f458 includep18f458.incdeyhequ0x20deylequdeyh+1jianrequdeyh+2;存储键值用寄存器org0x00gotomain;转向主程序org0x08gotointserve;转向中断服务程序org0x30;*初始化子程序*initialclrfintcon ;禁止总中断和外围中断bsfintcon,rbie ;b口变位中断允许 bcfintcon2,7;使弱上拉有效bsfintcon2,1;b口变位中断高优先级bsfrcon,7;使能中断优先级movlw0xffmovwfpr2;设置pwm的工作周期movlw0x7fmovwfccpr1l;默认占空比为50%movlw0x3cmovwfccp1con ;设置ccp1模块为pwm工作方式,且其工作循;环的低2位为11,高8位为01111111=7fmovlw0x04movwft2con ;打开tmr2,且使其前分频为1bcftrisc,2;设置ccp1引脚为输出方式bcftrisb,1bcftrisa,3bcftrise,0bcftrise,1bsftrisb,4 ;设置与键盘有关的各口的输入输出方式bcfportb,1bcfporta,3bcfporte,0bcfporte,1;k1,k2,k3,k4四条列线置0,为电平变化;中断的产生创造初始条件movfportb,w ;读portb端口,建立变位中断的初始条件;(由高到低时中断)return;*键盘去抖子程序(8ms的延时)*keydelaymovlw0x0amovwfdeyhagain2movlw0xff movwfdeylagain1decfszdeyl,1 gotoagain1 decfszdeyh,1 gotoagain2;具体程序语句参考3. 2节return;*键服务子程序*keyservejianzhi;确定键值的子程序bcfportb,1bcfporta,3movlw0x03movwfporte;k1,k2置低电平,k3,k4置高电平nopnop;使引脚电平稳定btfssportb,4gotok1k2 ;rb4为0,表示按键为k1,k2中的一个gotok3k4 ;rb4为1,表示按键为k3,k4中的一个k1k2bcfportb,1bsfporta,3;k1置低电平,k2置高电平nopnop;使引脚电平稳定btfssportb,4gotok1 ;rb4为0,表示按键为k1gotok2 ;rb4为1,表示按键为k2k3k4bcfporte,0bsfporte,1;k3置低电平,k4置高电平nopnop;使引脚电平稳定btfssportb,4gotok3 ;rb4为0,表示按键为k3gotok4 ;rb4为1,表示按键为k4,以上对键盘进行扫;描,来确定是哪一个键按下k1movlw0x01movwfjianrgotoretk2movlw0x02movwfjianrbcfporta,3gotoretk3movlw0x03movwfjianrgotoretk4movlw0x04movwfjianr ;以上根据按下的键把相应的值送给jianrbcfporte,1retnopreturn;*确定占空比为25%的子程序*per25movlw0x3fmovwfccpr1lreturn;*确定占空比为50%的子程序*per50movlw0x7fmovwfccpr1lreturn;*确定占空比为75%的子程序*per75movlw0xbfmovwfccpr1lreturn;*确定占空比为100%的子程序*per100movlw0xffmovwfccpr1lreturn;*中断服务子程序*intservenopbcf intcon,rbif;清除中断标志callkeydelay ;调用软件延时子程序消抖动movfportb,w ;读portb的值,并同时改变中断发生的条件可;以屏蔽一次无用的中断,又可以防止按键时间;过长发生连续中断btfscportb,4retfie ;判断为干扰,则返回,并可以屏蔽一次无用的;中断callkeyserve ;调用键服务子程序,确定键值bcfportb,1bcfporta,3bcfporte,0bcfporte,1 ;送低电平至k1,k2,k3,k4,以防止键扫描;时改变k1,k2,k3,k4的电平,从而改变中;断条件bcfintcon,rbif;键扫描时可能会产生电平变化而使rbif;置1,再清除一次rbif以求避免额外中断movlw0x01;以下通过判断是哪个键按下从subwfjianr,0;而选择pwm波形的不同占空比btfscstatus,zcallper25 ;若是k1按下,则pwm占空比为25% ;以下同理movlw0x02subwfjianr,0btfscstatus,zcallper50movlw0x03subwfjianr,0btfscstatus,zcallper75

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论