GOGOGO高清完整国语,GOGOGO在线观看免费观看完整版高清,GOGOGO免费高清完整,GOGOGO高清在线观看免费视频,GOGOGO日本高清国语完整,GOGOGO免费高清完整版

技術熱線: 4007-888-234

技術支持

PIC單片機PWM實現數字模轉換的方法

更新時間: 2019-03-23

十年專注單片機方案開發的方案公司英銳恩,分享PIC單片機PWM實現數模轉換的方法。英銳恩現提供服務產品涉及主控芯片:8位單片機、16位單片機、32位單片機及各類運算放大器等。

硬件圖:

PIC單片機PWM實現數模轉換方法

源程序:

; PWM port (in w), pin, duty
; Generates a bit stream of 256 1s and 0s with the specified
; duty cycle. If this bit stream is run through a simple RC
; integrator, the result is an analog voltage output of
; (duty/255) * (PIC supply voltage). For example, if duty is
; 100 and the supply is 5 volts, then the integrated output of
; pwm would be (100/255) * 5 = 1.96 volts. In many applications,
; pwm output should be buffered with a unity-gain op-amp
; circuit. In those cases, the pwm output pin should be set up
; as an output when Pwm is called, then immediately switched to
; input when Pwm is done. This prevents the steady-state output
; of the pin from affecting the voltage set by Pwm.

  P = pic16c55
        #include <16c55.inc>   ; processor assembler definitions
        _CONFIG _xt_osc & _wdt_off & _protect_off
        reset start

        org 8
duty Res d'1' ; Pwm duty cycle.
acc Res d'1' ; Pwm accumulator.
index Res d'1' ; Temporary counter for pwm.
pin Res d'1' ; Pin number to pulse (0-7).

; Device data and reset vector

 org 0

; Table to convert pin number (0-7) into bit mask (00000001b to 10000000b).
Pinz         ADDWF pcl                 
             RETLW d'1'                
             RETLW d'2'
             RETLW d'4'
             RETLW d'8'
             RETLW d'16'
             RETLW d'32'
             RETLW d'64'
             RETLW d'128'

start        MOVLW d'0'                 ; All outputs.
             TRIS 5h
             CLRF 5h                    ; Start with LED off.
             CLRF duty                  ; Initial brightness = 0.
             CLRF index                 ; Clear loop counter for pwm.
start_loop   MOVLW d'2'                 ; Pin 2.
             MOVWF pin

 MOVLW d'0'                 ; of port ra.
             CALL pwm                   ; Send pwm to LED.
             INCF duty                  ; Turn up brightness.
             GOTO start_loop            ; Endless loop
; Upon entry, the desired pin must already be set up as an output.
; Variable "pin" contains the pin number (0-7). The w register contains a
; number representing the output port (0-2) for RA through RC. The variable
; duty contains the desired duty cycle from 0 to 255.

Pwm          MOVWF fsr                  ; Point to the port number.
             MOVLW 5h                   ; Add offset for port RA.
             ADDWF fsr
             MOVF pin,w                
             CALL Pinz                  ; Get bit mask from the table.
             MOVWF pin                  ; Put the mask into pin.
Pwm_loop     MOVF duty,w                ; Let acc = acc + duty
             ADDWF acc

             MOVF pin,w                
             BTFSC status,c             ; IF carry THEN pin = 1
             IORWF indirect             ; ELSE pin = 0.
             COMF pin,w                
             BTFSS status,c            
             ANDWF indirect             

    DECFSZ index               ; Repeat 256 times.
             GOTO Pwm_loop
             RETLW 0h                  

            
            
             end

404
返回首頁 |  返回上一頁
欢迎光临: 曲周县| 舟曲县| 永昌县| 新干县| 胶南市| 盐城市| 青浦区| 顺昌县| 泸定县| 汝南县| 调兵山市| 芮城县| 扎囊县| 浦北县| 青田县| 普洱| 贵港市| 原平市| 偃师市| 大厂| 湖口县| 定南县| 盐边县| 黄陵县| 抚州市| 博白县| 东乡族自治县| 钟山县| 普洱| 珲春市| 巴楚县| 江西省| 墨脱县| 阿鲁科尔沁旗| 论坛| 淳安县| 凤庆县| 黑河市| 安化县| 新余市| 罗山县|