<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC單片機(jī)PWM波形產(chǎn)生程序

          PIC單片機(jī)PWM波形產(chǎn)生程序

          作者: 時(shí)間:2012-12-31 來(lái)源:網(wǎng)絡(luò) 收藏

          ;本例通過(guò)編程,在pic單片機(jī)的控制下使CCP1模塊工作在脈寬調(diào)制方式下從RC2口上輸出分辨率達(dá)10位的

          ;,波形的占空比可以通過(guò)鍵盤調(diào)節(jié),當(dāng)按下K1鍵時(shí),輸出的的占空比為25%,
          ;當(dāng)按下K2鍵時(shí),輸出的PWM波形的占空比為50%,當(dāng)按下K3鍵時(shí),輸出的PWM波形的占空
          ;比為75%,當(dāng)按下K4鍵時(shí),輸出的PWM波形的占空比為100% ,默認(rèn)輸出波形的占空比為50%
          ;為了強(qiáng)調(diào)編程技巧,鍵盤程序采用變位中斷方式
          LIST P=18F458
          INCLUDE "P18F458.INC"
          DEYH EQU 0X20
          DEYL EQU DEYH+1
          JIANR EQU DEYH+2 ;存儲(chǔ)鍵值用寄存器
          ORG 0X00
          GOTO MAIN ;轉(zhuǎn)向主程序
          ORG 0X08
          GOTO INTSERVE ;轉(zhuǎn)向中斷服務(wù)程序
          ORG 0X30
          ;***************PWM波形產(chǎn)生程序初始化******************
          INITIAL
          CLRF INTCON ;禁止總中斷和外圍中斷
          BSF INTCON,RBIE ;B口變位中斷允許
          BCF INTCON2,7 ;使弱上拉有效
          BSF INTCON2,1 ;B口變位中斷高優(yōu)先級(jí)
          BSF RCON,7 ;使能中斷優(yōu)先級(jí)
          MOVLW 0XFF
          MOVWF PR2 ;設(shè)置PWM的工作周期
          MOVLW 0X7F
          MOVWF CCPR1L ;默認(rèn)占空比為50%
          MOVLW 0X3C
          MOVWF CCP1CON ;設(shè)置CCP1模塊為PWM工作方式,且其工作循
          ;環(huán)的低2位為11,高8位為01111111=7F
          MOVLW 0X04
          MOVWF T2CON ;打開TMR2,且使其前分頻為1
          BCF TRISC,2 ;設(shè)置CCP1引腳為輸出方式
          BCF TRISB,1
          BCF TRISA,3
          BCF TRISE,0
          BCF TRISE,1
          BSF TRISB,4 ;設(shè)置與鍵盤有關(guān)的各口的輸入輸出方式
          BCF PORTB,1
          BCF PORTA,3
          BCF PORTE,0
          BCF PORTE,1 ;K1,K2,K3,K4四條列線置0,為電平變化
          ;中斷的產(chǎn)生創(chuàng)造初始條件
          MOVF PORTB,W ;讀PORTB端口,建立變位中斷的初始條件
          ;(由高到低時(shí)中斷)
          RETURN
          ;*********鍵盤去抖子程序(8ms的延時(shí))******************
          KEYDELAY
          MOVLW 0X0A
          MOVWF DEYH
          AGAIN2 MOVLW 0XFF
          MOVWF DEYL
          AGAIN1 DECFSZ DEYL,1
          GOTO AGAIN1
          DECFSZ DEYH,1
          GOTO AGAIN2 ;具體程序語(yǔ)句參考3. 2節(jié)
          RETURN
          ;***************鍵服務(wù)子程序******************
          KEYSERVE
          JIANZHI ;確定鍵值的子程序
          BCF PORTB,1
          BCF PORTA,3
          MOVLW 0X03
          MOVWF PORTE ;K1,K2置低電平,K3,K4置高電平
          NOP
          NOP ;使引腳電平穩(wěn)定
          BTFSS PORTB,4
          GOTO K1K2 ;RB4為0,表示按鍵為K1,K2中的一個(gè)
          GOTO K3K4 ;RB4為1,表示按鍵為K3,K4中的一個(gè)
          K1K2 BCF PORTB,1
          BSF PORTA,3 ;K1置低電平,K2置高電平
          NOP
          NOP ;使引腳電平穩(wěn)定
          BTFSS PORTB,4
          GOTO K1 ;RB4為0,表示按鍵為K1
          GOTO K2 ;RB4為1,表示按鍵為K2
          K3K4 BCF PORTE,0
          BSF PORTE,1 ;K3置低電平,K4置高電平
          NOP
          NOP ;使引腳電平穩(wěn)定
          BTFSS PORTB,4
          GOTO K3 ;RB4為0,表示按鍵為K3
          GOTO K4 ;RB4為1,表示按鍵為K4,以上對(duì)鍵盤進(jìn)行掃
          ;描,來(lái)確定是哪一個(gè)鍵按下
          K1 MOVLW 0X01
          MOVWF JIANR
          GOTO RET
          K2 MOVLW 0X02
          MOVWF JIANR
          BCF PORTA,3
          GOTO RET
          K3 MOVLW 0X03
          MOVWF JIANR
          GOTO RET
          K4 MOVLW 0X04
          MOVWF JIANR ;以上根據(jù)按下的鍵把相應(yīng)的值送給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
          ;**************中斷程序(注:由http://www.51hei.com 單片機(jī)學(xué)習(xí)網(wǎng)斑竹ccmcu修改)***************
          INTSERVE NOP
          BCF INTCON,RBIF ;清除中斷標(biāo)志
          CALL KEYDELAY ;調(diào)用軟件延時(shí)子程序消抖動(dòng)
          MOVF PORTB,W ;讀PORTB的值,并同時(shí)改變中斷發(fā)生的條件可
          ;以屏蔽一次無(wú)用的中斷,又可以防止按鍵時(shí)間
          ;過(guò)長(zhǎng)發(fā)生連續(xù)中斷
          BTFSC PORTB,4
          RETFIE ;判斷為干擾,則返回,并可以屏蔽一次無(wú)用的
          ;中斷
          CALL KEYSERVE ;調(diào)用鍵服務(wù)子程序,確定鍵值
          BCF PORTB,1
          BCF PORTA,3
          BCF PORTE,0
          BCF PORTE,1 ;送低電平至K1,K2,K3,K4,以防止鍵掃描
          ;時(shí)改變K1,K2,K3,K4的電平,從而改變中
          ;斷條件
          BCF INTCON,RBIF ;鍵掃描時(shí)可能會(huì)產(chǎn)生"電平變化"而使RBIF
          ;置1,再清除一次RBIF以求避免額外中斷
          MOVLW 0X01 ;以下通過(guò)判斷是哪個(gè)鍵按下從
          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相關(guān)文章:pwm是什么


          單片機(jī)相關(guān)文章:單片機(jī)教程


          單片機(jī)相關(guān)文章:單片機(jī)視頻教程


          單片機(jī)相關(guān)文章:單片機(jī)工作原理


          pwm相關(guān)文章:pwm原理


          脈寬調(diào)制相關(guān)文章:脈寬調(diào)制原理


          關(guān)鍵詞: PIC單片機(jī) PWM波形 pf18f485

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();