picbasic PWM led dimmer nasıl yapılıyor?

Başlatan veliusta, 23 Nisan 2012, 14:15:46

veliusta

Gerekli Açıklamayı Resimde Yaptım.Uzman Kişilerin Yardımlarını Beklemekteyim.

Resim Açılmaz ise Alternatif : http://img55.resimup.net/di/512Q.png ???

AB ELEKTRONİK

'****************************************************************
'*  Name    : PWM-TMR0.BAS                                      *
'*  Author  : [AB ELEKTRONİK]                                   *
'*  Notice  : Copyright (c) 2014 [0 506 500 47 47]              *
'*          : All Rights Reserved                               *
'*  Date    : 3/2/2014                                          *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
define osc 4
PORTA=0:portb=0
TRISB=%00000000   '
TRISA=%00000111  '
'-----------------------------------------------------------------
@ DEVICE pic16F628                      'işlemci 16F628                               
@ DEVICE pic16F628, WDT_OFF                 'Watch Dog timer kapalı
@ DEVICE pic16F628, PWRT_OFF               'Power on timer açık
@ DEVICE pic16F628, PROTECT_OFF          'Kod Koruma kapalı
@ DEVICE pic16F628, MCLR_off               'MCLR pini kullanılmıyor.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak
'-----------------------------------------------------------------
'-------------------------------------------------------------------------
DEFINE CCP1_REG PORTB 'Hpwm 1 pin port
'DEFINE CCP1_BIT 2 'Hpwm 1 pin bit
'DEFINE CCP2_REG PORTC 'Hpwm 2 pin port
'DEFINE CCP2_BIT 1 'Hpwm 2 pin bit



CMCON=7    '16F628 de komparatör pinleri iptal hepsi giriş çıkış
'----------------------------------------------------------------------------
R  var byte
I  var byte

BASLA:

    PAUSE 500
    IF PORTA.2=0 THEN
     WHILE (PORTA.2 = 0)
     WEND
     R = 250
     GOTO AB 
    ENDIF

GOTO BASLA
       
AB:
     
     IF PORTA.2=0 THEN
     WHILE (PORTA.2 = 0)
     WEND
     R=0                     'KAPATMAK BÖLÜMÜ
'     HPWM PORTB.3,R,2
     PORTB.3 = 0
     GOTO BASLA 
    ENDIF
   
   
      IF PORTA.1=0 THEN
         R=R+1:IF R>250 THEN R=250       'ARTIRMA BÖLÜMÜ
         GOSUB DELAY
      ENDIF   
     
         
      IF PORTA.0=0 THEN
         R=R-1:IF R=255 THEN R=0        'EKSİLTME BÖLÜMÜ
         GOSUB DELAY
      ENDIF
     
     
   
'HPWM 1,127,1000 ' Send a 50% duty cycle PWM signal at 1kHz
 
    HPWM 1,3,R,2                    ' PWM BÖLÜMÜ
     
                 
GOTO AB

DELAY:
      FOR I=0 TO 255:NEXT
      FOR I=0 TO 255:NEXT
      FOR I=0 TO 255:NEXT
      FOR I=0 TO 255:NEXT
      FOR I=0 TO 255:NEXT
      RETURN



END